summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/hid/hid.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/hid/hid.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/hid/hid.cc44
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