diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /toolkit/components/viewsource/test/browser/browser_viewsource_newwindow.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/viewsource/test/browser/browser_viewsource_newwindow.js')
-rw-r--r-- | toolkit/components/viewsource/test/browser/browser_viewsource_newwindow.js | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/toolkit/components/viewsource/test/browser/browser_viewsource_newwindow.js b/toolkit/components/viewsource/test/browser/browser_viewsource_newwindow.js new file mode 100644 index 0000000000..8a38d94719 --- /dev/null +++ b/toolkit/components/viewsource/test/browser/browser_viewsource_newwindow.js @@ -0,0 +1,102 @@ +/** + * Waits for a View Source window to be opened at a particular + * URL. + * + * @param {string} expectedURL The view-source: URL that's expected. + * @resolves {DOM Window} The window that was opened. + * @returns {Promise} + */ +async function waitForNewViewSourceWindow(expectedURL) { + let win = await BrowserTestUtils.domWindowOpened(); + await BrowserTestUtils.waitForEvent(win, "EndSwapDocShells", true); + let browser = win.gBrowser.selectedBrowser; + if (browser.currentURI.spec != expectedURL) { + await BrowserTestUtils.browserLoaded(browser, false, expectedURL); + } + return win; +} + +/** + * When view_source.tab is set to false, view source should + * open in new browser window instead of new tab. + */ +add_task(async function () { + await SpecialPowers.pushPrefEnv({ + set: [["view_source.tab", false]], + }); + + const PAGE = "http://example.com/"; + await BrowserTestUtils.withNewTab( + { + url: PAGE, + gBrowser, + }, + async browser => { + let winPromise = waitForNewViewSourceWindow("view-source:" + PAGE); + BrowserViewSource(browser); + let win = await winPromise; + + ok(win, "View Source opened up in a new window."); + await BrowserTestUtils.closeWindow(win); + } + ); +}); + +/** + * When view_source.tab is set to false, view partial source + * should open up in new browser window instead of new tab. + */ +add_task(async function () { + await SpecialPowers.pushPrefEnv({ + set: [["view_source.tab", false]], + }); + + const para = "<p>test</p>"; + const source = `<html><body>${para}</body></html>`; + await BrowserTestUtils.withNewTab( + { + url: "data:text/html," + source, + gBrowser, + }, + async browser => { + let winPromise = waitForNewViewSourceWindow( + "view-source:data:text/html;charset=utf-8,%3Cp%3E%EF%B7%90test%EF%B7%AF%3C%2Fp%3E" + ); + await SpecialPowers.spawn( + gBrowser.selectedBrowser, + [], + async function (arg) { + let element = content.document.querySelector("p"); + content.getSelection().selectAllChildren(element); + } + ); + + let contentAreaContextMenuPopup = document.getElementById( + "contentAreaContextMenu" + ); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contentAreaContextMenuPopup, + "popupshown" + ); + await BrowserTestUtils.synthesizeMouseAtCenter( + "p", + { type: "contextmenu", button: 2 }, + gBrowser.selectedBrowser + ); + await popupShownPromise; + + let popupHiddenPromise = BrowserTestUtils.waitForEvent( + contentAreaContextMenuPopup, + "popuphidden" + ); + let item = document.getElementById("context-viewpartialsource-selection"); + contentAreaContextMenuPopup.activateItem(item); + await popupHiddenPromise; + dump("Before winPromise"); + let win = await winPromise; + dump("After winPromise"); + ok(win, "View Partial Source opened up in a new window."); + await BrowserTestUtils.closeWindow(win); + } + ); +}); |