| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Class to manipulate the window in the remote extension. | 8 * Class to manipulate the window in the remote extension. |
| 9 * | 9 * |
| 10 * @param {string} extensionId ID of extension to be manipulated. | 10 * @param {string} extensionId ID of extension to be manipulated. |
| 11 * @constructor | 11 * @constructor |
| 12 */ | 12 */ |
| 13 function RemoteCall(extensionId) { | 13 function RemoteCall(extensionId) { |
| 14 this.extensionId_ = extensionId; | 14 this.extensionId_ = extensionId; |
| 15 } | 15 } |
| 16 | 16 |
| 17 /** | 17 /** |
| 18 * Checks whether step by step tests are enabled or not. |
| 19 * @return {Promise<bool>} |
| 20 */ |
| 21 RemoteCall.isStepByStepEnabled = function() { |
| 22 return new Promise(function(fulfill) { |
| 23 chrome.commandLinePrivate.hasSwitch( |
| 24 'enable-file-manager-step-by-step-tests', fulfill); |
| 25 }); |
| 26 }; |
| 27 |
| 28 /** |
| 18 * Calls a remote test util in Files.app's extension. See: test_util.js. | 29 * Calls a remote test util in Files.app's extension. See: test_util.js. |
| 19 * | 30 * |
| 20 * @param {string} func Function name. | 31 * @param {string} func Function name. |
| 21 * @param {?string} appId Target window's App ID or null for functions | 32 * @param {?string} appId Target window's App ID or null for functions |
| 22 * not requiring a window. | 33 * not requiring a window. |
| 23 * @param {Array.<*>} args Array of arguments. | 34 * @param {Array.<*>} args Array of arguments. |
| 24 * @param {function(*)=} opt_callback Callback handling the function's result. | 35 * @param {function(*)=} opt_callback Callback handling the function's result. |
| 25 * @return {Promise} Promise to be fulfilled with the result of the remote | 36 * @return {Promise} Promise to be fulfilled with the result of the remote |
| 26 * utility. | 37 * utility. |
| 27 */ | 38 */ |
| 28 RemoteCall.prototype.callRemoteTestUtil = | 39 RemoteCall.prototype.callRemoteTestUtil = |
| 29 function(func, appId, args, opt_callback) { | 40 function(func, appId, args, opt_callback) { |
| 30 return new Promise(function(onFulfilled) { | 41 return RemoteCall.isStepByStepEnabled().then(function(stepByStep) { |
| 31 chrome.runtime.sendMessage( | 42 if (!stepByStep) |
| 32 this.extensionId_, | 43 return false; |
| 33 { | 44 return new Promise(function(onFulfilled) { |
| 34 func: func, | 45 console.info('Executing: ' + func + ' on ' + appId + ' with args: '); |
| 35 appId: appId, | 46 console.info(args); |
| 36 args: args | 47 console.info('Type step() to continue...'); |
| 37 }, | 48 window.step = function() { |
| 38 function() { | 49 window.step = null; |
| 39 if (opt_callback) | 50 onFulfilled(stepByStep); |
| 40 opt_callback.apply(null, arguments); | 51 }; |
| 41 onFulfilled(arguments[0]); | 52 }); |
| 42 }); | 53 }).then(function(stepByStep) { |
| 54 return new Promise(function(onFulfilled) { |
| 55 chrome.runtime.sendMessage( |
| 56 this.extensionId_, |
| 57 { |
| 58 func: func, |
| 59 appId: appId, |
| 60 args: args |
| 61 }, |
| 62 function(var_args) { |
| 63 if (stepByStep) { |
| 64 console.info('Returned value:'); |
| 65 console.info(arguments); |
| 66 } |
| 67 if (opt_callback) |
| 68 opt_callback.apply(null, arguments); |
| 69 onFulfilled(arguments[0]); |
| 70 }); |
| 71 }.bind(this)); |
| 43 }.bind(this)); | 72 }.bind(this)); |
| 44 }; | 73 }; |
| 45 | 74 |
| 46 /** | 75 /** |
| 47 * Waits until a window having the given ID prefix appears. | 76 * Waits until a window having the given ID prefix appears. |
| 48 * @param {string} windowIdPrefix ID prefix of the requested window. | 77 * @param {string} windowIdPrefix ID prefix of the requested window. |
| 49 * @return {Promise} promise Promise to be fulfilled with a found window's ID. | 78 * @return {Promise} promise Promise to be fulfilled with a found window's ID. |
| 50 */ | 79 */ |
| 51 RemoteCall.prototype.waitForWindow = function(windowIdPrefix) { | 80 RemoteCall.prototype.waitForWindow = function(windowIdPrefix) { |
| 52 return repeatUntil(function() { | 81 return repeatUntil(function() { |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 RemoteCallFilesApp.prototype.waitUntilCurrentDirectoryIsChanged = | 328 RemoteCallFilesApp.prototype.waitUntilCurrentDirectoryIsChanged = |
| 300 function(windowId, expectedPath) { | 329 function(windowId, expectedPath) { |
| 301 return repeatUntil(function () { | 330 return repeatUntil(function () { |
| 302 return this.callRemoteTestUtil('getBreadcrumbPath', windowId, []).then( | 331 return this.callRemoteTestUtil('getBreadcrumbPath', windowId, []).then( |
| 303 function(path) { | 332 function(path) { |
| 304 if(path !== expectedPath) | 333 if(path !== expectedPath) |
| 305 return pending('Expected path is %s', expectedPath); | 334 return pending('Expected path is %s', expectedPath); |
| 306 }); | 335 }); |
| 307 }.bind(this)); | 336 }.bind(this)); |
| 308 }; | 337 }; |
| OLD | NEW |