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

Migrate SensorProviderProxy to use GC mojo wrappers.

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

Bug: 1049056
Change-Id: Ie9d5865ff5be6203eadb71687a37b501cea51540
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2109576Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Cr-Commit-Position: refs/heads/master@{#755272}
parent f00e0da1
...@@ -13,14 +13,17 @@ namespace blink { ...@@ -13,14 +13,17 @@ namespace blink {
// SensorProviderProxy // SensorProviderProxy
SensorProviderProxy::SensorProviderProxy(Document& document) SensorProviderProxy::SensorProviderProxy(Document& document)
: Supplement<Document>(document), inspector_mode_(false) {} : Supplement<Document>(document),
sensor_provider_(document.ToExecutionContext()),
inspector_mode_(false) {}
void SensorProviderProxy::InitializeIfNeeded() { void SensorProviderProxy::InitializeIfNeeded() {
if (IsInitialized()) if (IsInitialized())
return; return;
GetSupplementable()->GetBrowserInterfaceBroker().GetInterface( GetSupplementable()->GetBrowserInterfaceBroker().GetInterface(
sensor_provider_.BindNewPipeAndPassReceiver()); sensor_provider_.BindNewPipeAndPassReceiver(
GetSupplementable()->GetTaskRunner(TaskType::kSensor)));
sensor_provider_.set_disconnect_handler( sensor_provider_.set_disconnect_handler(
WTF::Bind(&SensorProviderProxy::OnSensorProviderConnectionError, WTF::Bind(&SensorProviderProxy::OnSensorProviderConnectionError,
WrapWeakPersistent(this))); WrapWeakPersistent(this)));
...@@ -46,6 +49,7 @@ SensorProviderProxy::~SensorProviderProxy() = default; ...@@ -46,6 +49,7 @@ SensorProviderProxy::~SensorProviderProxy() = default;
void SensorProviderProxy::Trace(Visitor* visitor) { void SensorProviderProxy::Trace(Visitor* visitor) {
visitor->Trace(sensor_proxies_); visitor->Trace(sensor_proxies_);
visitor->Trace(sensor_provider_);
Supplement<Document>::Trace(visitor); Supplement<Document>::Trace(visitor);
} }
......
...@@ -6,12 +6,13 @@ ...@@ -6,12 +6,13 @@
#define THIRD_PARTY_BLINK_RENDERER_MODULES_SENSOR_SENSOR_PROVIDER_PROXY_H_ #define THIRD_PARTY_BLINK_RENDERER_MODULES_SENSOR_SENSOR_PROVIDER_PROXY_H_
#include "base/macros.h" #include "base/macros.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/device/public/mojom/sensor.mojom-blink-forward.h" #include "services/device/public/mojom/sensor.mojom-blink-forward.h"
#include "services/device/public/mojom/sensor_provider.mojom-blink.h" #include "services/device/public/mojom/sensor_provider.mojom-blink.h"
#include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/platform/heap/handle.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/supplementable.h" #include "third_party/blink/renderer/platform/supplementable.h"
namespace blink { namespace blink {
...@@ -58,7 +59,9 @@ class MODULES_EXPORT SensorProviderProxy final ...@@ -58,7 +59,9 @@ class MODULES_EXPORT SensorProviderProxy final
void OnSensorProviderConnectionError(); void OnSensorProviderConnectionError();
SensorsSet sensor_proxies_; SensorsSet sensor_proxies_;
mojo::Remote<device::mojom::blink::SensorProvider> sensor_provider_; HeapMojoRemote<device::mojom::blink::SensorProvider,
HeapMojoWrapperMode::kWithoutContextObserver>
sensor_provider_;
bool inspector_mode_; bool inspector_mode_;
DISALLOW_COPY_AND_ASSIGN(SensorProviderProxy); DISALLOW_COPY_AND_ASSIGN(SensorProviderProxy);
......
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