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

Side by Side Diff: chrome/test/data/webui/bluetooth_internals_browsertest.js

Issue 2532383005: bluetooth: Fix BluetoothInternalsTest timeout issue (Closed)
Patch Set: Revert patch set 6, fix indentation 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Tests for chrome://bluetooth-internals 6 * @fileoverview Tests for chrome://bluetooth-internals
7 */ 7 */
8 8
9 /** @const {string} Path to source root. */ 9 /** @const {string} Path to source root. */
10 var ROOT_PATH = '../../../../'; 10 var ROOT_PATH = '../../../../';
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 setTestAdapter: function(adapterInfo) { 137 setTestAdapter: function(adapterInfo) {
138 this.adapterInfo_ = adapterInfo; 138 this.adapterInfo_ = adapterInfo;
139 }, 139 },
140 140
141 setTestDevices: function(devices) { 141 setTestDevices: function(devices) {
142 this.devices_ = devices; 142 this.devices_ = devices;
143 } 143 }
144 }; 144 };
145 145
146 frameInterfaces.addInterfaceOverrideForTesting( 146 frameInterfaces.addInterfaceOverrideForTesting(
147 adapter.AdapterFactory.name, 147 adapter.AdapterFactory.name, function(handle) {
148 function(handle) { 148 var stub = connection.bindHandleToStub(
149 var stub = connection.bindHandleToStub( 149 handle, adapter.AdapterFactory);
150 handle, adapter.AdapterFactory);
151 this.adapterFactory = new TestAdapterFactoryProxy();
152 bindings.StubBindings(stub).delegate = this.adapterFactory;
153 150
154 this.setupResolver.resolve(); 151 this.adapterFactory = new TestAdapterFactoryProxy();
155 }.bind(this)); 152
153 this.adapterFactory.adapter.proxy.setTestDevices([
154 this.fakeDeviceInfo1(),
155 this.fakeDeviceInfo2(),
156 ]);
157 this.adapterFactory.adapter.proxy.setTestAdapter(
158 this.fakeAdapterInfo());
159
160 bindings.StubBindings(stub).delegate = this.adapterFactory;
161
162 this.setupResolver.resolve();
163 }.bind(this));
164
156 }.bind(this)); 165 }.bind(this));
157 }.bind(this); 166 }.bind(this);
158 }, 167 },
168
169 /**
170 * Returns a copy of fake adapter info object.
171 * @return {!Object}
172 */
173 fakeAdapterInfo: function() {
174 return {
175 address: '02:1C:7E:6A:11:5A',
176 discoverable: false,
177 discovering: false,
178 initialized: true,
179 name: 'computer.example.com-0',
180 powered: true,
181 present: true,
182 };
183 },
184
185 /**
186 * Returns a copy of a fake device info object (variant 1).
187 * @return {!Object}
188 */
189 fakeDeviceInfo1: function() {
190 return {
191 address: "AA:AA:84:96:92:84",
192 name: "AAA",
193 name_for_display: "AAA",
194 rssi: {value: -40},
195 services: [],
196 };
197 },
198
199 /**
200 * Returns a copy of a fake device info object (variant 2).
201 * @return {!Object}
202 */
203 fakeDeviceInfo2: function() {
204 return {
205 address: "BB:BB:84:96:92:84",
206 name: "BBB",
207 name_for_display: "BBB",
208 rssi: null,
209 services: [],
210 };
211 },
212
213 /**
214 * Returns a copy of fake device info object. The returned device info lack
215 * rssi and services properties.
216 * @return {!Object}
217 */
218 fakeDeviceInfo3: function() {
219 return {
220 address: "CC:CC:84:96:92:84",
221 name: "CCC",
222 name_for_display: "CCC",
223 };
224 },
159 }; 225 };
160 226
161 // Times out. See https://crbug.com/667970. 227 TEST_F('BluetoothInternalsTest', 'Startup_BluetoothInternals', function() {
162 TEST_F('BluetoothInternalsTest', 'DISABLED_Startup_BluetoothInternals', 228 var adapterFactory = null;
163 function() { 229 var deviceTable = null;
164 var fakeAdapterInfo = {
165 address: '02:1C:7E:6A:11:5A',
166 discoverable: false,
167 discovering: false,
168 initialized: true,
169 name: 'computer.example.com-0',
170 powered: true,
171 present: true,
172 };
173 230
174 var fakeDeviceInfo1 = { 231 var fakeDeviceInfo1 = this.fakeDeviceInfo1;
175 address: "AA:AA:84:96:92:84", 232 var fakeDeviceInfo2 = this.fakeDeviceInfo2;
176 name: "AAA", 233 var fakeDeviceInfo3 = this.fakeDeviceInfo3;
177 name_for_display: "AAA",
178 rssi: {value: -40},
179 services: []
180 };
181
182 var fakeDeviceInfo2 = {
183 address: "BB:BB:84:96:92:84",
184 name: "BBB",
185 name_for_display: "BBB",
186 rssi: null,
187 services: []
188 };
189
190 var fakeDeviceInfo3 = {
191 address: "CC:CC:84:96:92:84",
192 name: "CCC",
193 name_for_display: "CCC",
194 };
195
196 var adapterFactory = null;
197 234
198 // Before tests are run, make sure setup completes. 235 // Before tests are run, make sure setup completes.
199 var setupPromise = this.setupResolver.promise.then(function() { 236 var setupPromise = this.setupResolver.promise.then(function() {
200 adapterFactory = this.adapterFactory; 237 adapterFactory = this.adapterFactory;
201 }.bind(this)); 238 }.bind(this));
202 239
203 240
204 suite('BluetoothInternalsUITest', function() { 241 suite('BluetoothInternalsUITest', function() {
205 var EXPECTED_DEVICES = 2; 242 var EXPECTED_DEVICES = 2;
206 243
207 suiteSetup(function() { 244 suiteSetup(function() {
208 return setupPromise.then(function() { 245 return setupPromise.then(function() {
209 adapterFactory.adapter.proxy.setTestDevices([
210 fakeDeviceInfo1,
211 fakeDeviceInfo2
212 ]);
213 adapterFactory.adapter.proxy.setTestAdapter(fakeAdapterInfo);
214
215 return Promise.all([ 246 return Promise.all([
216 adapterFactory.whenCalled('getAdapter'), 247 adapterFactory.whenCalled('getAdapter'),
217 adapterFactory.adapter.proxy.whenCalled('getInfo'), 248 adapterFactory.adapter.proxy.whenCalled('getInfo'),
218 adapterFactory.adapter.proxy.whenCalled('getDevices'), 249 adapterFactory.adapter.proxy.whenCalled('getDevices'),
219 adapterFactory.adapter.proxy.whenCalled('setClient'), 250 adapterFactory.adapter.proxy.whenCalled('setClient'),
220 ]); 251 ]);
221 }); 252 });
222 }); 253 });
223 254
224 setup(function() { 255 setup(function() {
256 deviceTable = document.querySelector('#devices table');
225 devices.splice(0, devices.length); 257 devices.splice(0, devices.length);
226 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo1); 258 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo1());
227 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo2); 259 adapterBroker.adapterClient_.deviceAdded(fakeDeviceInfo2());
228 }); 260 });
229 261
230 teardown(function() { 262 teardown(function() {
231 adapterFactory.reset(); 263 adapterFactory.reset();
232 }); 264 });
233 265
234 /** 266 /**
235 * Updates device info and verifies the contents of the device table. 267 * Updates device info and verifies the contents of the device table.
236 * @param {!device_collection.DeviceInfo} deviceInfo 268 * @param {!device_collection.DeviceInfo} deviceInfo
237 */ 269 */
238 function changeDevice(deviceInfo) { 270 function changeDevice(deviceInfo) {
239 var deviceRow = document.querySelector('#' + escapeDeviceAddress( 271 var deviceRow = deviceTable.querySelector('#' + escapeDeviceAddress(
240 deviceInfo.address)); 272 deviceInfo.address));
241 var nameForDisplayColumn = deviceRow.children[0]; 273 var nameForDisplayColumn = deviceRow.children[0];
242 var addressColumn = deviceRow.children[1]; 274 var addressColumn = deviceRow.children[1];
243 var rssiColumn = deviceRow.children[2]; 275 var rssiColumn = deviceRow.children[2];
244 var servicesColumn = deviceRow.children[3]; 276 var servicesColumn = deviceRow.children[3];
245 277
246 expectTrue(!!nameForDisplayColumn); 278 expectTrue(!!nameForDisplayColumn);
247 expectTrue(!!addressColumn); 279 expectTrue(!!addressColumn);
248 expectTrue(!!rssiColumn); 280 expectTrue(!!rssiColumn);
249 expectTrue(!!servicesColumn); 281 expectTrue(!!servicesColumn);
(...skipping 23 matching lines...) Expand all
273 function escapeDeviceAddress(address) { 305 function escapeDeviceAddress(address) {
274 return address.replace(/:/g, '\\:'); 306 return address.replace(/:/g, '\\:');
275 } 307 }
276 308
277 /** 309 /**
278 * Expects whether device with |address| is removed. 310 * Expects whether device with |address| is removed.
279 * @param {string} address 311 * @param {string} address
280 * @param {boolean} expectRemoved 312 * @param {boolean} expectRemoved
281 */ 313 */
282 function expectDeviceRemoved(address, expectRemoved) { 314 function expectDeviceRemoved(address, expectRemoved) {
283 var removedRow = document.querySelector( 315 var removedRow = deviceTable.querySelector(
284 '#' + escapeDeviceAddress(address)); 316 '#' + escapeDeviceAddress(address));
285 317
286 expectEquals(expectRemoved, removedRow.classList.contains('removed')); 318 expectEquals(expectRemoved, removedRow.classList.contains('removed'));
287 } 319 }
288 320
289 /** 321 /**
290 * Tests whether a device is added successfully and not duplicated. 322 * Tests whether a device is added successfully and not duplicated.
291 */ 323 */
292 test('DeviceAdded', function() { 324 test('DeviceAdded', function() {
293 var devices = document.querySelectorAll('#device-table tbody tr'); 325 var devices = deviceTable.querySelectorAll('tbody tr');
294 expectEquals(EXPECTED_DEVICES, devices.length); 326 expectEquals(EXPECTED_DEVICES, devices.length);
295 327
296 // Copy device info because device collection will not copy this object. 328 // Copy device info because device collection will not copy this object.
297 var infoCopy = Object.assign({}, fakeDeviceInfo3); 329 var infoCopy = fakeDeviceInfo3();
298 adapterBroker.adapterClient_.deviceAdded(infoCopy); 330 adapterBroker.adapterClient_.deviceAdded(infoCopy);
299 331
300 // Same device shouldn't appear twice. 332 // Same device shouldn't appear twice.
301 adapterBroker.adapterClient_.deviceAdded(infoCopy); 333 adapterBroker.adapterClient_.deviceAdded(infoCopy);
302 334
303 devices = document.querySelectorAll('#device-table tbody tr'); 335 devices = deviceTable.querySelectorAll('tbody tr');
304 expectEquals(EXPECTED_DEVICES + 1, devices.length); 336 expectEquals(EXPECTED_DEVICES + 1, devices.length);
305 }); 337 });
306 338
307 /** 339 /**
308 * Tests whether a device is marked properly as removed. 340 * Tests whether a device is marked properly as removed.
309 */ 341 */
310 test('DeviceSetToRemoved', function() { 342 test('DeviceSetToRemoved', function() {
311 var devices = document.querySelectorAll('#device-table tbody tr'); 343 var devices = deviceTable.querySelectorAll('tbody tr');
312 expectEquals(EXPECTED_DEVICES, devices.length); 344 expectEquals(EXPECTED_DEVICES, devices.length);
313 adapterBroker.adapterClient_.deviceRemoved(fakeDeviceInfo2); 345
346 var fakeDevice = fakeDeviceInfo2();
347 adapterBroker.adapterClient_.deviceRemoved(fakeDevice);
314 348
315 // The number of rows shouldn't change. 349 // The number of rows shouldn't change.
316 devices = document.querySelectorAll('#device-table tbody tr'); 350 devices = deviceTable.querySelectorAll('tbody tr');
317 expectEquals(EXPECTED_DEVICES, devices.length); 351 expectEquals(EXPECTED_DEVICES, devices.length);
318 352
319 expectDeviceRemoved(fakeDeviceInfo2.address, true); 353 expectDeviceRemoved(fakeDevice.address, true);
320 }); 354 });
321 355
322 /** 356 /**
323 * Tests whether a changed device updates the device table properly. 357 * Tests whether a changed device updates the device table properly.
324 */ 358 */
325 test('DeviceChanged', function() { 359 test('DeviceChanged', function() {
326 var devices = document.querySelectorAll('#device-table tbody tr'); 360 var devices = deviceTable.querySelectorAll('tbody tr');
327 expectEquals(EXPECTED_DEVICES, devices.length); 361 expectEquals(EXPECTED_DEVICES, devices.length);
328 362
329 // Copy device info because device collection will not copy this object. 363 // Copy device info because device collection will not copy this object.
330 var newDeviceInfo = Object.assign({}, fakeDeviceInfo1); 364 var newDeviceInfo = fakeDeviceInfo1();
331 newDeviceInfo.name_for_display = 'DDDD'; 365 newDeviceInfo.name_for_display = 'DDDD';
332 newDeviceInfo.rssi = { value: -20 }; 366 newDeviceInfo.rssi = { value: -20 };
333 newDeviceInfo.services = ['service1', 'service2', 'service3']; 367 newDeviceInfo.services = ['service1', 'service2', 'service3'];
334 368
335 changeDevice(newDeviceInfo); 369 changeDevice(newDeviceInfo);
336 }); 370 });
337 371
338 /** 372 /**
339 * Tests the entire device cycle, added -> updated -> removed -> re-added. 373 * Tests the entire device cycle, added -> updated -> removed -> re-added.
340 */ 374 */
341 test('DeviceUpdateCycle', function() { 375 test('DeviceUpdateCycle', function() {
342 var devices = document.querySelectorAll('#device-table tbody tr'); 376 var devices = deviceTable.querySelectorAll('tbody tr');
343 expectEquals(EXPECTED_DEVICES, devices.length); 377 expectEquals(EXPECTED_DEVICES, devices.length);
344 378
345 // Copy device info because device collection will not copy this object. 379 // Copy device info because device collection will not copy this object.
346 var originalDeviceInfo = Object.assign({}, fakeDeviceInfo3); 380 var originalDeviceInfo = fakeDeviceInfo3();
347 adapterBroker.adapterClient_.deviceAdded(originalDeviceInfo); 381 adapterBroker.adapterClient_.deviceAdded(originalDeviceInfo);
348 382
349 var newDeviceInfo = Object.assign({}, fakeDeviceInfo3); 383 var newDeviceInfo = fakeDeviceInfo3();
350 newDeviceInfo.name_for_display = 'DDDD'; 384 newDeviceInfo.name_for_display = 'DDDD';
351 newDeviceInfo.rssi = { value: -20 }; 385 newDeviceInfo.rssi = { value: -20 };
352 newDeviceInfo.services = ['service1', 'service2', 'service3']; 386 newDeviceInfo.services = ['service1', 'service2', 'service3'];
353 387
354 changeDevice(newDeviceInfo); 388 changeDevice(newDeviceInfo);
355 changeDevice(originalDeviceInfo); 389 changeDevice(originalDeviceInfo);
356 390
357 adapterBroker.adapterClient_.deviceRemoved(originalDeviceInfo); 391 adapterBroker.adapterClient_.deviceRemoved(originalDeviceInfo);
358 expectDeviceRemoved(originalDeviceInfo.address, true); 392 expectDeviceRemoved(originalDeviceInfo.address, true);
359 393
360 adapterBroker.adapterClient_.deviceAdded(originalDeviceInfo); 394 adapterBroker.adapterClient_.deviceAdded(originalDeviceInfo);
361 expectDeviceRemoved(originalDeviceInfo.address, false); 395 expectDeviceRemoved(originalDeviceInfo.address, false);
362 }); 396 });
363 397
364 test('DeviceAddedRssiCheck', function() { 398 test('DeviceAddedRssiCheck', function() {
365 var devices = document.querySelectorAll('#device-table tbody tr'); 399 var devices = deviceTable.querySelectorAll('tbody tr');
366 expectEquals(EXPECTED_DEVICES, devices.length); 400 expectEquals(EXPECTED_DEVICES, devices.length);
367 401
368 // Copy device info because device collection will not copy this object. 402 // Copy device info because device collection will not copy this object.
369 var newDeviceInfo = Object.assign({}, fakeDeviceInfo3); 403 var newDeviceInfo = fakeDeviceInfo3();
370 adapterBroker.adapterClient_.deviceAdded(newDeviceInfo); 404 adapterBroker.adapterClient_.deviceAdded(newDeviceInfo);
371 405
372 var deviceRow = document.querySelector('#' + escapeDeviceAddress( 406 var deviceRow = deviceTable.querySelector('#' + escapeDeviceAddress(
373 newDeviceInfo.address)); 407 newDeviceInfo.address));
374 var rssiColumn = deviceRow.children[2]; 408 var rssiColumn = deviceRow.children[2];
375 expectEquals('Unknown', rssiColumn.textContent); 409 expectEquals('Unknown', rssiColumn.textContent);
376 410
377 var newDeviceInfo1 = Object.assign({}, fakeDeviceInfo3); 411 var newDeviceInfo1 = fakeDeviceInfo3();
378 newDeviceInfo1.rssi = {value: -42}; 412 newDeviceInfo1.rssi = {value: -42};
379 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo1); 413 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo1);
380 expectEquals('-42', rssiColumn.textContent); 414 expectEquals('-42', rssiColumn.textContent);
381 415
382 // Device table should keep last valid rssi value. 416 // Device table should keep last valid rssi value.
383 var newDeviceInfo2 = Object.assign({}, fakeDeviceInfo3); 417 var newDeviceInfo2 = fakeDeviceInfo3();
384 newDeviceInfo2.rssi = null; 418 newDeviceInfo2.rssi = null;
385 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo2); 419 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo2);
386 expectEquals('-42', rssiColumn.textContent); 420 expectEquals('-42', rssiColumn.textContent);
387 421
388 var newDeviceInfo3 = Object.assign({}, fakeDeviceInfo3); 422 var newDeviceInfo3 = fakeDeviceInfo3();
389 newDeviceInfo3.rssi = {value: -17}; 423 newDeviceInfo3.rssi = {value: -17};
390 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo3); 424 adapterBroker.adapterClient_.deviceChanged(newDeviceInfo3);
391 expectEquals('-17', rssiColumn.textContent); 425 expectEquals('-17', rssiColumn.textContent);
392 }); 426 });
393 }); 427 });
394 428
395 // Run all registered tests. 429 // Run all registered tests.
396 mocha.run(); 430 mocha.run();
397 }); 431 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698