Index: third_party/WebKit/Source/modules/sensor/Sensor.cpp |
diff --git a/third_party/WebKit/Source/modules/sensor/Sensor.cpp b/third_party/WebKit/Source/modules/sensor/Sensor.cpp |
index ca613f9e1e8670fb65e75c1ba499ec3b0a9a2004..c9f902d42ad470d7f9d58be39494524c9fa69d63 100644 |
--- a/third_party/WebKit/Source/modules/sensor/Sensor.cpp |
+++ b/third_party/WebKit/Source/modules/sensor/Sensor.cpp |
@@ -13,7 +13,6 @@ |
#include "modules/sensor/SensorPollingStrategy.h" |
#include "modules/sensor/SensorProviderProxy.h" |
#include "modules/sensor/SensorReading.h" |
-#include "modules/sensor/SensorReadingEvent.h" |
using namespace device::mojom::blink; |
@@ -29,8 +28,7 @@ Sensor::Sensor(ScriptState* scriptState, |
toDocument(scriptState->getExecutionContext())->page()), |
m_sensorOptions(sensorOptions), |
m_type(type), |
- m_state(Sensor::SensorState::IDLE), |
- m_storedData() { |
+ m_state(Sensor::SensorState::IDLE) { |
// Check secure context. |
String errorMessage; |
if (!scriptState->getExecutionContext()->isSecureContext(errorMessage)) { |
@@ -119,12 +117,14 @@ String Sensor::state() const { |
} |
SensorReading* Sensor::reading() const { |
- return m_sensorReading.get(); |
+ if (m_state != Sensor::SensorState::ACTIVE) |
+ return nullptr; |
+ DCHECK(m_sensorProxy); |
+ return m_sensorProxy->sensorReading(); |
} |
DEFINE_TRACE(Sensor) { |
visitor->trace(m_sensorProxy); |
- visitor->trace(m_sensorReading); |
ActiveScriptWrappable::trace(visitor); |
ContextLifecycleObserver::trace(visitor); |
PageVisibilityObserver::trace(visitor); |
@@ -146,8 +146,13 @@ void Sensor::initSensorProxyIfNeeded() { |
if (!document || !document->frame()) |
return; |
- m_sensorProxy = |
- SensorProviderProxy::from(document->frame())->getOrCreateSensor(m_type); |
+ auto provider = SensorProviderProxy::from(document->frame()); |
+ m_sensorProxy = provider->getSensor(m_type); |
+ |
+ if (!m_sensorProxy) { |
+ m_sensorProxy = |
+ provider->createSensor(m_type, createSensorReadingFactory()); |
+ } |
} |
void Sensor::contextDestroyed() { |
@@ -222,10 +227,6 @@ void Sensor::pageVisibilityChanged() { |
void Sensor::startListening() { |
DCHECK(m_sensorProxy); |
updateState(Sensor::SensorState::ACTIVATING); |
- if (!m_sensorReading) { |
- m_sensorReading = createSensorReading(m_sensorProxy); |
- DCHECK(m_sensorReading); |
- } |
m_sensorProxy->addObserver(this); |
if (!m_sensorProxy->isInitialized()) { |
@@ -247,7 +248,6 @@ void Sensor::startListening() { |
void Sensor::stopListening() { |
DCHECK(m_sensorProxy); |
- m_sensorReading = nullptr; |
updateState(Sensor::SensorState::IDLE); |
if (m_sensorProxy->isInitialized()) { |
@@ -270,18 +270,18 @@ void Sensor::pollForData() { |
DCHECK(m_sensorProxy); |
DCHECK(m_sensorProxy->isInitialized()); |
- m_sensorProxy->updateInternalReading(); |
+ m_sensorProxy->updateSensorReading(); |
- DCHECK(m_sensorReading); |
+ DCHECK(m_sensorProxy->sensorReading()); |
if (getExecutionContext() && |
- m_sensorReading->isReadingUpdated(m_storedData)) { |
+ m_sensorProxy->sensorReading()->isReadingUpdated(m_storedData)) { |
getExecutionContext()->postTask( |
BLINK_FROM_HERE, |
createSameThreadTask(&Sensor::notifySensorReadingChanged, |
wrapWeakPersistent(this))); |
} |
- m_storedData = m_sensorProxy->reading(); |
+ m_storedData = m_sensorProxy->sensorReading()->data(); |
} |
void Sensor::updateState(Sensor::SensorState newState) { |
@@ -324,8 +324,7 @@ void Sensor::updatePollingStatus() { |
} |
void Sensor::notifySensorReadingChanged() { |
- dispatchEvent( |
- SensorReadingEvent::create(EventTypeNames::change, m_sensorReading)); |
+ dispatchEvent(Event::create(EventTypeNames::change)); |
} |
void Sensor::notifyStateChanged() { |