Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Unified Diff: third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp

Issue 2458453002: [sensors] Add Permission guard to the generic sensor apis.
Patch Set: Handle Denied and Ask differently, add permissionService.reset() Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();

Powered by Google App Engine
This is Rietveld 408576698