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

Side by Side Diff: third_party/WebKit/LayoutTests/sensor/resources/sensor-helpers.js

Issue 2589283003: [Sensors] Reland: Align sensor reading updates and 'onchange' notification with rAF. (Closed)
Patch Set: Robust tests Created 4 years 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 'use strict'; 1 'use strict';
2 2
3 // Wraps callback and calls reject_func if callback throws an error. 3 // Wraps callback and calls reject_func if callback throws an error.
4 class CallbackWrapper { 4 class CallbackWrapper {
5 constructor(callback, reject_func) { 5 constructor(callback, reject_func) {
6 this.wrapper_func_ = (args) => { 6 this.wrapper_func_ = (args) => {
7 try { 7 try {
8 callback(args); 8 callback(args);
9 } catch(e) { 9 } catch(e) {
10 reject_func(); 10 reject_func();
(...skipping 21 matching lines...) Expand all
32 32
33 // Class that mocks Sensor interface defined in sensor.mojom 33 // Class that mocks Sensor interface defined in sensor.mojom
34 class MockSensor { 34 class MockSensor {
35 constructor(sensorRequest, handle, offset, size, reportingMode) { 35 constructor(sensorRequest, handle, offset, size, reportingMode) {
36 this.client_ = null; 36 this.client_ = null;
37 this.expects_modified_reading_ = false; 37 this.expects_modified_reading_ = false;
38 this.start_should_fail_ = false; 38 this.start_should_fail_ = false;
39 this.reporting_mode_ = reportingMode; 39 this.reporting_mode_ = reportingMode;
40 this.sensor_reading_timer_id_ = null; 40 this.sensor_reading_timer_id_ = null;
41 this.update_reading_function_ = null; 41 this.update_reading_function_ = null;
42 this.reading_updates_count_ = 0;
42 this.suspend_called_ = null; 43 this.suspend_called_ = null;
43 this.resume_called_ = null; 44 this.resume_called_ = null;
44 this.add_configuration_called_ = null; 45 this.add_configuration_called_ = null;
45 this.remove_configuration_called_ = null; 46 this.remove_configuration_called_ = null;
46 this.active_sensor_configurations_ = []; 47 this.active_sensor_configurations_ = [];
47 let rv = core.mapBuffer(handle, offset, size, 48 let rv = core.mapBuffer(handle, offset, size,
48 core.MAP_BUFFER_FLAG_NONE); 49 core.MAP_BUFFER_FLAG_NONE);
49 assert_equals(rv.result, core.RESULT_OK, "Failed to map shared buffer"); 50 assert_equals(rv.result, core.RESULT_OK, "Failed to map shared buffer");
50 this.buffer_array_ = rv.buffer; 51 this.buffer_array_ = rv.buffer;
51 this.buffer_ = new Float64Array(this.buffer_array_); 52 this.buffer_ = new Float64Array(this.buffer_array_);
52 this.resetBuffer(); 53 this.resetBuffer();
53 this.binding_ = new bindings.Binding(sensor.Sensor, this, 54 this.binding_ = new bindings.Binding(sensor.Sensor, this,
54 sensorRequest); 55 sensorRequest);
55 this.binding_.setConnectionErrorHandler(() => { 56 this.binding_.setConnectionErrorHandler(() => {
56 this.reset(); 57 this.reset();
57 }); 58 });
58 } 59 }
59 60
60 // Returns default configuration. 61 // Returns default configuration.
61 getDefaultConfiguration() { 62 getDefaultConfiguration() {
62 return Promise.resolve({frequency: 5}); 63 return Promise.resolve({frequency: 5});
63 } 64 }
64 65
66 reading_updates_count() {
67 return this.reading_updates_count_;
68 }
65 // Adds configuration for the sensor and starts reporting fake data 69 // Adds configuration for the sensor and starts reporting fake data
66 // through update_reading_function_ callback. 70 // through update_reading_function_ callback.
67 addConfiguration(configuration) { 71 addConfiguration(configuration) {
68 assert_not_equals(configuration, null, "Invalid sensor configuration."); 72 assert_not_equals(configuration, null, "Invalid sensor configuration.");
69 73
70 this.active_sensor_configurations_.push(configuration); 74 this.active_sensor_configurations_.push(configuration);
71 // Sort using descending order. 75 // Sort using descending order.
72 this.active_sensor_configurations_.sort( 76 this.active_sensor_configurations_.sort(
73 (first, second) => { return second.frequency - first.frequency }); 77 (first, second) => { return second.frequency - first.frequency });
74 78
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 return new Promise((resolve, reject) => { 193 return new Promise((resolve, reject) => {
190 this.remove_configuration_called_ = resolve; 194 this.remove_configuration_called_ = resolve;
191 }); 195 });
192 } 196 }
193 197
194 startReading() { 198 startReading() {
195 if (this.update_reading_function_ != null) { 199 if (this.update_reading_function_ != null) {
196 let max_frequency_used = 200 let max_frequency_used =
197 this.active_sensor_configurations_[0].frequency; 201 this.active_sensor_configurations_[0].frequency;
198 let timeout = (1 / max_frequency_used) * 1000; 202 let timeout = (1 / max_frequency_used) * 1000;
199 this.sensor_reading_timer_id_ = window.setInterval(() => { 203 this.sensor_reading_timer_id_ = window.setInterval(() => {
shalamov 2016/12/21 10:41:03 Should we clear previous interval if addConfigurat
Mikhail 2016/12/21 13:06:28 Right, thanks for the catch!
200 if (this.update_reading_function_) 204 if (this.update_reading_function_) {
201 this.update_reading_function_(this.buffer_, 205 this.update_reading_function_(this.buffer_,
202 this.expects_modified_reading_); 206 this.expects_modified_reading_,
207 this.reading_updates_count_);
208 this.reading_updates_count_++;
209 }
203 if (this.reporting_mode_ === sensor.ReportingMode.ON_CHANGE) { 210 if (this.reporting_mode_ === sensor.ReportingMode.ON_CHANGE) {
204 this.client_.sensorReadingChanged(); 211 this.client_.sensorReadingChanged();
205 } 212 }
206 }, timeout); 213 }, timeout);
207 } 214 }
208 } 215 }
209 216
210 stopReading() { 217 stopReading() {
211 if (this.sensor_reading_timer_id_ != null) { 218 if (this.sensor_reading_timer_id_ != null) {
212 window.clearInterval(this.sensor_reading_timer_id_); 219 window.clearInterval(this.sensor_reading_timer_id_);
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 }; 373 };
367 374
368 let onFailure = () => { 375 let onFailure = () => {
369 sensor.mockSensorProvider.reset(); 376 sensor.mockSensorProvider.reset();
370 return new Promise((resolve, reject) => { setTimeout(reject, 0); }); 377 return new Promise((resolve, reject) => { setTimeout(reject, 0); });
371 }; 378 };
372 379
373 return Promise.resolve(func(sensor)).then(onSuccess, onFailure); 380 return Promise.resolve(func(sensor)).then(onSuccess, onFailure);
374 }), name, properties); 381 }), name, properties);
375 } 382 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698