| 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 | 
| index a3e885620c913c5e8a9980bcbafd26644e838b98..1fd4e1074c1e40f17ddd131f60d8be2ca78e5e37 100644 | 
| --- a/third_party/WebKit/LayoutTests/sensor/ambient-light-sensor.html | 
| +++ b/third_party/WebKit/LayoutTests/sensor/ambient-light-sensor.html | 
| @@ -3,6 +3,7 @@ | 
| <script src="../resources/testharnessreport.js"></script> | 
| <script src="../resources/mojo-helpers.js"></script> | 
| <script src="resources/sensor-helpers.js"></script> | 
| +<script src="resources/generic-sensor-tests.js"></script> | 
| <script> | 
|  | 
| 'use strict'; | 
| @@ -17,277 +18,9 @@ function update_sensor_reading(buffer) { | 
| buffer[2] = kDefaultReadingValue; | 
| } | 
|  | 
| -test(() => assert_throws( | 
| -    new RangeError(), | 
| -    () => new AmbientLightSensor({frequency: -60})), | 
| -    'Test that negative frequency causes exception from constructor.'); | 
| - | 
| -sensor_test(sensor => { | 
| -  sensor.mockSensorProvider.setGetSensorShouldFail(true); | 
| -  let ambientLightSensor = new AmbientLightSensor(); | 
| -  ambientLightSensor.start(); | 
| -  return new Promise((resolve, reject) => { | 
| -    let wrapper = new CallbackWrapper(event => { | 
| -      assert_equals(ambientLightSensor.state, 'errored'); | 
| -      assert_equals(event.error.name, 'NotFoundError'); | 
| -      ambientLightSensor.onerror = null; | 
| -      resolve(); | 
| -    }, reject); | 
| - | 
| -    ambientLightSensor.onerror = wrapper.callback; | 
| -  }); | 
| -}, 'Test that "onerror" is send when sensor is not supported.'); | 
| - | 
| -sensor_test(sensor => { | 
| -  let ambientLightSensor = new AmbientLightSensor({frequency: 560}); | 
| -  ambientLightSensor.start(); | 
| - | 
| -  let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 
| -      .then(mockSensor => { | 
| -        mockSensor.setStartShouldFail(true); | 
| -        return mockSensor.addConfigurationCalled(); }) | 
| -      .then(mockSensor => { | 
| -        return new Promise((resolve, reject) => { | 
| -          let wrapper = new CallbackWrapper(event => { | 
| -            assert_equals(ambientLightSensor.state, 'errored'); | 
| -            assert_equals(event.error.name, 'OperationError'); | 
| -            ambientLightSensor.onerror = null; | 
| -            resolve(); | 
| -          }, reject); | 
| - | 
| -          ambientLightSensor.onerror = wrapper.callback; | 
| -        }); | 
| -      }); | 
| -  return testPromise; | 
| -}, 'Test that "onerror" is send when start() call has failed.'); | 
| - | 
| -sensor_test(sensor => { | 
| -  let ambientLightSensor = new AmbientLightSensor({frequency: 560}); | 
| -  ambientLightSensor.start(); | 
| - | 
| -  let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 
| -      .then(mockSensor => { return mockSensor.addConfigurationCalled(); }) | 
| -      .then(mockSensor => { | 
| -        return new Promise((resolve, reject) => { | 
| -          let wrapper = new CallbackWrapper(() => { | 
| -            let configuration = mockSensor.active_sensor_configurations_[0]; | 
| -            assert_equals(configuration.frequency, 60); | 
| -            ambientLightSensor.stop(); | 
| -            assert_equals(ambientLightSensor.state, 'idle'); | 
| -            resolve(mockSensor); | 
| -          }, reject); | 
| - | 
| -          ambientLightSensor.onactivate = wrapper.callback; | 
| -          ambientLightSensor.onerror = reject; | 
| -        }); | 
| -      }) | 
| -      .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 
| - | 
| -  return testPromise; | 
| -}, 'Test that frequency is capped to 60.0 Hz.'); | 
| - | 
| -sensor_test(sensor => { | 
| -  let maxSupportedFrequency = 15; | 
| -  sensor.mockSensorProvider.setMaximumSupportedFrequency(maxSupportedFrequency); | 
| -  let ambientLightSensor = new AmbientLightSensor({frequency: 50}); | 
| -  ambientLightSensor.start(); | 
| - | 
| -  let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 
| -      .then(mockSensor => { return mockSensor.addConfigurationCalled(); }) | 
| -      .then(mockSensor => { | 
| -         return new Promise((resolve, reject) => { | 
| -           let wrapper = new CallbackWrapper(() => { | 
| -             let configuration = mockSensor.active_sensor_configurations_[0]; | 
| -             assert_equals(configuration.frequency, maxSupportedFrequency); | 
| -             ambientLightSensor.stop(); | 
| -             assert_equals(ambientLightSensor.state, 'idle'); | 
| -             resolve(mockSensor); | 
| -           }, reject); | 
| - | 
| -           ambientLightSensor.onactivate = wrapper.callback; | 
| -           ambientLightSensor.onerror = reject; | 
| -        }); | 
| -      }) | 
| -      .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 
| - | 
| -  return testPromise; | 
| -}, 'Test that frequency is capped to the maximum supported from frequency.'); | 
| - | 
| -sensor_test(sensor => { | 
| -  let ambientLightSensor = new AmbientLightSensor({frequency: 60}); | 
| -  ambientLightSensor.start(); | 
| -  let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 
| -      .then((mockSensor) => { | 
| -        return new Promise((resolve, reject) => { | 
| -          let wrapper = new CallbackWrapper(() => { | 
| -            assert_equals(ambientLightSensor.state, 'active'); | 
| -            ambientLightSensor.stop(); | 
| -            assert_equals(ambientLightSensor.state, 'idle'); | 
| -            resolve(mockSensor); | 
| -          }, reject); | 
| - | 
| -          ambientLightSensor.onactivate = wrapper.callback; | 
| -          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) => { | 
| -          let wrapper = new CallbackWrapper(() => { | 
| -            assert_equals(ambientLightSensor.state, 'active'); | 
| -            ambientLightSensor.stop(); | 
| -            assert_equals(ambientLightSensor.state, 'idle'); | 
| -            resolve(mockSensor); | 
| -          }, reject); | 
| - | 
| -          ambientLightSensor.onactivate = wrapper.callback; | 
| -          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) => { | 
| -           let wrapper = new CallbackWrapper(() => { | 
| -             assert_equals(ambientLightSensor.state, 'active'); | 
| -             ambientLightSensor.stop(); | 
| -             assert_equals(ambientLightSensor.state, 'idle'); | 
| -             resolve(mockSensor); | 
| -           }, reject); | 
| - | 
| -           ambientLightSensor.onactivate = wrapper.callback; | 
| -           ambientLightSensor.onerror = reject; | 
| -         }); | 
| -      }) | 
| -      .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) => { | 
| -          let wrapper = new CallbackWrapper(() => { | 
| -            assert_equals(ambientLightSensor.reading.illuminance, | 
| -                          kDefaultReadingValue); | 
| -            ambientLightSensor.stop(); | 
| -            assert_equals(ambientLightSensor.reading, null); | 
| -            resolve(mockSensor); | 
| -          }, reject); | 
| - | 
| -          ambientLightSensor.onchange = wrapper.callback; | 
| -          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(); | 
| -  ambientLightSensor.start(); | 
| -  let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 
| -      .then(mockSensor => { | 
| -        return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); | 
| -      }) | 
| -      .then((mockSensor) => { | 
| -        return new Promise((resolve, reject) => { | 
| -          ambientLightSensor.onchange = () => { | 
| -            if (ambientLightSensor.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.stop(); | 
| -          resolve(mockSensor); | 
| -          ambientLightSensor.onerror = reject; | 
| -        }); | 
| -      }) | 
| -      .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 
| - | 
| -  return testPromise; | 
| -}, 'Test that sensor receives suspend / resume notifications when page' | 
| -    +' visibility changes.'); | 
| - | 
| -sensor_test(sensor => { | 
| -  let sensor1 = new AmbientLightSensor({frequency: 60}); | 
| -  sensor1.start(); | 
| - | 
| -  let sensor2 = new AmbientLightSensor({frequency: 20}); | 
| -  sensor2.start(); | 
| -  let testPromise = sensor.mockSensorProvider.getCreatedSensor() | 
| -      .then(mockSensor => { | 
| -        return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); | 
| -      }) | 
| -      .then((mockSensor) => { | 
| -        return new Promise((resolve, reject) => { | 
| -          let wrapper = new CallbackWrapper(() => { | 
| -            // Reading value is correct. | 
| -            assert_equals(sensor1.reading.illuminance, kDefaultReadingValue); | 
| - | 
| -            // Both sensors share the same reading instance. | 
| -            let reading = sensor1.reading; | 
| -            assert_equals(reading, sensor2.reading); | 
| - | 
| -            // After first sensor stops its reading is null, reading for second | 
| -            // sensor sensor remains. | 
| -            sensor1.stop(); | 
| -            assert_equals(sensor1.reading, null); | 
| -            assert_equals(sensor2.reading.illuminance, kDefaultReadingValue); | 
| - | 
| -            sensor2.stop(); | 
| -            assert_equals(sensor2.reading, null); | 
| - | 
| -            // Cached reading remains. | 
| -            assert_equals(reading.illuminance, kDefaultReadingValue); | 
| -            resolve(mockSensor); | 
| -          }, reject); | 
| - | 
| -          sensor1.onchange = wrapper.callback; | 
| -          sensor1.onerror = reject; | 
| -          sensor2.onerror = reject; | 
| -        }); | 
| -      }) | 
| -      .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); | 
| - | 
| -  return testPromise; | 
| -}, 'Test that sensor reading is correct.'); | 
| +function verify_sensor_reading(reading) { | 
| +  return reading.illuminance == kDefaultReadingValue; | 
| +} | 
|  | 
| +runGenericSensorTests(AmbientLightSensor, update_sensor_reading, verify_sensor_reading); | 
| </script> | 
|  |