diff options
Diffstat (limited to 'chromium/content/browser/hid/hid_service.h')
-rw-r--r-- | chromium/content/browser/hid/hid_service.h | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/chromium/content/browser/hid/hid_service.h b/chromium/content/browser/hid/hid_service.h index ed75856108e..07abd4993ab 100644 --- a/chromium/content/browser/hid/hid_service.h +++ b/chromium/content/browser/hid/hid_service.h @@ -9,12 +9,14 @@ #include <string> #include <vector> -#include "base/macros.h" #include "base/memory/weak_ptr.h" +#include "base/scoped_observer.h" #include "content/public/browser/frame_service_base.h" +#include "content/public/browser/hid_delegate.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver_set.h" +#include "mojo/public/cpp/bindings/remote_set.h" #include "services/device/public/mojom/hid.mojom.h" #include "third_party/blink/public/mojom/hid/hid.mojom.h" @@ -26,12 +28,18 @@ class RenderFrameHost; // HidService provides an implementation of the HidService mojom interface. This // interface is used by Blink to implement the WebHID API. class HidService : public content::FrameServiceBase<blink::mojom::HidService>, - public device::mojom::HidConnectionWatcher { + public device::mojom::HidConnectionWatcher, + public HidDelegate::Observer { public: + HidService(HidService&) = delete; + HidService& operator=(HidService&) = delete; + static void Create(RenderFrameHost*, mojo::PendingReceiver<blink::mojom::HidService>); // blink::mojom::HidService: + void RegisterClient( + device::mojom::HidManagerClientAssociatedPtrInfo client) override; void GetDevices(GetDevicesCallback callback) override; void RequestDevice(std::vector<blink::mojom::HidDeviceFilterPtr> filters, RequestDeviceCallback callback) override; @@ -39,6 +47,14 @@ class HidService : public content::FrameServiceBase<blink::mojom::HidService>, mojo::PendingRemote<device::mojom::HidConnectionClient> client, ConnectCallback callback) override; + // HidDelegate::Observer: + void OnDeviceAdded(const device::mojom::HidDeviceInfo& device_info) override; + void OnDeviceRemoved( + const device::mojom::HidDeviceInfo& device_info) override; + void OnHidManagerConnectionError() override; + void OnPermissionRevoked(const url::Origin& requesting_origin, + const url::Origin& embedding_origin) override; + private: HidService(RenderFrameHost*, mojo::PendingReceiver<blink::mojom::HidService>); ~HidService() override; @@ -57,14 +73,17 @@ class HidService : public content::FrameServiceBase<blink::mojom::HidService>, // The last shown HID chooser UI. std::unique_ptr<HidChooser> chooser_; + url::Origin requesting_origin_; + url::Origin embedding_origin_; + + // Used to bind with Blink. + mojo::AssociatedRemoteSet<device::mojom::HidManagerClient> clients_; // Each pipe here watches a connection created by Connect() in order to notify // the WebContentsImpl when an active connection indicator should be shown. mojo::ReceiverSet<device::mojom::HidConnectionWatcher> watchers_; base::WeakPtrFactory<HidService> weak_factory_{this}; - - DISALLOW_COPY_AND_ASSIGN(HidService); }; } // namespace content |