Commit d35b2fad authored by Minoru Chikamune's avatar Minoru Chikamune Committed by Commit Bot

Migrate HID to use GC mojo wrappers.

No behavior change. This CL reduces potential risks of use-after-free bugs.

Bug: 1049056
Change-Id: Id7281021934fb65c18236ab7d2c28ccefe7342d5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2132350Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Cr-Commit-Position: refs/heads/master@{#756085}
parent e68926d9
......@@ -82,6 +82,7 @@ mojom::blink::HidDeviceFilterPtr ConvertDeviceFilter(
HID::HID(ExecutionContext& context)
: ExecutionContextClient(&context),
service_(&context),
feature_handle_for_scheduler_(context.GetScheduler()->RegisterFeature(
SchedulingPolicy::Feature::kWebHID,
{SchedulingPolicy::RecordMetricsForBackForwardCache()})) {}
......@@ -225,7 +226,7 @@ void HID::FinishRequestDevice(
void HID::EnsureServiceConnection() {
DCHECK(GetExecutionContext());
if (service_)
if (service_.is_bound())
return;
auto task_runner =
......@@ -253,6 +254,7 @@ void HID::OnServiceConnectionError() {
}
void HID::Trace(Visitor* visitor) {
visitor->Trace(service_);
visitor->Trace(get_devices_promises_);
visitor->Trace(request_device_promises_);
visitor->Trace(device_cache_);
......
......@@ -5,7 +5,6 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_HID_HID_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_HID_HID_H_
#include "mojo/public/cpp/bindings/remote.h"
#include "services/device/public/mojom/hid.mojom-blink-forward.h"
#include "third_party/blink/public/mojom/hid/hid.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
......@@ -13,6 +12,8 @@
#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_observer.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_remote.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h"
#include "third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h"
namespace blink {
......@@ -69,7 +70,9 @@ class HID : public EventTargetWithInlineData, public ExecutionContextClient {
void FinishRequestDevice(ScriptPromiseResolver*,
Vector<device::mojom::blink::HidDeviceInfoPtr>);
mojo::Remote<mojom::blink::HidService> service_;
HeapMojoRemote<mojom::blink::HidService,
HeapMojoWrapperMode::kWithoutContextObserver>
service_;
HeapHashSet<Member<ScriptPromiseResolver>> get_devices_promises_;
HeapHashSet<Member<ScriptPromiseResolver>> request_device_promises_;
HeapHashMap<String, WeakMember<HIDDevice>> device_cache_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment