102 lines
3 KiB
JavaScript
102 lines
3 KiB
JavaScript
/**
|
|
* 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);
|
|
BrowserCommands.viewSource(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 () => {
|
|
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 () {
|
|
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);
|
|
}
|
|
);
|
|
});
|