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

Side by Side Diff: chrome/browser/resources/file_manager/js/test_util.js

Issue 16092002: Added basic tests to test the audio player in Files.app. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 7 years, 6 months 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 | Annotate | Revision Log
OLDNEW
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
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
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
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
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();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698