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 b2309114253196c350bd7826deba6e89434ab4e1..be951e0af2bab2aa63f5226ac4304dd8ceb13c58 100644 |
--- a/third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp |
+++ b/third_party/WebKit/Source/modules/sensor/SensorProviderProxy.cpp |
@@ -14,6 +14,12 @@ namespace blink { |
// SensorProviderProxy |
SensorProviderProxy::SensorProviderProxy(LocalFrame* frame) { |
+ initialize(frame); |
+} |
+ |
+void SensorProviderProxy::initialize(LocalFrame* frame) { |
+ DCHECK(!isInitialized()); |
+ |
frame->interfaceProvider()->getInterface(mojo::GetProxy(&m_sensorProvider)); |
m_sensorProvider.set_connection_error_handler(convertToBaseCallback( |
WTF::bind(&SensorProviderProxy::onSensorProviderConnectionError, |
@@ -24,15 +30,20 @@ const char* SensorProviderProxy::supplementName() { |
return "SensorProvider"; |
} |
+// static |
SensorProviderProxy* SensorProviderProxy::from(LocalFrame* frame) { |
DCHECK(frame); |
- SensorProviderProxy* result = static_cast<SensorProviderProxy*>( |
+ SensorProviderProxy* providerProxy = static_cast<SensorProviderProxy*>( |
Supplement<LocalFrame>::from(*frame, supplementName())); |
- if (!result) { |
- result = new SensorProviderProxy(frame); |
- Supplement<LocalFrame>::provideTo(*frame, supplementName(), result); |
+ if (!providerProxy) { |
+ providerProxy = new SensorProviderProxy(frame); |
+ Supplement<LocalFrame>::provideTo(*frame, supplementName(), providerProxy); |
} |
- return result; |
+ |
+ if (!providerProxy->isInitialized()) |
+ providerProxy->initialize(frame); |
+ |
+ return providerProxy; |
} |
SensorProviderProxy::~SensorProviderProxy() {} |