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

Side by Side Diff: third_party/WebKit/LayoutTests/sensor/accelerometer.html

Issue 2471003002: [sensors] Accelerometer sensor bindings implementation (Closed)
Patch Set: 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
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
shalamov 2016/11/02 14:25:14 We had a plan to make generic list of tests when s
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> 6 <script>
7 7
8 'use strict'; 8 'use strict';
9 9
10 if (!window.testRunner) 10 if (!window.testRunner)
11 debug('This test cannot be run without the TestRunner'); 11 debug('This test cannot be run without the TestRunner');
12 12
13 const kDefaultReadingValue = 3.1415; 13 const kDefaultReadingX = 1.12345;
14 const kDefaultReadingY = 2.12345;
15 const kDefaultReadingZ = 3.12345;
14 16
15 function update_sensor_reading(buffer) { 17 function update_sensor_reading(buffer) {
16 buffer[1] = window.performance.now(); 18 buffer[1] = window.performance.now();
17 buffer[2] = kDefaultReadingValue; 19 buffer[2] = kDefaultReadingX;
20 buffer[3] = kDefaultReadingY;
21 buffer[4] = kDefaultReadingZ;
18 } 22 }
19 23
20 test(() => assert_throws( 24 test(() => assert_throws(
21 new RangeError(), 25 new RangeError(),
22 () => new AmbientLightSensor({frequency: -60})), 26 () => new Accelerometer({frequency: -60})),
23 'Test that negative frequency causes exception from constructor.'); 27 'Test that negative frequency causes exception from constructor.');
24 28
25 sensor_test(sensor => { 29 sensor_test(sensor => {
26 sensor.mockSensorProvider.setGetSensorShouldFail(true); 30 sensor.mockSensorProvider.setGetSensorShouldFail(true);
27 let ambientLightSensor = new AmbientLightSensor(); 31 let accelerometer = new Accelerometer();
28 ambientLightSensor.start(); 32 accelerometer.start();
29 return new Promise((resolve, reject) => { 33 return new Promise((resolve, reject) => {
30 ambientLightSensor.onstatechange = event => { 34 accelerometer.onstatechange = event => {
31 if(ambientLightSensor.state == 'errored') { 35 if(accelerometer.state == 'errored') {
32 resolve(); 36 resolve();
33 } 37 }
34 }; 38 };
35 }); 39 });
36 }, 'Test that sensor state changes to "errored" when sensor is not supported.'); 40 }, 'Test that sensor state changes to "errored" when sensor is not supported.');
37 41
38 sensor_test(sensor => { 42 sensor_test(sensor => {
39 sensor.mockSensorProvider.setGetSensorShouldFail(true); 43 sensor.mockSensorProvider.setGetSensorShouldFail(true);
40 let ambientLightSensor = new AmbientLightSensor(); 44 let accelerometer = new Accelerometer();
41 ambientLightSensor.start(); 45 accelerometer.start();
42 return new Promise((resolve, reject) => { 46 return new Promise((resolve, reject) => {
43 ambientLightSensor.onerror = event => { 47 accelerometer.onerror = event => {
44 assert_equals(ambientLightSensor.state, 'errored'); 48 assert_equals(accelerometer.state, 'errored');
45 console.log(event.error.message); 49 console.log(event.error.message);
46 assert_equals(event.error.name, 'NotFoundError'); 50 assert_equals(event.error.name, 'NotFoundError');
47 resolve(); 51 resolve();
48 }; 52 };
49 53
50 }); 54 });
51 }, 'Test that "onerror" is send when sensor is not supported.'); 55 }, 'Test that "onerror" is send when sensor is not supported.');
52 56
53 57
54 sensor_test(sensor => { 58 sensor_test(sensor => {
55 let ambientLightSensor = new AmbientLightSensor({frequency: 560}); 59 let accelerometer = new Accelerometer({frequency: 560});
56 ambientLightSensor.start(); 60 accelerometer.start();
57 61
58 let testPromise = sensor.mockSensorProvider.getCreatedSensor() 62 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
59 .then(mockSensor => { 63 .then(mockSensor => {
60 mockSensor.setStartShouldFail(true); 64 mockSensor.setStartShouldFail(true);
61 return mockSensor.addConfigurationCalled(); }) 65 return mockSensor.addConfigurationCalled(); })
62 .then(mockSensor => { 66 .then(mockSensor => {
63 return new Promise((resolve, reject) => { 67 return new Promise((resolve, reject) => {
64 ambientLightSensor.onerror = event => { 68 accelerometer.onerror = event => {
65 assert_equals(ambientLightSensor.state, 'errored'); 69 assert_equals(accelerometer.state, 'errored');
66 assert_equals(event.error.name, 'OperationError'); 70 assert_equals(event.error.name, 'OperationError');
67 resolve(); 71 resolve();
68 }; 72 };
69 }); 73 });
70 }); 74 });
71 return testPromise; 75 return testPromise;
72 }, 'Test that "onerror" is send when start() call has failed.'); 76 }, 'Test that "onerror" is send when start() call has failed.');
73 77
74 sensor_test(sensor => { 78 sensor_test(sensor => {
75 let ambientLightSensor = new AmbientLightSensor({frequency: 560}); 79 let accelerometer = new Accelerometer({frequency: 560});
76 ambientLightSensor.start(); 80 accelerometer.start();
77 81
78 let testPromise = sensor.mockSensorProvider.getCreatedSensor() 82 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
79 .then(mockSensor => { return mockSensor.addConfigurationCalled(); }) 83 .then(mockSensor => { return mockSensor.addConfigurationCalled(); })
80 .then(mockSensor => { 84 .then(mockSensor => {
81 return new Promise((resolve, reject) => { 85 return new Promise((resolve, reject) => {
82 ambientLightSensor.onstatechange = event => { 86 accelerometer.onstatechange = event => {
83 if (ambientLightSensor.state === 'idle') { 87 if (accelerometer.state === 'idle') {
84 resolve(mockSensor); 88 resolve(mockSensor);
85 } 89 }
86 90
87 if (ambientLightSensor.state === 'active') { 91 if (accelerometer.state === 'active') {
88 let configuration = mockSensor.active_sensor_configurations_[0]; 92 let configuration = mockSensor.active_sensor_configurations_[0];
89 assert_equals(configuration.frequency, 60); 93 assert_equals(configuration.frequency, 60);
90 ambientLightSensor.stop(); 94 accelerometer.stop();
91 } 95 }
92 }; 96 };
93 }); 97 });
94 }) 98 })
95 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); 99 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
96 100
97 return testPromise; 101 return testPromise;
98 }, 'Test that frequency is capped to 60.0 Hz.'); 102 }, 'Test that frequency is capped to 60.0 Hz.');
99 103
100 sensor_test(sensor => { 104 sensor_test(sensor => {
101 let ambientLightSensor = new AmbientLightSensor({frequency: 60}); 105 let accelerometer = new Accelerometer({frequency: 60});
102 ambientLightSensor.start(); 106 accelerometer.start();
103 let testPromise = sensor.mockSensorProvider.getCreatedSensor() 107 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
104 .then((mockSensor) => { 108 .then((mockSensor) => {
105 return new Promise((resolve, reject) => { 109 return new Promise((resolve, reject) => {
106 ambientLightSensor.onstatechange = event => { 110 accelerometer.onstatechange = event => {
107 if (ambientLightSensor.state === 'idle') { 111 if (accelerometer.state === 'idle') {
108 resolve(mockSensor); 112 resolve(mockSensor);
109 } 113 }
110 114
111 if (ambientLightSensor.state === 'active') { 115 if (accelerometer.state === 'active') {
112 ambientLightSensor.stop(); 116 accelerometer.stop();
113 } 117 }
114 }; 118 };
115 ambientLightSensor.onerror = reject; 119 accelerometer.onerror = reject;
116 }); 120 });
117 }) 121 })
118 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); 122 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
119 123
120 return testPromise; 124 return testPromise;
121 }, 'Test that sensor can be successfully created if sensor is supported.'); 125 }, 'Test that sensor can be successfully created if sensor is supported.');
122 126
123 sensor_test(sensor => { 127 sensor_test(sensor => {
124 let ambientLightSensor = new AmbientLightSensor(); 128 let accelerometer = new Accelerometer({includeGravity: false});
125 ambientLightSensor.start(); 129 accelerometer.start();
126 let testPromise = sensor.mockSensorProvider.getCreatedSensor() 130 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
127 .then((mockSensor) => { 131 .then((mockSensor) => {
128 return new Promise((resolve, reject) => { 132 return new Promise((resolve, reject) => {
129 ambientLightSensor.onstatechange = event => { 133 accelerometer.onstatechange = event => {
130 if (ambientLightSensor.state === 'idle') { 134 if (accelerometer.state === 'idle') {
135 assert_equals(accelerometer.includesGravity, false);
131 resolve(mockSensor); 136 resolve(mockSensor);
132 } 137 }
133 138
134 if (ambientLightSensor.state === 'active') { 139 if (accelerometer.state === 'active') {
135 ambientLightSensor.stop(); 140 accelerometer.stop();
141 }
142 };
143 accelerometer.onerror = reject;
144 });
145 })
146 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
147
148 return testPromise;
149 }, 'Test that sensor can be successfully created with sensor specific configurat ion parameter.');
150
151 sensor_test(sensor => {
152 let accelerometer = new Accelerometer();
153 accelerometer.start();
154 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
155 .then((mockSensor) => {
156 return new Promise((resolve, reject) => {
157 accelerometer.onstatechange = event => {
158 if (accelerometer.state === 'idle') {
159 resolve(mockSensor);
160 }
161
162 if (accelerometer.state === 'active') {
163 accelerometer.stop();
136 } 164 }
137 }; 165 };
138 166
139 ambientLightSensor.onerror = reject; 167 accelerometer.onerror = reject;
140 }); 168 });
141 }) 169 })
142 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); 170 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
143 171
144 return testPromise; 172 return testPromise;
145 }, 'Test that sensor can be constructed with default configuration.'); 173 }, 'Test that sensor can be constructed with default configuration.');
146 174
147 sensor_test(sensor => { 175 sensor_test(sensor => {
148 let ambientLightSensor = new AmbientLightSensor({frequency: 60}); 176 let accelerometer = new Accelerometer({frequency: 60});
149 ambientLightSensor.start(); 177 accelerometer.start();
150 178
151 let testPromise = sensor.mockSensorProvider.getCreatedSensor() 179 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
152 .then(mockSensor => { return mockSensor.addConfigurationCalled(); }) 180 .then(mockSensor => { return mockSensor.addConfigurationCalled(); })
153 .then(mockSensor => { 181 .then(mockSensor => {
154 return new Promise((resolve, reject) => { 182 return new Promise((resolve, reject) => {
155 ambientLightSensor.onstatechange = event => { 183 accelerometer.onstatechange = event => {
156 if (ambientLightSensor.state === 'idle') { 184 if (accelerometer.state === 'idle') {
157 resolve(mockSensor); 185 resolve(mockSensor);
158 } 186 }
159 187
160 if (ambientLightSensor.state === 'active') { 188 if (accelerometer.state === 'active') {
161 ambientLightSensor.stop(); 189 accelerometer.stop();
162 } 190 }
163 }; 191 };
164 }); 192 });
165 }) 193 })
166 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); 194 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
167 195
168 return testPromise; 196 return testPromise;
169 }, 'Test that addConfiguration and removeConfiguration is called.'); 197 }, 'Test that addConfiguration and removeConfiguration is called.');
170 198
171 sensor_test(sensor => { 199 sensor_test(sensor => {
172 let ambientLightSensor = new AmbientLightSensor({frequency: 60}); 200 let accelerometer = new Accelerometer({frequency: 60});
173 ambientLightSensor.start(); 201 accelerometer.start();
174 let testPromise = sensor.mockSensorProvider.getCreatedSensor() 202 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
175 .then(mockSensor => { 203 .then(mockSensor => {
176 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); 204 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading);
177 }) 205 })
178 .then((mockSensor) => { 206 .then((mockSensor) => {
179 return new Promise((resolve, reject) => { 207 return new Promise((resolve, reject) => {
180 ambientLightSensor.onstatechange = event => { 208 accelerometer.onstatechange = event => {
181 if (ambientLightSensor.state === 'idle') { 209 if (accelerometer.state === 'idle') {
182 resolve(mockSensor); 210 resolve(mockSensor);
183 } 211 }
184 }; 212 };
185 213
186 ambientLightSensor.onchange = e => { 214 accelerometer.onchange = e => {
187 assert_equals(e.reading.illuminance, kDefaultReadingValue); 215 assert_equals(e.reading.x, kDefaultReadingX);
188 ambientLightSensor.stop(); 216 assert_equals(e.reading.y, kDefaultReadingY);
217 assert_equals(e.reading.z, kDefaultReadingZ);
218 accelerometer.stop();
189 }; 219 };
190 220
191 ambientLightSensor.onerror = reject; 221 accelerometer.onerror = reject;
192 }); 222 });
193 }) 223 })
194 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); 224 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
195 225
196 return testPromise; 226 return testPromise;
197 }, 'Test that onChange is called and sensor reading is valid.'); 227 }, 'Test that onChange is called and sensor reading is valid.');
198 228
199 sensor_test(sensor => { 229 sensor_test(sensor => {
200 let ambientLightSensor = new AmbientLightSensor({frequency: 60}); 230 let accelerometer = new Accelerometer({frequency: 60});
201 ambientLightSensor.start(); 231 accelerometer.start();
202 let testPromise = sensor.mockSensorProvider.getCreatedSensor() 232 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
203 .then(mockSensor => { 233 .then(mockSensor => {
204 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); 234 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading);
205 }) 235 })
206 .then((mockSensor) => { 236 .then((mockSensor) => {
207 return new Promise((resolve, reject) => { 237 return new Promise((resolve, reject) => {
208 ambientLightSensor.onstatechange = () => { 238 accelerometer.onstatechange = () => {
209 if (ambientLightSensor.state === 'idle') { 239 if (accelerometer.state === 'idle') {
210 assert_equals(ambientLightSensor.reading, null); 240 assert_equals(accelerometer.reading, null);
211 resolve(mockSensor); 241 resolve(mockSensor);
212 } 242 }
213 } 243 }
214 244
215 ambientLightSensor.onchange = e => { 245 accelerometer.onchange = e => {
216 assert_equals(e.reading.illuminance, kDefaultReadingValue); 246 assert_equals(e.reading.x, kDefaultReadingX);
217 ambientLightSensor.stop(); 247 assert_equals(e.reading.y, kDefaultReadingY);
248 assert_equals(e.reading.z, kDefaultReadingZ);
249 accelerometer.stop();
218 } 250 }
219 ambientLightSensor.onerror = reject; 251 accelerometer.onerror = reject;
220 }); 252 });
221 }) 253 })
222 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); 254 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
223 255
224 return testPromise; 256 return testPromise;
225 }, 'Test that sensor reading is not updated when sensor is stopped.'); 257 }, 'Test that sensor reading is not updated when sensor is stopped.');
226 258
227 sensor_test(sensor => { 259 sensor_test(sensor => {
228 let ambientLightSensor = new AmbientLightSensor(); 260 let accelerometer = new Accelerometer();
229 ambientLightSensor.start(); 261 accelerometer.start();
230 let testPromise = sensor.mockSensorProvider.getCreatedSensor() 262 let testPromise = sensor.mockSensorProvider.getCreatedSensor()
231 .then(mockSensor => { 263 .then(mockSensor => {
232 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading); 264 return mockSensor.setUpdateSensorReadingFunction(update_sensor_reading);
233 }) 265 })
234 .then((mockSensor) => { 266 .then((mockSensor) => {
235 return new Promise((resolve, reject) => { 267 return new Promise((resolve, reject) => {
236 ambientLightSensor.onchange = e => { 268 accelerometer.onchange = e => {
237 if (e.reading.illuminance == kDefaultReadingValue) { 269 if (e.reading.x == kDefaultReadingX &&
270 e.reading.y == kDefaultReadingY &&
271 e.reading.z == kDefaultReadingZ) {
238 resolve(mockSensor); 272 resolve(mockSensor);
239 } 273 }
240 } 274 }
241 ambientLightSensor.onerror = reject; 275 accelerometer.onerror = reject;
242 }); 276 });
243 }) 277 })
244 .then((mockSensor) => { 278 .then((mockSensor) => {
245 testRunner.setPageVisibility("hidden"); 279 testRunner.setPageVisibility("hidden");
246 return mockSensor.suspendCalled(); 280 return mockSensor.suspendCalled();
247 }) 281 })
248 .then((mockSensor) => { 282 .then((mockSensor) => {
249 testRunner.setPageVisibility("visible"); 283 testRunner.setPageVisibility("visible");
250 return mockSensor.resumeCalled(); 284 return mockSensor.resumeCalled();
251 }) 285 })
252 .then((mockSensor) => { 286 .then((mockSensor) => {
253 return new Promise((resolve, reject) => { 287 return new Promise((resolve, reject) => {
254 ambientLightSensor.onstatechange = () => { 288 accelerometer.onstatechange = () => {
255 if (ambientLightSensor.state === 'idle') { 289 if (accelerometer.state === 'idle') {
256 resolve(mockSensor); 290 resolve(mockSensor);
257 } 291 }
258 } 292 }
259 ambientLightSensor.stop(); 293 accelerometer.stop();
260 ambientLightSensor.onerror = reject; 294 accelerometer.onerror = reject;
261 }); 295 });
262 }) 296 })
263 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); }); 297 .then(mockSensor => { return mockSensor.removeConfigurationCalled(); });
264 298
265 return testPromise; 299 return testPromise;
266 }, 'Test that sensor receives suspend / resume notifications when page' 300 }, 'Test that sensor receives suspend / resume notifications when page'
267 +' visibility changes.'); 301 +' visibility changes.');
268 302
269 </script> 303 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698