#include "third_party/blink/renderer/modules/webusb/usb.h"
#include <utility>
#include "base/notreached.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "services/device/public/mojom/usb_device.mojom-blink.h"
#include "services/device/public/mojom/usb_enumeration_options.mojom-blink.h"
#include "third_party/blink/public/mojom/permissions_policy/permissions_policy.mojom-blink.h"
#include "third_party/blink/public/mojom/service_worker/service_worker.mojom-blink.h"
#include "third_party/blink/public/platform/browser_interface_broker_proxy.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_usb_device_filter.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_usb_device_request_options.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/dom_exception.h"
#include "third_party/blink/renderer/core/execution_context/navigator_base.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
#include "third_party/blink/renderer/modules/event_target_modules.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h"
#include "third_party/blink/renderer/modules/webusb/usb_connection_event.h"
#include "third_party/blink/renderer/modules/webusb/usb_device.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/wtf/functional.h"
UsbDevice;
UsbDeviceFilterPtr;
UsbDeviceInfoPtr;
namespace blink {
namespace {
const char kFeaturePolicyBlocked[] = …;
const char kNoDeviceSelected[] = …;
void RejectWithTypeError(const String& error_details,
ScriptPromiseResolverBase* resolver) { … }
UsbDeviceFilterPtr ConvertDeviceFilter(const USBDeviceFilter* filter,
ScriptPromiseResolverBase* resolver) { … }
bool IsContextSupported(ExecutionContext* context) { … }
bool ShouldBlockUsbServiceCall(LocalDOMWindow* window,
ExecutionContext* context,
ExceptionState* exception_state) { … }
}
const char USB::kSupplementName[] = …;
USB* USB::usb(NavigatorBase& navigator) { … }
USB::USB(NavigatorBase& navigator)
: … { … }
USB::~USB() { … }
ScriptPromise<IDLSequence<USBDevice>> USB::getDevices(
ScriptState* script_state,
ExceptionState& exception_state) { … }
ScriptPromise<USBDevice> USB::requestDevice(
ScriptState* script_state,
const USBDeviceRequestOptions* options,
ExceptionState& exception_state) { … }
ExecutionContext* USB::GetExecutionContext() const { … }
const AtomicString& USB::InterfaceName() const { … }
void USB::ContextDestroyed() { … }
USBDevice* USB::GetOrCreateDevice(UsbDeviceInfoPtr device_info) { … }
void USB::ForgetDevice(
const String& device_guid,
mojom::blink::WebUsbService::ForgetDeviceCallback callback) { … }
void USB::OnGetDevices(ScriptPromiseResolver<IDLSequence<USBDevice>>* resolver,
Vector<UsbDeviceInfoPtr> device_infos) { … }
void USB::OnGetPermission(ScriptPromiseResolver<USBDevice>* resolver,
UsbDeviceInfoPtr device_info) { … }
void USB::OnDeviceAdded(UsbDeviceInfoPtr device_info) { … }
void USB::OnDeviceRemoved(UsbDeviceInfoPtr device_info) { … }
void USB::OnServiceConnectionError() { … }
void USB::AddedEventListener(const AtomicString& event_type,
RegisteredEventListener& listener) { … }
void USB::EnsureServiceConnection() { … }
bool USB::IsFeatureEnabled(ReportOptions report_options) const { … }
void USB::Trace(Visitor* visitor) const { … }
}