| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | // Copyright 2015 The Chromium Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBUSB_USB_H_#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBUSB_USB_H_#include "services/device/public/mojom/usb_manager.mojom-blink-forward.h"#include "services/device/public/mojom/usb_manager_client.mojom-blink.h"#include "third_party/blink/public/mojom/usb/web_usb_service.mojom-blink.h"#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"#include "third_party/blink/renderer/core/dom/events/event_target.h"#include "third_party/blink/renderer/core/execution_context/execution_context.h"#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.h"#include "third_party/blink/renderer/core/execution_context/security_context.h"#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"#include "third_party/blink/renderer/platform/heap/handle.h"#include "third_party/blink/renderer/platform/mojo/heap_mojo_associated_receiver.h"#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h"#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h"namespace blink {class ExceptionState;class ScriptPromiseResolver;class ScriptState;class USBDevice;class USBDeviceRequestOptions;class USB final : public EventTargetWithInlineData,                  public ExecutionContextLifecycleObserver,                  public device::mojom::blink::UsbDeviceManagerClient {  DEFINE_WRAPPERTYPEINFO(); public:  explicit USB(ExecutionContext&);  ~USB() override;  // USB.idl  ScriptPromise getDevices(ScriptState*, ExceptionState&);  ScriptPromise requestDevice(ScriptState*,                              const USBDeviceRequestOptions*,                              ExceptionState&);  DEFINE_ATTRIBUTE_EVENT_LISTENER(connect, kConnect)  DEFINE_ATTRIBUTE_EVENT_LISTENER(disconnect, kDisconnect)  // EventTarget overrides.  ExecutionContext* GetExecutionContext() const override;  const AtomicString& InterfaceName() const override;  // ExecutionContextLifecycleObserver overrides.  void ContextDestroyed() override;  USBDevice* GetOrCreateDevice(device::mojom::blink::UsbDeviceInfoPtr);  mojom::blink::WebUsbService* GetWebUsbService() const {    return service_.get();  }  void OnGetDevices(ScriptPromiseResolver*,                    Vector<device::mojom::blink::UsbDeviceInfoPtr>);  void OnGetPermission(ScriptPromiseResolver*,                       device::mojom::blink::UsbDeviceInfoPtr);  // DeviceManagerClient implementation.  void OnDeviceAdded(device::mojom::blink::UsbDeviceInfoPtr) override;  void OnDeviceRemoved(device::mojom::blink::UsbDeviceInfoPtr) override;  void OnServiceConnectionError();  void Trace(Visitor*) const override; protected:  // EventTarget protected overrides.  void AddedEventListener(const AtomicString& event_type,                          RegisteredEventListener&) override; private:  void EnsureServiceConnection();  bool IsContextSupported() const;  bool IsFeatureEnabled(ReportOptions) const;  HeapMojoRemote<mojom::blink::WebUsbService> service_;  HeapHashSet<Member<ScriptPromiseResolver>> get_devices_requests_;  HeapHashSet<Member<ScriptPromiseResolver>> get_permission_requests_;  HeapMojoAssociatedReceiver<device::mojom::blink::UsbDeviceManagerClient,                             USB,                             HeapMojoWrapperMode::kWithoutContextObserver>      client_receiver_;  HeapHashMap<String, WeakMember<USBDevice>> device_cache_;};}  // namespace blink#endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_WEBUSB_USB_H_
 |