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

Unified Diff: third_party/WebKit/LayoutTests/sensor/ambient-light-sensor.html

Issue 2332323002: [sensors] Ambient light sensor bindings implementation (Closed)
Patch Set: Add AmbientLightSensor to the list of expected global interfaces Created 4 years, 3 months 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/LayoutTests/sensor/ambient-light-sensor.html
diff --git a/third_party/WebKit/LayoutTests/sensor/ambient-light-sensor.html b/third_party/WebKit/LayoutTests/sensor/ambient-light-sensor.html
new file mode 100644
index 0000000000000000000000000000000000000000..340cd572d7dd92bbefffaa5ebe5205e6dec141bf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/sensor/ambient-light-sensor.html
@@ -0,0 +1,189 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script src="../resources/mojo-helpers.js"></script>
+<script src="resources/sensor-helpers.js"></script>
+<script>
+
+'use strict';
+
+if (!window.testRunner)
+ debug('This test cannot be run without the TestRunner');
+
+const kDefaultReadingValue = 3.1415;
+
+function update_sensor_reading(buffer) {
+ buffer[0] = window.performance.now();
+ buffer[1] = kDefaultReadingValue;
+}
+
+sensor_test(sensor => {
+ let ambientLightSensor = new AmbientLightSensor({frequency: 60});
+ ambientLightSensor.start();
+ let testPromise = sensor.mockSensorProvider.getCreatedSensor()
+ .then((mockSensor) => {
+ return new Promise((resolve, reject) => {
+ ambientLightSensor.onstatechange = event => {
+ if (ambientLightSensor.state === 'idle') {
+ resolve(mockSensor);
+ }
+
+ if (ambientLightSensor.state === 'active') {
+ ambientLightSensor.stop();
+ }
+ };
+ ambientLightSensor.onerror = reject;
+ });
+ })
+ .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
+
+ return testPromise;
+}, 'Test that sensor can be successfully created if sensor is supported.');
+
+sensor_test(sensor => {
+ let ambientLightSensor = new AmbientLightSensor();
+ ambientLightSensor.start();
+ let testPromise = sensor.mockSensorProvider.getCreatedSensor()
+ .then((mockSensor) => {
+ return new Promise((resolve, reject) => {
+ ambientLightSensor.onstatechange = event => {
+ if (ambientLightSensor.state === 'idle') {
+ resolve(mockSensor);
+ }
+
+ if (ambientLightSensor.state === 'active') {
+ ambientLightSensor.stop();
+ }
+ };
+
+ ambientLightSensor.onerror = reject;
+ });
+ })
+ .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
+
+ return testPromise;
+}, 'Test that sensor can be constructed with default configuration.');
+
+sensor_test(sensor => {
+ let ambientLightSensor = new AmbientLightSensor({frequency: 60});
+ ambientLightSensor.start();
+
+ let testPromise = sensor.mockSensorProvider.getCreatedSensor()
+ .then(mockSensor => { return mockSensor.addConfigurationCalled(); })
+ .then(mockSensor => {
+ return new Promise((resolve, reject) => {
+ ambientLightSensor.onstatechange = event => {
+ if (ambientLightSensor.state === 'idle') {
+ resolve(mockSensor);
+ }
+
+ if (ambientLightSensor.state === 'active') {
+ ambientLightSensor.stop();
+ }
+ };
+ });
+ })
+ .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
+
+ return testPromise;
+}, 'Test that addConfiguration and removeConfiguration is called.');
+
+sensor_test(sensor => {
+ let ambientLightSensor = new AmbientLightSensor({frequency: 60});
+ ambientLightSensor.start();
+ let testPromise = sensor.mockSensorProvider.getCreatedSensor()
+ .then(mockSensor => {
+ return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading);
+ })
+ .then((mockSensor) => {
+ return new Promise((resolve, reject) => {
+ ambientLightSensor.onstatechange = event => {
+ if (ambientLightSensor.state === 'idle') {
+ resolve(mockSensor);
+ }
+ };
+
+ ambientLightSensor.onchange = e => {
+ assert_equals(e.reading.illuminance, kDefaultReadingValue);
+ ambientLightSensor.stop();
+ };
+
+ ambientLightSensor.onerror = reject;
+ });
+ })
+ .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
+
+ return testPromise;
+}, 'Test that onChange is called and sensor reading is valid.');
+
+sensor_test(sensor => {
+ let ambientLightSensor = new AmbientLightSensor({frequency: 60});
+ ambientLightSensor.start();
+ let testPromise = sensor.mockSensorProvider.getCreatedSensor()
+ .then(mockSensor => {
+ return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading);
+ })
+ .then((mockSensor) => {
+ return new Promise((resolve, reject) => {
+ ambientLightSensor.onstatechange = () => {
+ if (ambientLightSensor.state === 'idle') {
+ assert_equals(ambientLightSensor.reading, null);
+ resolve(mockSensor);
+ }
+ }
+
+ ambientLightSensor.onchange = e => {
+ assert_equals(e.reading.illuminance, kDefaultReadingValue);
+ ambientLightSensor.stop();
+ }
+ ambientLightSensor.onerror = reject;
+ });
+ })
+ .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
+
+ return testPromise;
+}, 'Test that sensor reading is not updated when sensor is stopped.');
+
+sensor_test(sensor => {
+ let ambientLightSensor = new AmbientLightSensor();
+ ambientLightSensor.start();
+ let testPromise = sensor.mockSensorProvider.getCreatedSensor()
+ .then(mockSensor => {
+ return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading);
+ })
+ .then((mockSensor) => {
+ return new Promise((resolve, reject) => {
+ ambientLightSensor.onchange = e => {
+ if (e.reading.illuminance == kDefaultReadingValue) {
+ resolve(mockSensor);
+ }
+ }
+ ambientLightSensor.onerror = reject;
+ });
+ })
+ .then((mockSensor) => {
+ testRunner.setPageVisibility("hidden");
+ return mockSensor.suspendCalled();
+ })
+ .then((mockSensor) => {
+ testRunner.setPageVisibility("visible");
+ return mockSensor.resumeCalled();
+ })
+ .then((mockSensor) => {
+ return new Promise((resolve, reject) => {
+ ambientLightSensor.onstatechange = () => {
+ if (ambientLightSensor.state === 'idle') {
+ resolve(mockSensor);
+ }
+ }
+ ambientLightSensor.stop();
+ ambientLightSensor.onerror = reject;
+ });
+ })
+ .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
+
+ return testPromise;
+}, 'Test that sensor receives suspend / resume notifications when page'
+ +' visibility changes.');
+
timvolodine 2016/09/19 16:37:32 Just a couple of ideas for future consideration: -
+</script>

Powered by Google App Engine
This is Rietveld 408576698