--- a/devtools/client/debugger/test/mochitest/browser_dbg_multiple-windows.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_multiple-windows.js
@@ -6,158 +6,109 @@
/**
* Make sure that the debugger attaches to the right tab when multiple windows
* are open.
*/
const TAB1_URL = EXAMPLE_URL + "doc_script-switching-01.html";
const TAB2_URL = EXAMPLE_URL + "doc_script-switching-02.html";
-var gNewTab, gNewWindow;
-var gClient;
-
-function test() {
+add_task(async function() {
DebuggerServer.init();
DebuggerServer.registerAllActors();
- let transport = DebuggerServer.connectPipe();
- gClient = new DebuggerClient(transport);
- gClient.connect().then(([aType, aTraits]) => {
- is(aType, "browser",
- "Root actor should identify itself as a browser.");
+ const transport = DebuggerServer.connectPipe();
+ const client = new DebuggerClient(transport);
+ const [type] = await client.connect();
+ is(type, "browser", "Root actor should identify itself as a browser.");
- promise.resolve(null)
- .then(() => addTab(TAB1_URL))
- .then(testFirstTab)
- .then(() => addWindow(TAB2_URL))
- .then(testNewWindow)
- .then(testFocusFirst)
- .then(testRemoveTab)
- .then(() => gClient.close())
- .then(finish)
- .catch(aError => {
- ok(false, "Got an error: " + aError.message + "\n" + aError.stack);
- });
- });
+ const tab = await addTab(TAB1_URL);
+ await testFirstTab(client, tab);
+ const win = await addWindow(TAB2_URL);
+ await testNewWindow(client, win);
+ testFocusFirst(client);
+ await testRemoveTab(client, win, tab);
+ await client.close();
+});
+
+async function testFirstTab(client, tab) {
+ ok(!!tab, "Second tab created.");
+
+ const response = await client.listTabs();
+ const targetActor = response.tabs.filter(grip => grip.url == TAB1_URL).pop();
+ ok(targetActor, "Should find a target actor for the first tab.");
+
+ is(response.selected, 1, "The first tab is selected.");
}
-function testFirstTab(aTab) {
- let deferred = promise.defer();
-
- gNewTab = aTab;
- ok(!!gNewTab, "Second tab created.");
-
- gClient.listTabs().then(aResponse => {
- let targetActor = aResponse.tabs.filter(aGrip => aGrip.url == TAB1_URL).pop();
- ok(targetActor,
- "Should find a target actor for the first tab.");
+async function testNewWindow(client, win) {
+ ok(!!win, "Second window created.");
- is(aResponse.selected, 1,
- "The first tab is selected.");
-
- deferred.resolve();
- });
-
- return deferred.promise;
-}
-
-function testNewWindow(aWindow) {
- let deferred = promise.defer();
+ win.focus();
- gNewWindow = aWindow;
- ok(!!gNewWindow, "Second window created.");
-
- gNewWindow.focus();
-
- let topWindow = Services.wm.getMostRecentWindow("navigator:browser");
- is(topWindow, gNewWindow,
- "The second window is on top.");
-
- let isActive = promise.defer();
- let isLoaded = promise.defer();
+ const topWindow = Services.wm.getMostRecentWindow("navigator:browser");
+ is(topWindow, win, "The second window is on top.");
- promise.all([isActive.promise, isLoaded.promise]).then(() => {
- gClient.listTabs().then(aResponse => {
- is(aResponse.selected, 2,
- "The second tab is selected.");
+ const isActive = promise.defer();
+ const isLoaded = promise.defer();
- deferred.resolve();
- });
- });
-
- if (Services.focus.activeWindow != gNewWindow) {
- gNewWindow.addEventListener("activate", function onActivate(aEvent) {
- if (aEvent.target != gNewWindow) {
+ if (Services.focus.activeWindow != win) {
+ win.addEventListener("activate", function onActivate(event) {
+ if (event.target != win) {
return;
}
- gNewWindow.removeEventListener("activate", onActivate, true);
+ win.removeEventListener("activate", onActivate, true);
isActive.resolve();
}, true);
} else {
isActive.resolve();
}
- let contentLocation = gNewWindow.content.location.href;
+ const contentLocation = win.content.location.href;
if (contentLocation != TAB2_URL) {
- gNewWindow.document.addEventListener("load", function onLoad(aEvent) {
- if (aEvent.target.documentURI != TAB2_URL) {
+ win.document.addEventListener("load", function onLoad(event) {
+ if (event.target.documentURI != TAB2_URL) {
return;
}
- gNewWindow.document.removeEventListener("load", onLoad, true);
+ win.document.removeEventListener("load", onLoad, true);
isLoaded.resolve();
}, true);
} else {
isLoaded.resolve();
}
- return deferred.promise;
+ await isActive.promise;
+ await isLoaded.promise;
+ const response = await client.listTabs();
+ is(response.selected, 2, "The second tab is selected.");
}
-function testFocusFirst() {
- let deferred = promise.defer();
-
- once(window.content, "focus").then(() => {
- gClient.listTabs().then(aResponse => {
- is(aResponse.selected, 1,
- "The first tab is selected after focusing on it.");
-
- deferred.resolve();
- });
- });
+async function testFocusFirst(client) {
+ const onFocus = once(window.content, "focus");
window.content.focus();
+ await onFocus;
- return deferred.promise;
+ const response = await client.listTabs();
+ is(response.selected, 1, "The first tab is selected after focusing on it.");
}
-function testRemoveTab() {
- let deferred = promise.defer();
-
- gNewWindow.close();
+async function testRemoveTab(client, win, tab) {
+ win.close();
// give it time to close
- executeSoon(function () { continue_remove_tab(deferred); });
- return deferred.promise;
+ await new Promise(resolve => executeSoon(resolve));
+ await continue_remove_tab(client, tab);
}
-function continue_remove_tab(deferred)
+async function continue_remove_tab(client, tab)
{
- removeTab(gNewTab);
-
- gClient.listTabs().then(aResponse => {
- // Verify that tabs are no longer included in listTabs.
- let foundTab1 = aResponse.tabs.some(aGrip => aGrip.url == TAB1_URL);
- let foundTab2 = aResponse.tabs.some(aGrip => aGrip.url == TAB2_URL);
- ok(!foundTab1, "Tab1 should be gone.");
- ok(!foundTab2, "Tab2 should be gone.");
+ removeTab(tab);
- is(aResponse.selected, 0,
- "The original tab is selected.");
+ const response = await client.listTabs();
+ // Verify that tabs are no longer included in listTabs.
+ let foundTab1 = response.tabs.some(grip => grip.url == TAB1_URL);
+ let foundTab2 = response.tabs.some(grip => grip.url == TAB2_URL);
+ ok(!foundTab1, "Tab1 should be gone.");
+ ok(!foundTab2, "Tab2 should be gone.");
- deferred.resolve();
- });
+ is(response.selected, 0, "The original tab is selected.");
}
-
-registerCleanupFunction(function () {
- gNewTab = null;
- gNewWindow = null;
- gClient = null;
-});