| 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 "core/dom/TaskRunnerHelper.h" | 9 #include "core/dom/TaskRunnerHelper.h" |
| 10 #include "core/inspector/ConsoleMessage.h" | 10 #include "core/inspector/ConsoleMessage.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 if (!toDocument(executionContext)->domWindow()->frame() || | 38 if (!toDocument(executionContext)->domWindow()->frame() || |
| 39 !toDocument(executionContext)->frame()->isMainFrame()) { | 39 !toDocument(executionContext)->frame()->isMainFrame()) { |
| 40 exceptionState.throwSecurityError( | 40 exceptionState.throwSecurityError( |
| 41 "Must be in a top-level browsing context"); | 41 "Must be in a top-level browsing context"); |
| 42 return; | 42 return; |
| 43 } | 43 } |
| 44 | 44 |
| 45 // Check the given frequency value. | 45 // Check the given frequency value. |
| 46 if (m_sensorOptions.hasFrequency()) { | 46 if (m_sensorOptions.hasFrequency()) { |
| 47 double frequency = m_sensorOptions.frequency(); | 47 double frequency = m_sensorOptions.frequency(); |
| 48 if (frequency <= 0.0) { | |
| 49 exceptionState.throwRangeError("Frequency must be positive."); | |
| 50 return; | |
| 51 } | |
| 52 | |
| 53 if (frequency > SensorConfiguration::kMaxAllowedFrequency) { | 48 if (frequency > SensorConfiguration::kMaxAllowedFrequency) { |
| 54 m_sensorOptions.setFrequency(SensorConfiguration::kMaxAllowedFrequency); | 49 m_sensorOptions.setFrequency(SensorConfiguration::kMaxAllowedFrequency); |
| 55 ConsoleMessage* consoleMessage = ConsoleMessage::create( | 50 ConsoleMessage* consoleMessage = ConsoleMessage::create( |
| 56 JSMessageSource, InfoMessageLevel, "Frequency is limited to 60 Hz."); | 51 JSMessageSource, InfoMessageLevel, "Frequency is limited to 60 Hz."); |
| 57 executionContext->addConsoleMessage(consoleMessage); | 52 executionContext->addConsoleMessage(consoleMessage); |
| 58 } | 53 } |
| 59 } | 54 } |
| 60 } | 55 } |
| 61 | 56 |
| 62 Sensor::~Sensor() = default; | 57 Sensor::~Sensor() = default; |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 m_state == Sensor::SensorState::Idle || | 139 m_state == Sensor::SensorState::Idle || |
| 145 m_state == Sensor::SensorState::Errored) | 140 m_state == Sensor::SensorState::Errored) |
| 146 return false; | 141 return false; |
| 147 return getExecutionContext() && hasEventListeners(); | 142 return getExecutionContext() && hasEventListeners(); |
| 148 } | 143 } |
| 149 | 144 |
| 150 auto Sensor::createSensorConfig() -> SensorConfigurationPtr { | 145 auto Sensor::createSensorConfig() -> SensorConfigurationPtr { |
| 151 auto result = SensorConfiguration::New(); | 146 auto result = SensorConfiguration::New(); |
| 152 | 147 |
| 153 double defaultFrequency = m_sensorProxy->defaultConfig()->frequency; | 148 double defaultFrequency = m_sensorProxy->defaultConfig()->frequency; |
| 154 double maximumFrequency = m_sensorProxy->maximumFrequency(); | 149 double minimumFrequency = m_sensorProxy->frequencyLimits().first; |
| 150 double maximumFrequency = m_sensorProxy->frequencyLimits().second; |
| 155 | 151 |
| 156 double frequency = m_sensorOptions.hasFrequency() | 152 double frequency = m_sensorOptions.hasFrequency() |
| 157 ? m_sensorOptions.frequency() | 153 ? m_sensorOptions.frequency() |
| 158 : defaultFrequency; | 154 : defaultFrequency; |
| 159 | 155 |
| 160 if (frequency > maximumFrequency) | 156 if (frequency > maximumFrequency) |
| 161 frequency = maximumFrequency; | 157 frequency = maximumFrequency; |
| 158 if (frequency < minimumFrequency) |
| 159 frequency = minimumFrequency; |
| 162 | 160 |
| 163 result->frequency = frequency; | 161 result->frequency = frequency; |
| 164 return result; | 162 return result; |
| 165 } | 163 } |
| 166 | 164 |
| 167 double Sensor::readingValue(int index, bool& isNull) const { | 165 double Sensor::readingValue(int index, bool& isNull) const { |
| 168 if (!canReturnReadings()) { | 166 if (!canReturnReadings()) { |
| 169 isNull = true; | 167 isNull = true; |
| 170 return 0.0; | 168 return 0.0; |
| 171 } | 169 } |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 m_sensorProxy->addObserver(this); | 239 m_sensorProxy->addObserver(this); |
| 242 if (!m_sensorProxy->isInitialized()) { | 240 if (!m_sensorProxy->isInitialized()) { |
| 243 m_sensorProxy->initialize(); | 241 m_sensorProxy->initialize(); |
| 244 return; | 242 return; |
| 245 } | 243 } |
| 246 | 244 |
| 247 if (!m_configuration) { | 245 if (!m_configuration) { |
| 248 m_configuration = createSensorConfig(); | 246 m_configuration = createSensorConfig(); |
| 249 DCHECK(m_configuration); | 247 DCHECK(m_configuration); |
| 250 DCHECK(m_configuration->frequency > 0 && | 248 DCHECK(m_configuration->frequency > 0 && |
| 251 m_configuration->frequency <= m_sensorProxy->maximumFrequency()); | 249 m_configuration->frequency <= |
| 250 SensorConfiguration::kMaxAllowedFrequency); |
| 252 } | 251 } |
| 253 | 252 |
| 254 auto startCallback = | 253 auto startCallback = |
| 255 WTF::bind(&Sensor::onStartRequestCompleted, wrapWeakPersistent(this)); | 254 WTF::bind(&Sensor::onStartRequestCompleted, wrapWeakPersistent(this)); |
| 256 m_sensorProxy->addConfiguration(m_configuration->Clone(), | 255 m_sensorProxy->addConfiguration(m_configuration->Clone(), |
| 257 std::move(startCallback)); | 256 std::move(startCallback)); |
| 258 } | 257 } |
| 259 | 258 |
| 260 void Sensor::stopListening() { | 259 void Sensor::stopListening() { |
| 261 DCHECK(m_sensorProxy); | 260 DCHECK(m_sensorProxy); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 } | 318 } |
| 320 | 319 |
| 321 bool Sensor::canReturnReadings() const { | 320 bool Sensor::canReturnReadings() const { |
| 322 if (m_state != Sensor::SensorState::Activated) | 321 if (m_state != Sensor::SensorState::Activated) |
| 323 return false; | 322 return false; |
| 324 DCHECK(m_sensorProxy); | 323 DCHECK(m_sensorProxy); |
| 325 return m_sensorProxy->reading().timestamp != 0.0; | 324 return m_sensorProxy->reading().timestamp != 0.0; |
| 326 } | 325 } |
| 327 | 326 |
| 328 } // namespace blink | 327 } // namespace blink |
| OLD | NEW |