From 877c5f3df708ddf83b8484f607731b08196254b5 Mon Sep 17 00:00:00 2001 From: Steven MacLeod Date: Mon, 23 Feb 2015 12:48:54 -0500 Subject: [PATCH] Bug 1093566 - Migrate BrowserUITestUtils into BrowserTestUtils; r=Unfocused r=paolo --- .../base/content/test/BrowserUITestUtils.jsm | 70 ------------------- browser/base/moz.build | 4 -- .../test/browser/browser_sidebar_mouse_nav.js | 2 +- .../readinglist/test/browser/head.js | 2 - .../BrowserTestUtils/BrowserTestUtils.jsm | 56 +++++++++++++++ 5 files changed, 57 insertions(+), 77 deletions(-) delete mode 100644 browser/base/content/test/BrowserUITestUtils.jsm diff --git a/browser/base/content/test/BrowserUITestUtils.jsm b/browser/base/content/test/BrowserUITestUtils.jsm deleted file mode 100644 index 162dfa771e1..00000000000 --- a/browser/base/content/test/BrowserUITestUtils.jsm +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; - -this.EXPORTED_SYMBOLS = [ - "BrowserUITestUtils", -]; - -const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; - -Cu.import("resource://gre/modules/Timer.jsm"); - - -/** - * Default wait period in millseconds, when waiting for the expected event to occur. - * @type {number} - */ -const DEFAULT_WAIT = 2000; - - -/** - * Test utility functions for dealing with the browser UI DOM. - */ -this.BrowserUITestUtils = { - - /** - * Waits a specified number of miliseconds for a specified event to be - * fired on a specified element. - * - * Usage: - * let receivedEvent = BrowserUITestUtils.waitForEvent(element, "eventName"); - * // Do some processing here that will cause the event to be fired - * // ... - * // Now yield until the Promise is fulfilled - * yield receivedEvent; - * if (receivedEvent && !(receivedEvent instanceof Error)) { - * receivedEvent.msg == "eventName"; - * // ... - * } - * - * @param {Element} subject - The element that should receive the event. - * @param {string} eventName - The event to wait for. - * @param {number} timeoutMs - The number of miliseconds to wait before giving up. - * @param {Element} target - Expected target of the event. - * @returns {Promise} A Promise that resolves to the received event, or - * rejects with an Error. - */ - waitForEvent(subject, eventName, timeoutMs, target) { - return new Promise((resolve, reject) => { - function listener(event) { - if (target && target !== event.target) { - return; - } - - subject.removeEventListener(eventName, listener); - clearTimeout(timerID); - resolve(event); - } - - timeoutMs = timeoutMs || DEFAULT_WAIT; - let stack = new Error().stack; - - let timerID = setTimeout(() => { - subject.removeEventListener(eventName, listener); - reject(new Error(`${eventName} event timeout at ${stack}`)); - }, timeoutMs); - - - subject.addEventListener(eventName, listener); - }); - }, -}; diff --git a/browser/base/moz.build b/browser/base/moz.build index 1576c8d8f0f..6eb11029015 100644 --- a/browser/base/moz.build +++ b/browser/base/moz.build @@ -6,10 +6,6 @@ SPHINX_TREES['sslerrorreport'] = 'content/docs/sslerrorreport' -TESTING_JS_MODULES += [ - 'content/test/BrowserUITestUtils.jsm', -] - MOCHITEST_MANIFESTS += [ 'content/test/general/mochitest.ini', ] diff --git a/browser/components/readinglist/test/browser/browser_sidebar_mouse_nav.js b/browser/components/readinglist/test/browser/browser_sidebar_mouse_nav.js index ba040d77933..ddcb1cb7420 100644 --- a/browser/components/readinglist/test/browser/browser_sidebar_mouse_nav.js +++ b/browser/components/readinglist/test/browser/browser_sidebar_mouse_nav.js @@ -4,7 +4,7 @@ function mouseInteraction(mouseEvent, responseEvent, itemNode) { - let eventPromise = BrowserUITestUtils.waitForEvent(RLSidebarUtils.list, responseEvent); + let eventPromise = BrowserTestUtils.waitForEvent(RLSidebarUtils.list, responseEvent); let details = {}; if (mouseEvent != "click") { details.type = mouseEvent; diff --git a/browser/components/readinglist/test/browser/head.js b/browser/components/readinglist/test/browser/head.js index 113622d8265..a65abb288bd 100644 --- a/browser/components/readinglist/test/browser/head.js +++ b/browser/components/readinglist/test/browser/head.js @@ -2,8 +2,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "ReadingList", "resource:///modules/readinglist/ReadingList.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ReadingListTestUtils", "resource://testing-common/ReadingListTestUtils.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "BrowserUITestUtils", - "resource://testing-common/BrowserUITestUtils.jsm"); XPCOMUtils.defineLazyGetter(this, "RLUtils", () => { diff --git a/testing/mochitest/BrowserTestUtils/BrowserTestUtils.jsm b/testing/mochitest/BrowserTestUtils/BrowserTestUtils.jsm index b1af3bb2d28..bc1d9a8f6e6 100644 --- a/testing/mochitest/BrowserTestUtils/BrowserTestUtils.jsm +++ b/testing/mochitest/BrowserTestUtils/BrowserTestUtils.jsm @@ -19,6 +19,7 @@ const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/Timer.jsm"); Cu.import("resource://testing-common/TestUtils.jsm"); Cc["@mozilla.org/globalmessagemanager;1"] @@ -27,6 +28,14 @@ Cc["@mozilla.org/globalmessagemanager;1"] "chrome://mochikit/content/tests/BrowserTestUtils/content-utils.js", true); +/** + * Default wait period in millseconds, when waiting for the expected + * event to occur. + * @type {number} + */ +const DEFAULT_WAIT = 2000; + + this.BrowserTestUtils = { /** * @param {xul:browser} browser @@ -81,4 +90,51 @@ this.BrowserTestUtils = { () => resolve(win)); }); }, + + /** + * Waits a specified number of miliseconds for a specified event to be + * fired on a specified element. + * + * Usage: + * let receivedEvent = BrowserTestUtil.waitForEvent(element, "eventName"); + * // Do some processing here that will cause the event to be fired + * // ... + * // Now yield until the Promise is fulfilled + * yield receivedEvent; + * if (receivedEvent && !(receivedEvent instanceof Error)) { + * receivedEvent.msg == "eventName"; + * // ... + * } + * + * @param {Element} subject - The element that should receive the event. + * @param {string} eventName - The event to wait for. + * @param {number} timeoutMs - The number of miliseconds to wait before giving up. + * @param {Element} target - Expected target of the event. + * @returns {Promise} A Promise that resolves to the received event, or + * rejects with an Error. + */ + waitForEvent(subject, eventName, timeoutMs, target) { + return new Promise((resolve, reject) => { + function listener(event) { + if (target && target !== event.target) { + return; + } + + subject.removeEventListener(eventName, listener); + clearTimeout(timerID); + resolve(event); + } + + timeoutMs = timeoutMs || DEFAULT_WAIT; + let stack = new Error().stack; + + let timerID = setTimeout(() => { + subject.removeEventListener(eventName, listener); + reject(new Error(`${eventName} event timeout at ${stack}`)); + }, timeoutMs); + + + subject.addEventListener(eventName, listener); + }); + }, };