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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/testing/chromevox_unittest_base.js

Issue 938623003: Fix ChromeVox next tests to fail instead of timing out where applicable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplify async callback handling in the tests. Created 5 years, 9 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
OLDNEW
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 GEN_INCLUDE([ 5 GEN_INCLUDE([
6 'chrome/browser/resources/chromeos/chromevox/testing/assert_additions.js']); 6 'chrome/browser/resources/chromeos/chromevox/testing/assert_additions.js']);
7 GEN_INCLUDE([ 7 GEN_INCLUDE([
8 'chrome/browser/resources/chromeos/chromevox/testing/common.js']); 8 'chrome/browser/resources/chromeos/chromevox/testing/common.js',
9 'chrome/browser/resources/chromeos/chromevox/testing/callback_helper.js']);
9 10
10 /** 11 /**
11 * Base test fixture for ChromeVox unit tests. 12 * Base test fixture for ChromeVox unit tests.
12 * 13 *
13 * Note that while conceptually these are unit tests, these tests need 14 * Note that while conceptually these are unit tests, these tests need
14 * to run in a full web page, so they're actually run as WebUI browser 15 * to run in a full web page, so they're actually run as WebUI browser
15 * tests. 16 * tests.
16 * 17 *
17 * @constructor 18 * @constructor
18 * @extends {testing.Test} 19 * @extends {testing.Test}
19 */ 20 */
20 function ChromeVoxUnitTestBase() {} 21 function ChromeVoxUnitTestBase() {
22 if (this.isAsync) {
23 this.callbackHelper_ = new CallbackHelper(this);
24 }
25 }
21 26
22 ChromeVoxUnitTestBase.prototype = { 27 ChromeVoxUnitTestBase.prototype = {
23 __proto__: testing.Test.prototype, 28 __proto__: testing.Test.prototype,
24 29
25 /** @override */ 30 /** @override */
26 closureModuleDeps: [ 31 closureModuleDeps: [
27 'cvox.ChromeVoxTester', 32 'cvox.ChromeVoxTester',
28 'cvox.ChromeVoxUserCommands', 33 'cvox.ChromeVoxUserCommands',
29 'cvox.SpokenListBuilder', 34 'cvox.SpokenListBuilder',
30 ], 35 ],
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 /** 113 /**
109 * Waits for the queued events in ChromeVoxEventWatcher to be 114 * Waits for the queued events in ChromeVoxEventWatcher to be
110 * handled, then calls a callback function with provided arguments 115 * handled, then calls a callback function with provided arguments
111 * in the test case scope. Very useful for asserting the results of events. 116 * in the test case scope. Very useful for asserting the results of events.
112 * 117 *
113 * @param {function()} func A function to call when ChromeVox is ready. 118 * @param {function()} func A function to call when ChromeVox is ready.
114 * @param {*} var_args Additional arguments to pass through to the function. 119 * @param {*} var_args Additional arguments to pass through to the function.
115 * @return {ChromeVoxUnitTestBase} this. 120 * @return {ChromeVoxUnitTestBase} this.
116 */ 121 */
117 waitForCalm: function(func, var_args) { 122 waitForCalm: function(func, var_args) {
118 var me = this;
119 var calmArguments = Array.prototype.slice.call(arguments); 123 var calmArguments = Array.prototype.slice.call(arguments);
120 calmArguments.shift(); 124 calmArguments.shift();
121 cvox.ChromeVoxEventWatcher.addReadyCallback(function() { 125 cvox.ChromeVoxEventWatcher.addReadyCallback(this.newCallback(function() {
122 func.apply(me, calmArguments); 126 func.apply(this, calmArguments);
123 }); 127 }));
124 return this; // for chaining. 128 return this; // for chaining.
125 }, 129 },
126 130
127 /** 131 /**
128 * Asserts the TTS engine spoke a certain string. Clears the TTS buffer. 132 * Asserts the TTS engine spoke a certain string. Clears the TTS buffer.
129 * @param {string} expectedText The expected text. 133 * @param {string} expectedText The expected text.
130 * @return {ChromeVoxUnitTestBase} this. 134 * @return {ChromeVoxUnitTestBase} this.
131 */ 135 */
132 assertSpoken: function(expectedText) { 136 assertSpoken: function(expectedText) {
133 assertEquals(expectedText, 137 assertEquals(expectedText,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 userCommand: function(command) { 187 userCommand: function(command) {
184 cvox.ChromeVoxUserCommands.commands[command](); 188 cvox.ChromeVoxUserCommands.commands[command]();
185 return this; // for chaining. 189 return this; // for chaining.
186 }, 190 },
187 191
188 /** 192 /**
189 * @return {cvox.SpokenListBuilder} A new builder. 193 * @return {cvox.SpokenListBuilder} A new builder.
190 */ 194 */
191 spokenList: function() { 195 spokenList: function() {
192 return new cvox.SpokenListBuilder(); 196 return new cvox.SpokenListBuilder();
197 },
198
199 /**
200 * @type {CallbackHelper}
201 * @private
202 */
203 callbackHelper_: null,
204
205 /**
206 * Creates a callback that optionally calls {@code opt_callback} when
207 * called. If this method is called one or more times, then
208 * {@code testDone()} will be called when all callbacks have been called.
209 * @param {Function=} opt_callback Wrapped callback that will have its this
210 * reference bound to the test fixture.
211 * @return {Function}
212 */
213 newCallback: function(opt_callback) {
214 assertNotEquals(null, this.callbackHelper_);
215 return this.callbackHelper_.wrap(opt_callback);
193 } 216 }
194 }; 217 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698