| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "modules/sensor/Sensor.h" | 5 #include "modules/sensor/Sensor.h" |
| 6 | 6 |
| 7 #include "core/dom/Document.h" | 7 #include "core/dom/Document.h" |
| 8 #include "core/dom/ExceptionCode.h" | 8 #include "core/dom/ExceptionCode.h" |
| 9 #include "device/generic_sensor/public/interfaces/sensor.mojom-blink.h" | 9 #include "device/generic_sensor/public/interfaces/sensor.mojom-blink.h" |
| 10 #include "modules/sensor/SensorErrorEvent.h" | 10 #include "modules/sensor/SensorErrorEvent.h" |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 return; | 153 return; |
| 154 | 154 |
| 155 if (!result) { | 155 if (!result) { |
| 156 reportError(); | 156 reportError(); |
| 157 return; | 157 return; |
| 158 } | 158 } |
| 159 | 159 |
| 160 DCHECK(m_configuration); | 160 DCHECK(m_configuration); |
| 161 DCHECK(m_sensorProxy); | 161 DCHECK(m_sensorProxy); |
| 162 auto pollCallback = WTF::bind(&Sensor::pollForData, wrapWeakPersistent(this)
); | 162 auto pollCallback = WTF::bind(&Sensor::pollForData, wrapWeakPersistent(this)
); |
| 163 m_polling = SensorPollingStrategy::create(m_configuration->frequency, std::m
ove(pollCallback), m_sensorProxy->reportingMode()); | 163 DCHECK_GT(m_configuration->frequency, 0); |
| 164 m_polling = SensorPollingStrategy::create(1 / m_configuration->frequency, st
d::move(pollCallback), m_sensorProxy->reportingMode()); |
| 164 updateState(Sensor::SensorState::ACTIVE); | 165 updateState(Sensor::SensorState::ACTIVE); |
| 165 } | 166 } |
| 166 | 167 |
| 167 void Sensor::onStopRequestCompleted(bool result) | 168 void Sensor::onStopRequestCompleted(bool result) |
| 168 { | 169 { |
| 169 if (m_state == Sensor::SensorState::IDLE) | 170 if (m_state == Sensor::SensorState::IDLE) |
| 170 return; | 171 return; |
| 171 | 172 |
| 172 if (!result) | 173 if (!result) |
| 173 reportError(); | 174 reportError(); |
| 174 | 175 |
| 175 DCHECK(m_sensorProxy); | 176 DCHECK(m_sensorProxy); |
| 176 m_sensorProxy->removeObserver(this); | 177 m_sensorProxy->removeObserver(this); |
| 177 } | 178 } |
| 178 | 179 |
| 179 void Sensor::pageVisibilityChanged() | 180 void Sensor::pageVisibilityChanged() |
| 180 { | 181 { |
| 181 updatePollingStatus(); | 182 updatePollingStatus(); |
| 183 |
| 184 if (!m_sensorProxy || !m_sensorProxy->isInitialized()) |
| 185 return; |
| 186 |
| 187 if (page()->visibilityState() != PageVisibilityStateVisible) { |
| 188 m_sensorProxy->suspend(); |
| 189 } else { |
| 190 m_sensorProxy->resume(); |
| 191 } |
| 182 } | 192 } |
| 183 | 193 |
| 184 void Sensor::startListening() | 194 void Sensor::startListening() |
| 185 { | 195 { |
| 186 DCHECK(m_sensorProxy); | 196 DCHECK(m_sensorProxy); |
| 187 updateState(Sensor::SensorState::ACTIVATING); | 197 updateState(Sensor::SensorState::ACTIVATING); |
| 188 if (!m_sensorReading) | 198 if (!m_sensorReading) |
| 189 m_sensorReading = createSensorReading(m_sensorProxy); | 199 m_sensorReading = createSensorReading(m_sensorProxy); |
| 190 | 200 |
| 191 m_sensorProxy->addObserver(this); | 201 m_sensorProxy->addObserver(this); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 | 264 |
| 255 if (m_state != Sensor::SensorState::ACTIVE | 265 if (m_state != Sensor::SensorState::ACTIVE |
| 256 || page()->visibilityState() != PageVisibilityStateVisible) { | 266 || page()->visibilityState() != PageVisibilityStateVisible) { |
| 257 m_polling->stopPolling(); | 267 m_polling->stopPolling(); |
| 258 } else { | 268 } else { |
| 259 m_polling->startPolling(); | 269 m_polling->startPolling(); |
| 260 } | 270 } |
| 261 } | 271 } |
| 262 | 272 |
| 263 } // namespace blink | 273 } // namespace blink |
| OLD | NEW |