Bug 1408934 - enable browser_webconsole_deactivateHUDForContext_unfocused_window.js;r=Honza
MozReview-Commit-ID: 8k5ISUxEPP7
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
@@ -230,22 +230,23 @@ subsuite = clipboard
tags = mcb
[browser_webconsole_batching.js]
[browser_webconsole_block_mixedcontent_securityerrors.js]
tags = mcb
[browser_webconsole_cached_messages.js]
[browser_webconsole_cd_iframe.js]
[browser_webconsole_certificate_messages.js]
[browser_webconsole_click_function_to_source.js]
-skip-if = true # Bug 1406038
+skip-if = true # Bug 1406038
[browser_webconsole_clickable_urls.js]
+[browser_webconsole_close_unfocused_window.js]
[browser_webconsole_closing_after_completion.js]
[browser_webconsole_close_sidebar.js]
[browser_webconsole_closure_inspection.js]
-skip-if = true # Bug 1405250
+skip-if = true # Bug 1405250
[browser_webconsole_console_api_iframe.js]
[browser_webconsole_console_dir.js]
[browser_webconsole_console_dir_uninspectable.js]
[browser_webconsole_console_group.js]
[browser_webconsole_console_logging_workers_api.js]
skip-if = true # Bug 1405252
[browser_webconsole_console_table.js]
[browser_webconsole_context_menu_copy_entire_message.js]
@@ -254,27 +255,25 @@ skip-if = (os == 'linux' && bits == 32 &
[browser_webconsole_context_menu_copy_link_location.js]
subsuite = clipboard
skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
[browser_webconsole_context_menu_copy_object.js]
subsuite = clipboard
[browser_webconsole_context_menu_open_url.js]
[browser_webconsole_context_menu_store_as_global.js]
[browser_webconsole_copy_link_location.js]
-skip-if = true # Bug 1401944
+skip-if = true # Bug 1401944
[browser_webconsole_csp_ignore_reflected_xss_message.js]
skip-if = (e10s && debug) || (e10s && os == 'win') # Bug 1221499 enabled these on windows
[browser_webconsole_cspro.js]
skip-if = true # Bug 1408932
# old console skip-if = e10s && (os == 'win' || os == 'mac') # Bug 1243967
[browser_webconsole_ctrl_key_nav.js]
skip-if = true # Bug 1408933
# old console skip-if = os != "mac"
-[browser_webconsole_deactivateHUDForContext_unfocused_window.js]
-skip-if = true # Bug 1408934
[browser_webconsole_document_focus.js]
skip-if = true # Bug 1404368
[browser_webconsole_duplicate_errors.js]
skip-if = true # Bug 1403907
[browser_webconsole_errors_after_page_reload.js]
[browser_webconsole_eval_in_debugger_stackframe.js]
skip-if = true # Bug 1408936
[browser_webconsole_eval_in_debugger_stackframe2.js]
rename from devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_deactivateHUDForContext_unfocused_window.js
rename to devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_close_unfocused_window.js
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_deactivateHUDForContext_unfocused_window.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_close_unfocused_window.js
@@ -1,99 +1,44 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
-// See Bug 597103.
+// See Bug 597103. Check that closing the console on an unfocused window does not trigger
+// any error.
const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" +
- "test/test-console.html";
-
-var tab1, tab2, win1, win2;
-var noErrors = true;
+ "new-console-output/test/mochitest/test-console.html";
-function tab1Loaded() {
- win2 = OpenBrowserWindow();
- whenDelayedStartupFinished(win2, win2Loaded);
-}
+add_task(async function () {
+ let tab1 = await addTab(TEST_URI, {window});
-function win2Loaded() {
- tab2 = win2.gBrowser.addTab(TEST_URI);
- win2.gBrowser.selectedTab = tab2;
- tab2.linkedBrowser.addEventListener("load", tab2Loaded, true);
-}
-
-function tab2Loaded(aEvent) {
- tab2.linkedBrowser.removeEventListener(aEvent.type, tab2Loaded, true);
+ info("Open a second window");
+ let win2 = await openNewBrowserWindow();
- let consolesOpened = 0;
- function onWebConsoleOpen() {
- consolesOpened++;
- if (consolesOpened == 2) {
- executeSoon(closeConsoles);
- }
- }
+ info("Add a test tab in the second window");
+ let tab2 = await addTab(TEST_URI, {window: win2});
+ win2.gBrowser.selectedTab = tab2;
- function openConsoles() {
- try {
- let target1 = TargetFactory.forTab(tab1);
- gDevTools.showToolbox(target1, "webconsole").then(onWebConsoleOpen);
- } catch (ex) {
- ok(false, "gDevTools.showToolbox(target1) exception: " + ex);
- noErrors = false;
- }
-
- try {
- let target2 = TargetFactory.forTab(tab2);
- gDevTools.showToolbox(target2, "webconsole").then(onWebConsoleOpen);
- } catch (ex) {
- ok(false, "gDevTools.showToolbox(target2) exception: " + ex);
- noErrors = false;
- }
- }
+ info("Open console in tabs located in different windows");
+ await openConsole(tab1);
+ await openConsole(tab2);
- function closeConsoles() {
- try {
- let target1 = TargetFactory.forTab(tab1);
- gDevTools.closeToolbox(target1).then(function () {
- try {
- let target2 = TargetFactory.forTab(tab2);
- gDevTools.closeToolbox(target2).then(testEnd);
- } catch (ex) {
- ok(false, "gDevTools.closeToolbox(target2) exception: " + ex);
- noErrors = false;
- }
- });
- } catch (ex) {
- ok(false, "gDevTools.closeToolbox(target1) exception: " + ex);
- noErrors = false;
- }
- }
+ info("Close toolboxes in tabs located in different windows, one of them not focused");
+ await closeToolboxForTab(tab1);
+ await closeToolboxForTab(tab2);
- function testEnd() {
- ok(noErrors, "there were no errors");
+ info("Close the second window");
+ win2.close();
- win1.gBrowser.removeTab(tab1);
-
- Array.forEach(win2.gBrowser.tabs, function (aTab) {
- win2.gBrowser.removeTab(aTab);
- });
+ info("Close the test tab in the first window");
+ window.gBrowser.removeTab(tab1);
- executeSoon(function () {
- win2.close();
- tab1 = tab2 = win1 = win2 = null;
- finishTest();
- });
- }
+ ok(true, "No error was triggered during the test");
+});
- openConsoles();
+function closeToolboxForTab(tab) {
+ let target = TargetFactory.forTab(tab);
+ return gDevTools.closeToolbox(target);
}
-
-function test() {
- loadTab(TEST_URI).then(() => {
- tab1 = gBrowser.selectedTab;
- win1 = window;
- tab1Loaded();
- });
-}
--- a/devtools/client/webconsole/new-console-output/test/mochitest/head.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/head.js
@@ -428,8 +428,27 @@ function simulateLinkClick(element) {
window.openUILinkIn = oldOpenUILinkIn;
resolve(link);
};
// Click on the link.
element.click();
});
}
+
+/**
+ * Open a new browser window and return a promise that resolves when the new window has
+ * fired the "browser-delayed-startup-finished" event.
+ *
+ * @returns Promise
+ * A Promise that resolves when the window is ready.
+ */
+function openNewBrowserWindow() {
+ let win = OpenBrowserWindow();
+ return new Promise(resolve => {
+ Services.obs.addObserver(function observer(subject, topic) {
+ if (win == subject) {
+ Services.obs.removeObserver(observer, topic);
+ resolve(win);
+ }
+ }, "browser-delayed-startup-finished");
+ });
+}