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

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

Issue 2494773004: [sensors] Improve the generic sensors current layout tests. (Closed)
Patch Set: Fix Reilly comments 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 unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/sensor/resources/generic-sensor-tests.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../resources/testharness.js"></script> 2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/testharnessreport.js"></script> 3 <script src="../resources/testharnessreport.js"></script>
4 <script src="../resources/mojo-helpers.js"></script> 4 <script src="../resources/mojo-helpers.js"></script>
5 <script src="resources/sensor-helpers.js"></script> 5 <script src="resources/sensor-helpers.js"></script>
6 <script src="resources/generic-sensor-tests.js"></script>
6 <script> 7 <script>
7 8
8 'use strict'; 9 'use strict';
9 10
10 if (!window.testRunner) 11 if (!window.testRunner)
11 debug('This test cannot be run without the TestRunner'); 12 debug('This test cannot be run without the TestRunner');
12 13
13 const kDefaultReadingValue = 3.1415; 14 const kDefaultReadingValue = 3.1415;
14 15
15 function update_sensor_reading(buffer) { 16 function update_sensor_reading(buffer) {
16 buffer[1] = window.performance.now(); 17 buffer[1] = window.performance.now();
17 buffer[2] = kDefaultReadingValue; 18 buffer[2] = kDefaultReadingValue;
18 } 19 }
19 20
20 test(() => assert_throws( 21 function verify_sensor_reading(reading) {
21 new RangeError(), 22 return reading.illuminance == kDefaultReadingValue;
22 () => new AmbientLightSensor({frequency: -60})), 23 }
23 'Test that negative frequency causes exception from constructor.');
24 24
25 sensor_test(sensor => { 25 runGenericSensorTests(AmbientLightSensor, update_sensor_reading, verify_sensor_r eading);
26 sensor.mockSensorProvider.setGetSensorShouldFail(true);
27 let ambientLightSensor = new AmbientLightSensor();
28 ambientLightSensor.start();
29 return new Promise((resolve, reject) => {
30 let wrapper = new CallbackWrapper(event => {
31 assert_equals(ambientLightSensor.state, 'errored');
32 assert_equals(event.error.name, 'NotFoundError');
33 ambientLightSensor.onerror = null;
34 resolve();
35 }, reject);
36
37 ambientLightSensor.onerror = wrapper.callback;
38 });
39 }, 'Test that "onerror" is send when sensor is not supported.');
40
41 sensor_test(sensor => {
42 let ambientLightSensor = new AmbientLightSensor({frequency: 560});
43 ambientLightSensor.start();
44
45 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
46 .then(mockSensor => {
47 mockSensor.setStartShouldFail(true);
48 return mockSensor.addConfigurationCalled(); })
49 .then(mockSensor => {
50 return new Promise((resolve, reject) => {
51 let wrapper = new CallbackWrapper(event => {
52 assert_equals(ambientLightSensor.state, 'errored');
53 assert_equals(event.error.name, 'OperationError');
54 ambientLightSensor.onerror = null;
55 resolve();
56 }, reject);
57
58 ambientLightSensor.onerror = wrapper.callback;
59 });
60 });
61 return testPromise;
62 }, 'Test that "onerror" is send when start() call has failed.');
63
64 sensor_test(sensor => {
65 let ambientLightSensor = new AmbientLightSensor({frequency: 560});
66 ambientLightSensor.start();
67
68 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
69 .then(mockSensor => { return mockSensor.addConfigurationCalled(); })
70 .then(mockSensor => {
71 return new Promise((resolve, reject) => {
72 let wrapper = new CallbackWrapper(() => {
73 let configuration = mockSensor.active_sensor_configurations_[0];
74 assert_equals(configuration.frequency, 60);
75 ambientLightSensor.stop();
76 assert_equals(ambientLightSensor.state, 'idle');
77 resolve(mockSensor);
78 }, reject);
79
80 ambientLightSensor.onactivate = wrapper.callback;
81 ambientLightSensor.onerror = reject;
82 });
83 })
84 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
85
86 return testPromise;
87 }, 'Test that frequency is capped to 60.0 Hz.');
88
89 sensor_test(sensor => {
90 let maxSupportedFrequency = 15;
91 sensor.mockSensorProvider.setMaximumSupportedFrequency(maxSupportedFrequency);
92 let ambientLightSensor = new AmbientLightSensor({frequency: 50});
93 ambientLightSensor.start();
94
95 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
96 .then(mockSensor => { return mockSensor.addConfigurationCalled(); })
97 .then(mockSensor => {
98 return new Promise((resolve, reject) => {
99 let wrapper = new CallbackWrapper(() => {
100 let configuration = mockSensor.active_sensor_configurations_[0];
101 assert_equals(configuration.frequency, maxSupportedFrequency);
102 ambientLightSensor.stop();
103 assert_equals(ambientLightSensor.state, 'idle');
104 resolve(mockSensor);
105 }, reject);
106
107 ambientLightSensor.onactivate = wrapper.callback;
108 ambientLightSensor.onerror = reject;
109 });
110 })
111 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
112
113 return testPromise;
114 }, 'Test that frequency is capped to the maximum supported from frequency.');
115
116 sensor_test(sensor => {
117 let ambientLightSensor = new AmbientLightSensor({frequency: 60});
118 ambientLightSensor.start();
119 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
120 .then((mockSensor) => {
121 return new Promise((resolve, reject) => {
122 let wrapper = new CallbackWrapper(() => {
123 assert_equals(ambientLightSensor.state, 'active');
124 ambientLightSensor.stop();
125 assert_equals(ambientLightSensor.state, 'idle');
126 resolve(mockSensor);
127 }, reject);
128
129 ambientLightSensor.onactivate = wrapper.callback;
130 ambientLightSensor.onerror = reject;
131 });
132 })
133 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
134
135 return testPromise;
136 }, 'Test that sensor can be successfully created if sensor is supported.');
137
138 sensor_test(sensor => {
139 let ambientLightSensor = new AmbientLightSensor();
140 ambientLightSensor.start();
141 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
142 .then((mockSensor) => {
143 return new Promise((resolve, reject) => {
144 let wrapper = new CallbackWrapper(() => {
145 assert_equals(ambientLightSensor.state, 'active');
146 ambientLightSensor.stop();
147 assert_equals(ambientLightSensor.state, 'idle');
148 resolve(mockSensor);
149 }, reject);
150
151 ambientLightSensor.onactivate = wrapper.callback;
152 ambientLightSensor.onerror = reject;
153 });
154 })
155 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
156
157 return testPromise;
158 }, 'Test that sensor can be constructed with default configuration.');
159
160 sensor_test(sensor => {
161 let ambientLightSensor = new AmbientLightSensor({frequency: 60});
162 ambientLightSensor.start();
163
164 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
165 .then(mockSensor => { return mockSensor.addConfigurationCalled(); })
166 .then(mockSensor => {
167 return new Promise((resolve, reject) => {
168 let wrapper = new CallbackWrapper(() => {
169 assert_equals(ambientLightSensor.state, 'active');
170 ambientLightSensor.stop();
171 assert_equals(ambientLightSensor.state, 'idle');
172 resolve(mockSensor);
173 }, reject);
174
175 ambientLightSensor.onactivate = wrapper.callback;
176 ambientLightSensor.onerror = reject;
177 });
178 })
179 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
180
181 return testPromise;
182 }, 'Test that addConfiguration and removeConfiguration is called.');
183
184 sensor_test(sensor => {
185 let ambientLightSensor = new AmbientLightSensor({frequency: 60});
186 ambientLightSensor.start();
187 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
188 .then(mockSensor => {
189 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading);
190 })
191 .then((mockSensor) => {
192 return new Promise((resolve, reject) => {
193 let wrapper = new CallbackWrapper(() => {
194 assert_equals(ambientLightSensor.reading.illuminance,
195 kDefaultReadingValue);
196 ambientLightSensor.stop();
197 assert_equals(ambientLightSensor.reading, null);
198 resolve(mockSensor);
199 }, reject);
200
201 ambientLightSensor.onchange = wrapper.callback;
202 ambientLightSensor.onerror = reject;
203 });
204 })
205 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
206
207 return testPromise;
208 }, 'Test that onChange is called and sensor reading is valid.');
209
210 sensor_test(sensor => {
211 let ambientLightSensor = new AmbientLightSensor();
212 ambientLightSensor.start();
213 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
214 .then(mockSensor => {
215 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading);
216 })
217 .then((mockSensor) => {
218 return new Promise((resolve, reject) => {
219 ambientLightSensor.onchange = () => {
220 if (ambientLightSensor.reading.illuminance
221 == kDefaultReadingValue) {
222 resolve(mockSensor);
223 }
224 }
225 ambientLightSensor.onerror = reject;
226 });
227 })
228 .then((mockSensor) => {
229 testRunner.setPageVisibility("hidden");
230 return mockSensor.suspendCalled();
231 })
232 .then((mockSensor) => {
233 testRunner.setPageVisibility("visible");
234 return mockSensor.resumeCalled();
235 })
236 .then((mockSensor) => {
237 return new Promise((resolve, reject) => {
238 ambientLightSensor.stop();
239 resolve(mockSensor);
240 ambientLightSensor.onerror = reject;
241 });
242 })
243 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
244
245 return testPromise;
246 }, 'Test that sensor receives suspend / resume notifications when page'
247 +' visibility changes.');
248
249 sensor_test(sensor => {
250 let sensor1 = new AmbientLightSensor({frequency: 60});
251 sensor1.start();
252
253 let sensor2 = new AmbientLightSensor({frequency: 20});
254 sensor2.start();
255 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
256 .then(mockSensor => {
257 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading);
258 })
259 .then((mockSensor) => {
260 return new Promise((resolve, reject) => {
261 let wrapper = new CallbackWrapper(() => {
262 // Reading value is correct.
263 assert_equals(sensor1.reading.illuminance, kDefaultReadingValue);
264
265 // Both sensors share the same reading instance.
266 let reading = sensor1.reading;
267 assert_equals(reading, sensor2.reading);
268
269 // After first sensor stops its reading is null, reading for second
270 // sensor sensor remains.
271 sensor1.stop();
272 assert_equals(sensor1.reading, null);
273 assert_equals(sensor2.reading.illuminance, kDefaultReadingValue);
274
275 sensor2.stop();
276 assert_equals(sensor2.reading, null);
277
278 // Cached reading remains.
279 assert_equals(reading.illuminance, kDefaultReadingValue);
280 resolve(mockSensor);
281 }, reject);
282
283 sensor1.onchange = wrapper.callback;
284 sensor1.onerror = reject;
285 sensor2.onerror = reject;
286 });
287 })
288 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
289
290 return testPromise;
291 }, 'Test that sensor reading is correct.');
292
293 </script> 26 </script>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/sensor/resources/generic-sensor-tests.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698