OLD | NEW |
(Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 GEN('#include "chrome/browser/devtools/device/webrtc/' + |
| 6 'devtools_bridge_client_browsertest.h"'); |
| 7 |
| 8 /** |
| 9 * Test fixture for DevToolsBridgeClientBrowserTest. |
| 10 * @constructor |
| 11 * @extends {testing.Test} |
| 12 */ |
| 13 function DevToolsBridgeClientBrowserTest() {} |
| 14 |
| 15 var DEVICES_URL = "https://www.googleapis.com/clouddevices/v1/devices"; |
| 16 |
| 17 DevToolsBridgeClientBrowserTest.prototype = { |
| 18 __proto__: testing.Test.prototype, |
| 19 |
| 20 /** @override */ |
| 21 typedefCppFixture: 'DevToolsBridgeClientBrowserTest', |
| 22 |
| 23 /** @override */ |
| 24 isAsync: true, |
| 25 |
| 26 /** @override */ |
| 27 browsePreload: DUMMY_URL, |
| 28 |
| 29 setUp: function() { |
| 30 this.callbacksMock = mock(DevToolsBridgeClientBrowserTest.NativeCallbacks); |
| 31 window.callbacks = this.callbacksMock.proxy(); |
| 32 }, |
| 33 |
| 34 /** |
| 35 * Simulates user sign in. DevToolsBridgeClient creates |
| 36 * background_worker only in this case. |
| 37 */ |
| 38 signIn: function() { |
| 39 chrome.send('signIn', []); |
| 40 return new Promise(function(resolve) { |
| 41 this.callbacksMock.expects(once()).workerLoaded().will( |
| 42 callFunction(resolve)); |
| 43 }.bind(this)); |
| 44 }, |
| 45 |
| 46 /** |
| 47 * Creates GCD device definition which could be recognized as a |
| 48 * DevToolsBridge. |
| 49 * |
| 50 * @param {string} id GCD instance id. |
| 51 * @param {string} displayName Display name. |
| 52 */ |
| 53 createInstanceDef: function(id, displayName) { |
| 54 return { |
| 55 'kind': 'clouddevices#device', |
| 56 'deviceKind': 'vendor', |
| 57 'id': id, |
| 58 'displayName': displayName, |
| 59 'commandDefs': { |
| 60 'base': { |
| 61 '_iceExchange': {'kind': 'clouddevices#commandDef'}, |
| 62 '_renegotiate': {'kind': 'clouddevices#commandDef'}, |
| 63 '_startSession': {'kind': 'clouddevices#commandDef'}, |
| 64 } |
| 65 }, |
| 66 }; |
| 67 } |
| 68 }; |
| 69 |
| 70 /** |
| 71 * Callbacks from native DevToolsBridgeClientBrowserTest. |
| 72 * @constructor |
| 73 */ |
| 74 DevToolsBridgeClientBrowserTest.NativeCallbacks = function() {} |
| 75 |
| 76 DevToolsBridgeClientBrowserTest.NativeCallbacks.prototype = { |
| 77 workerLoaded: function() {}, |
| 78 gcdApiRequest: function(id, body) {}, |
| 79 browserListUpdated: function(count) {}, |
| 80 }; |
| 81 |
| 82 TEST_F('DevToolsBridgeClientBrowserTest', 'testSetUpOnMainThread', function() { |
| 83 testDone(); |
| 84 }); |
| 85 |
| 86 TEST_F('DevToolsBridgeClientBrowserTest', 'testSignIn', function() { |
| 87 this.signIn().then(testDone); |
| 88 }); |
| 89 |
| 90 TEST_F('DevToolsBridgeClientBrowserTest', 'testQueryBrowsers', function() { |
| 91 this.signIn().then(function() { |
| 92 chrome.send('queryDevices'); |
| 93 }); |
| 94 var savedArgs = new SaveMockArguments(); |
| 95 this.callbacksMock.expects(once()).gcdApiRequest( |
| 96 savedArgs.match(ANYTHING), DEVICES_URL, '').will( |
| 97 callFunctionWithSavedArgs(savedArgs, function(id) { |
| 98 var response = { |
| 99 'kind': 'clouddevices#devicesListResponse', |
| 100 'devices': [ |
| 101 this.createInstanceDef( |
| 102 'ab911465-83c7-e335-ea64-cb656868cbe0', 'Test 1'), |
| 103 this.createInstanceDef( |
| 104 'ab911465-83c7-e335-ea64-cb656868cbe1', 'Test 2'), |
| 105 this.createInstanceDef( |
| 106 'ab911465-83c7-e335-ea64-cb656868cbe2', 'Test 3'), |
| 107 ], |
| 108 }; |
| 109 chrome.send('gcdApiResponse', [id, response]); |
| 110 }.bind(this))); |
| 111 |
| 112 var browsersCount = 3; |
| 113 |
| 114 this.callbacksMock.expects(once()).browserListUpdated(browsersCount).will( |
| 115 callFunction(testDone)); |
| 116 }); |
OLD | NEW |