Index: third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp |
diff --git a/third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp b/third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp |
index 243c8f567abd3b83ac192d914e82462333631f7b..18571ba2a5b6bca2e784e21c631b88a452942d02 100644 |
--- a/third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp |
+++ b/third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp |
@@ -18,6 +18,13 @@ SensorProviderProxy::SensorProviderProxy(LocalFrame* frame) { |
m_sensorProvider.set_connection_error_handler(convertToBaseCallback( |
WTF::bind(&SensorProviderProxy::onSensorProviderConnectionError, |
wrapWeakPersistent(this)))); |
+ |
+ // Get permission service. |
+ frame->interfaceProvider()->getInterface( |
+ mojo::GetProxy(&m_permissionService)); |
+ m_permissionService.set_connection_error_handler(convertToBaseCallback( |
+ WTF::bind(&SensorProviderProxy::onSensorProviderConnectionError, |
+ wrapWeakPersistent(this)))); |
} |
const char* SensorProviderProxy::supplementName() { |
@@ -37,6 +44,10 @@ SensorProviderProxy* SensorProviderProxy::from(LocalFrame* frame) { |
SensorProviderProxy::~SensorProviderProxy() {} |
+void SensorProviderProxy::resetPermissionService() { |
+ m_permissionService.reset(); |
+} |
+ |
DEFINE_TRACE(SensorProviderProxy) { |
visitor->trace(m_sensors); |
Supplement<LocalFrame>::trace(visitor); |
@@ -44,12 +55,14 @@ DEFINE_TRACE(SensorProviderProxy) { |
SensorProxy* SensorProviderProxy::createSensor( |
device::mojom::blink::SensorType type, |
+ RefPtr<SecurityOrigin> origin, |
std::unique_ptr<SensorReadingFactory> readingFactory) { |
DCHECK(!getSensor(type)); |
- SensorProxy* sensor = new SensorProxy(type, this, std::move(readingFactory)); |
+ SensorProxy* sensor = |
+ new SensorProxy(type, m_permissionService.get(), std::move(origin), this, |
+ std::move(readingFactory)); |
m_sensors.add(sensor); |
- |
return sensor; |
} |
@@ -70,6 +83,7 @@ void SensorProviderProxy::onSensorProviderConnectionError() { |
return; |
} |
+ m_permissionService.reset(); |
m_sensorProvider.reset(); |
for (SensorProxy* sensor : m_sensors) |
sensor->handleSensorError(); |