Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / resources / chromeos / chromevox / testing / chromevox_next_e2e_test_base.js
blob8822e31f45360830ae874c3cb1b724da559b1c67
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.
5 // Include test fixture.
6 GEN_INCLUDE(['chromevox_e2e_test_base.js']);
8 /**
9  * Base test fixture for ChromeVox Next end to end tests.
10  *
11  * These tests are identical to ChromeVoxE2ETests except for performing the
12  * necessary setup to run ChromeVox Next.
13  * @constructor
14  * @extends {ChromeVoxE2ETest}
15  */
16 function ChromeVoxNextE2ETest() {
17   ChromeVoxE2ETest.call(this);
20 ChromeVoxNextE2ETest.prototype = {
21   __proto__: ChromeVoxE2ETest.prototype,
23   /**
24    * Gets the desktop from the automation API and Launches a new tab with
25    * the given document, and runs |callback| when a load complete fires.
26    * Arranges to call |testDone()| after |callback| returns.
27    * NOTE: Callbacks creatd instide |opt_callback| must be wrapped with
28    * |this.newCallback| if passed to asynchonous calls.  Otherwise, the test
29    * will be finished prematurely.
30    * @param {function() : void} doc Snippet wrapped inside of a function.
31    * @param {function(chrome.automation.AutomationNode)} callback
32    *     Called once the document is ready.
33    */
34   runWithLoadedTree: function(doc, callback) {
35     callback = this.newCallback(callback);
36     chrome.automation.getDesktop(function(r) {
37       var listener = function(evt) {
38         if (!evt.target.docUrl ||
39             evt.target.docUrl.indexOf('test') == -1)
40           return;
42         r.removeEventListener(listener);
43         callback && callback(evt.target);
44         callback = null;
45       };
46       r.addEventListener('loadComplete', listener, true);
47       this.runWithTab(doc);
48     }.bind(this));
49   },
51   listenOnce: function(node, eventType, callback, capture) {
52     var innerCallback = this.newCallback(function() {
53       node.removeEventListener(eventType, innerCallback, capture);
54       callback();
55     });
56     node.addEventListener(eventType, innerCallback, capture);
57   }