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

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

Issue 2472403002: [Sensors] Align sensor reading attribute implementation with the specification (Closed)
Patch Set: Comments from Tim 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/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() {
« no previous file with comments | « third_party/WebKit/Source/modules/sensor/Sensor.h ('k') | third_party/WebKit/Source/modules/sensor/SensorProviderProxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698