OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 * Namespace for test related things. | 6 * Namespace for test related things. |
7 */ | 7 */ |
8 var test = test || {}; | 8 var test = test || {}; |
9 | 9 |
10 /** | 10 /** |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 launchFileManager({defaultPath: path}, | 42 launchFileManager({defaultPath: path}, |
43 undefined, // opt_type | 43 undefined, // opt_type |
44 undefined, // opt_id | 44 undefined, // opt_id |
45 function(id) { | 45 function(id) { |
46 appId = id; | 46 appId = id; |
47 helper(); | 47 helper(); |
48 }); | 48 }); |
49 }; | 49 }; |
50 | 50 |
51 /** | 51 /** |
| 52 * Waits for a window with the specified App ID prefix. Eg. `files` will match |
| 53 * windows such as files#0, files#1, etc. |
| 54 * |
| 55 * @param {string} appIdPrefix ID prefix of the requested window. |
| 56 * @param {function(string)} callback Completion callback with the new window's |
| 57 * App ID. |
| 58 */ |
| 59 test.util.waitForWindow = function(appIdPrefix, callback) { |
| 60 var appId; |
| 61 function helper() { |
| 62 for (var appId in appWindows) { |
| 63 if (appId.indexOf(appIdPrefix) == 0) { |
| 64 callback(appId); |
| 65 return; |
| 66 } |
| 67 } |
| 68 window.setTimeout(helper, 50); |
| 69 } |
| 70 helper(); |
| 71 }; |
| 72 |
| 73 /** |
52 * Gets a document in the Files.app's window, including iframes. | 74 * Gets a document in the Files.app's window, including iframes. |
53 * | 75 * |
54 * @param {Window} contentWindow Window to be used. | 76 * @param {Window} contentWindow Window to be used. |
55 * @param {string=} opt_iframeQuery Query for the iframe. | 77 * @param {string=} opt_iframeQuery Query for the iframe. |
56 * @return {Document=} Returns the found document or undefined if not found. | 78 * @return {Document=} Returns the found document or undefined if not found. |
57 * @private | 79 * @private |
58 */ | 80 */ |
59 test.util.getDocument_ = function(contentWindow, opt_iframeQuery) { | 81 test.util.getDocument_ = function(contentWindow, opt_iframeQuery) { |
60 if (opt_iframeQuery) { | 82 if (opt_iframeQuery) { |
61 var iframe = contentWindow.document.querySelector(opt_iframeQuery); | 83 var iframe = contentWindow.document.querySelector(opt_iframeQuery); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 fileList.sort(); | 155 fileList.sort(); |
134 return fileList; | 156 return fileList; |
135 }; | 157 }; |
136 | 158 |
137 /** | 159 /** |
138 * Waits for an element and returns it as an array of it's attributes. | 160 * Waits for an element and returns it as an array of it's attributes. |
139 * | 161 * |
140 * @param {Window} contentWindow Window to be tested. | 162 * @param {Window} contentWindow Window to be tested. |
141 * @param {string} targetQuery Query to specify the element. | 163 * @param {string} targetQuery Query to specify the element. |
142 * @param {?string} iframeQuery Iframe selector or null if no iframe. | 164 * @param {?string} iframeQuery Iframe selector or null if no iframe. |
143 * @param {function(Object)} callback Callback with a hash array of attributes. | 165 * @param {function(Object)} callback Callback with a hash array of attributes |
| 166 * and contents as text. |
144 */ | 167 */ |
145 test.util.waitForElement = function( | 168 test.util.waitForElement = function( |
146 contentWindow, targetQuery, iframeQuery, callback) { | 169 contentWindow, targetQuery, iframeQuery, callback) { |
147 function helper() { | 170 function helper() { |
148 var doc = test.util.getDocument_(contentWindow, iframeQuery); | 171 var doc = test.util.getDocument_(contentWindow, iframeQuery); |
149 if (doc) { | 172 if (doc) { |
150 var element = doc.querySelector(targetQuery); | 173 var element = doc.querySelector(targetQuery); |
151 if (element) { | 174 if (element) { |
152 var attributes = {}; | 175 var attributes = {}; |
153 for (var i = 0; i < element.attributes.length; i++) { | 176 for (var i = 0; i < element.attributes.length; i++) { |
154 attributes[element.attributes[i].nodeName] = | 177 attributes[element.attributes[i].nodeName] = |
155 element.attributes[i].nodeValue; | 178 element.attributes[i].nodeValue; |
156 } | 179 } |
157 callback(attributes); | 180 var text = element.textContent; |
| 181 callback({attributes: attributes, text: text}); |
158 return; | 182 return; |
159 } | 183 } |
160 } | 184 } |
161 window.setTimeout(helper, 50); | 185 window.setTimeout(helper, 50); |
162 } | 186 } |
163 helper(); | 187 helper(); |
164 }; | 188 }; |
165 | 189 |
166 /** | 190 /** |
167 * Calls getFileList until the number of displayed files is different from | 191 * Calls getFileList until the number of displayed files is different from |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 return false; | 500 return false; |
477 } | 501 } |
478 contentWindow = appWindows[request.appId].contentWindow; | 502 contentWindow = appWindows[request.appId].contentWindow; |
479 } | 503 } |
480 if (!contentWindow) { | 504 if (!contentWindow) { |
481 // Global functions, not requiring a window. | 505 // Global functions, not requiring a window. |
482 switch (request.func) { | 506 switch (request.func) { |
483 case 'openMainWindow': | 507 case 'openMainWindow': |
484 test.util.openMainWindow(request.args[0], sendResponse); | 508 test.util.openMainWindow(request.args[0], sendResponse); |
485 return true; | 509 return true; |
| 510 case 'waitForWindow': |
| 511 test.util.waitForWindow(request.args[0], sendResponse); |
| 512 return true; |
486 case 'getErrorCount': | 513 case 'getErrorCount': |
487 sendResponse(test.util.getErrorCount()); | 514 sendResponse(test.util.getErrorCount()); |
488 return true; | 515 return true; |
489 default: | 516 default: |
490 console.error('Global function ' + request.func + ' not found.'); | 517 console.error('Global function ' + request.func + ' not found.'); |
491 } | 518 } |
492 } else { | 519 } else { |
493 // Functions working on a window. | 520 // Functions working on a window. |
494 switch (request.func) { | 521 switch (request.func) { |
495 case 'resizeWindow': | 522 case 'resizeWindow': |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 default: | 579 default: |
553 console.error('Window function ' + request.func + ' not found.'); | 580 console.error('Window function ' + request.func + ' not found.'); |
554 } | 581 } |
555 } | 582 } |
556 return false; | 583 return false; |
557 }); | 584 }); |
558 }; | 585 }; |
559 | 586 |
560 // Register the test utils. | 587 // Register the test utils. |
561 test.util.registerRemoteTestUtils(); | 588 test.util.registerRemoteTestUtils(); |
OLD | NEW |