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 b4858eae51b1ce11ad612fb3a39c8fe3bcf6bdf3..3898dab8d7b72ddef0f6d7a458e00772071d48a4 100644 |
--- a/third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp |
+++ b/third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp |
@@ -24,6 +24,12 @@ void SensorProviderProxy::InitializeIfNeeded(LocalFrame* frame) { |
sensor_provider_.set_connection_error_handler(ConvertToBaseCallback( |
WTF::Bind(&SensorProviderProxy::OnSensorProviderConnectionError, |
WrapWeakPersistent(this)))); |
+ // Get permission service. |
+ frame->GetInterfaceProvider()->GetInterface( |
+ mojo::MakeRequest(&permission_service_)); |
+ permission_service_.set_connection_error_handler(ConvertToBaseCallback( |
+ WTF::Bind(&SensorProviderProxy::OnSensorProviderConnectionError, |
+ WrapWeakPersistent(this)))); |
} |
const char* SensorProviderProxy::SupplementName() { |
@@ -45,6 +51,10 @@ SensorProviderProxy* SensorProviderProxy::From(LocalFrame* frame) { |
SensorProviderProxy::~SensorProviderProxy() {} |
+void SensorProviderProxy::resetPermissionService() { |
+ permission_service_.reset(); |
+} |
+ |
DEFINE_TRACE(SensorProviderProxy) { |
visitor->Trace(sensor_proxies_); |
Supplement<LocalFrame>::Trace(visitor); |
@@ -52,10 +62,11 @@ DEFINE_TRACE(SensorProviderProxy) { |
SensorProxy* SensorProviderProxy::CreateSensorProxy( |
device::mojom::blink::SensorType type, |
- Page* page) { |
+ Page* page, |
+ RefPtr<SecurityOrigin> origin) { |
DCHECK(!GetSensorProxy(type)); |
- SensorProxy* sensor = new SensorProxy(type, this, page); |
+ SensorProxy* sensor = new SensorProxy(type, std::move(origin), this, page); |
sensor_proxies_.insert(sensor); |
return sensor; |
@@ -73,6 +84,7 @@ SensorProxy* SensorProviderProxy::GetSensorProxy( |
} |
void SensorProviderProxy::OnSensorProviderConnectionError() { |
+ permission_service_.reset(); |
sensor_provider_.reset(); |
for (SensorProxy* sensor : sensor_proxies_) |
sensor->HandleSensorError(); |