diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/hid/hid.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/modules/hid/hid.cc | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/chromium/third_party/blink/renderer/modules/hid/hid.cc b/chromium/third_party/blink/renderer/modules/hid/hid.cc index 425461ffe13..85f0683fede 100644 --- a/chromium/third_party/blink/renderer/modules/hid/hid.cc +++ b/chromium/third_party/blink/renderer/modules/hid/hid.cc @@ -8,6 +8,8 @@ #include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-blink.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_hid_device_filter.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_hid_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/execution_context.h" @@ -15,8 +17,6 @@ #include "third_party/blink/renderer/modules/event_target_modules.h" #include "third_party/blink/renderer/modules/hid/hid_connection_event.h" #include "third_party/blink/renderer/modules/hid/hid_device.h" -#include "third_party/blink/renderer/modules/hid/hid_device_filter.h" -#include "third_party/blink/renderer/modules/hid/hid_device_request_options.h" #include "third_party/blink/renderer/platform/heap/heap.h" namespace blink { @@ -26,7 +26,6 @@ namespace { const char kContextGone[] = "Script context has shut down."; const char kFeaturePolicyBlocked[] = "Access to the feature \"hid\" is disallowed by feature policy."; -const char kNoDeviceSelected[] = "No device selected."; void RejectWithTypeError(const String& message, ScriptPromiseResolver* resolver) { @@ -81,7 +80,11 @@ mojom::blink::HidDeviceFilterPtr ConvertDeviceFilter( } // namespace -HID::HID(ExecutionContext& context) : ContextLifecycleObserver(&context) {} +HID::HID(ExecutionContext& context) + : ExecutionContextClient(&context), + feature_handle_for_scheduler_(context.GetScheduler()->RegisterFeature( + SchedulingPolicy::Feature::kWebHID, + {SchedulingPolicy::RecordMetricsForBackForwardCache()})) {} HID::~HID() { DCHECK(get_devices_promises_.IsEmpty()); @@ -89,7 +92,7 @@ HID::~HID() { } ExecutionContext* HID::GetExecutionContext() const { - return ContextLifecycleObserver::GetExecutionContext(); + return ExecutionContextClient::GetExecutionContext(); } const AtomicString& HID::InterfaceName() const { @@ -112,8 +115,8 @@ ScriptPromise HID::getDevices(ScriptState* script_state, return ScriptPromise(); } - if (!context->GetSecurityContext().IsFeatureEnabled( - mojom::FeaturePolicyFeature::kHid, ReportOptions::kReportOnFailure)) { + if (!context->IsFeatureEnabled(mojom::blink::FeaturePolicyFeature::kHid, + ReportOptions::kReportOnFailure)) { exception_state.ThrowSecurityError(kFeaturePolicyBlocked); return ScriptPromise(); } @@ -138,7 +141,8 @@ ScriptPromise HID::requestDevice(ScriptState* script_state, } if (!frame->GetDocument()->IsFeatureEnabled( - mojom::FeaturePolicyFeature::kHid, ReportOptions::kReportOnFailure)) { + mojom::blink::FeaturePolicyFeature::kHid, + ReportOptions::kReportOnFailure)) { exception_state.ThrowSecurityError(kFeaturePolicyBlocked); return ScriptPromise(); } @@ -207,17 +211,15 @@ void HID::FinishGetDevices( void HID::FinishRequestDevice( ScriptPromiseResolver* resolver, - device::mojom::blink::HidDeviceInfoPtr device_info) { + Vector<device::mojom::blink::HidDeviceInfoPtr> device_infos) { DCHECK(request_device_promises_.Contains(resolver)); request_device_promises_.erase(resolver); - if (device_info) { - resolver->Resolve(GetOrCreateDevice(std::move(device_info))); - } else { - resolver->Reject(MakeGarbageCollected<DOMException>( - DOMExceptionCode::kNotFoundError, kNoDeviceSelected)); - } - request_device_promises_.erase(resolver); + HeapVector<Member<HIDDevice>> devices; + for (auto& device_info : device_infos) + devices.push_back(GetOrCreateDevice(std::move(device_info))); + + resolver->Resolve(devices); } void HID::EnsureServiceConnection() { @@ -246,18 +248,16 @@ void HID::OnServiceConnectionError() { HeapHashSet<Member<ScriptPromiseResolver>> request_device_promises; request_device_promises_.swap(request_device_promises); - for (ScriptPromiseResolver* resolver : request_device_promises) { - resolver->Reject(MakeGarbageCollected<DOMException>( - DOMExceptionCode::kNotFoundError, kNoDeviceSelected)); - } + for (ScriptPromiseResolver* resolver : request_device_promises) + resolver->Resolve(HeapVector<Member<HIDDevice>>()); } -void HID::Trace(blink::Visitor* visitor) { +void HID::Trace(Visitor* visitor) { visitor->Trace(get_devices_promises_); visitor->Trace(request_device_promises_); visitor->Trace(device_cache_); EventTargetWithInlineData::Trace(visitor); - ContextLifecycleObserver::Trace(visitor); + ExecutionContextClient::Trace(visitor); } } // namespace blink |