From afb2aaaebd6e3026f56f6589eaf94c767d0f4672 Mon Sep 17 00:00:00 2001 From: Paul Bone Date: Tue, 2 Jun 2020 02:23:34 +0000 Subject: [PATCH] Bug 1634252 - Add test case r=kmag Differential Revision: https://phabricator.services.mozilla.com/D76994 --- browser/base/content/test/tabs/browser.ini | 1 + .../tabs/browser_file_to_http_named_popup.js | 57 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 browser/base/content/test/tabs/browser_file_to_http_named_popup.js diff --git a/browser/base/content/test/tabs/browser.ini b/browser/base/content/test/tabs/browser.ini index 9e0ee8cbee37..7f4a18b0ebdf 100644 --- a/browser/base/content/test/tabs/browser.ini +++ b/browser/base/content/test/tabs/browser.ini @@ -32,6 +32,7 @@ skip-if = debug # Bug 1444565, Bug 1457887 [browser_e10s_javascript.js] [browser_file_to_http_script_closable.js] support-files = tab_that_closes.html +[browser_file_to_http_named_popup.js] [browser_multiselect_tabs_active_tab_selected_by_default.js] [browser_multiselect_tabs_bookmark.js] [browser_multiselect_tabs_clear_selection_when_tab_switch.js] diff --git a/browser/base/content/test/tabs/browser_file_to_http_named_popup.js b/browser/base/content/test/tabs/browser_file_to_http_named_popup.js new file mode 100644 index 000000000000..5a628d043bf5 --- /dev/null +++ b/browser/base/content/test/tabs/browser_file_to_http_named_popup.js @@ -0,0 +1,57 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ + +const TEST_FILE = fileURL("dummy_page.html"); +const TEST_HTTP = httpURL("dummy_page.html"); + +// Test for Bug 1634252 +add_task(async function() { + await BrowserTestUtils.withNewTab(TEST_FILE, async function(fileBrowser) { + info("Tab ready"); + + async function summonPopup(firstRun) { + var winPromise = BrowserTestUtils.waitForNewWindow({ + url: TEST_HTTP, + }); + + await SpecialPowers.spawn( + fileBrowser, + [TEST_HTTP, firstRun], + (target, firstRun_) => { + var win = content.open(target, "named", "width=400,height=400"); + win.focus(); + ok(win, "window.open was successful"); + if (firstRun_) { + content.document.firstWindow = win; + } else { + content.document.otherWindow = win; + } + } + ); + + if (firstRun) { + // We should only wait for the window the first time, because only the + // later times no new window should be created. + info("Waiting for new window"); + var win = await winPromise; + ok(win, "Got a window"); + } + } + + info("Opening window"); + await summonPopup(true); + info("Opening window again"); + await summonPopup(false); + + await SpecialPowers.spawn(fileBrowser, [], () => { + ok(content.document.firstWindow, "Window is non-null"); + is( + content.document.otherWindow, + content.document.firstWindow, + "Windows are the same" + ); + + content.document.firstWindow.close(); + }); + }); +});