Chromium Code Reviews| 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..2002a19e2a5916c20911d1bbca28b0f6b0acc9ba 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, |
| @@ -26,13 +32,17 @@ const char* SensorProviderProxy::supplementName() { |
| SensorProviderProxy* SensorProviderProxy::from(LocalFrame* frame) { |
|
Reilly Grant (use Gerrit)
2016/11/28 19:40:33
nit: This function should have a "// static" marke
shalamov
2016/11/29 09:02:23
Done.
|
| 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() {} |