forked from mirrors/gecko-dev
Along with removing the view source standalone windows and prefs this patch: 1) Re-structures several of the view source tests that were only testing the old standalone windows to now test view source in tab. 2) Adds support viewSourceUtils.viewSource() to open a browser window when there aren't any open (for browser toolbox view source). 3) Cleans up some of the API for viewSourceUtils and removes the old deprecated ways of calling it. MozReview-Commit-ID: DI6sgZwbCf --HG-- extra : rebase_source : 64677186122f74ab95912d5f3f173cf37472458a
84 lines
3 KiB
JavaScript
84 lines
3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
var source = "data:text/html,text<link%20href='http://example.com/'%20/>more%20text<a%20href='mailto:abc@def.ghi'>email</a>";
|
|
var gViewSourceWindow, gContextMenu, gCopyLinkMenuItem, gCopyEmailMenuItem;
|
|
|
|
var expectedData = [];
|
|
|
|
add_task(async function() {
|
|
// Full source in view source tab
|
|
let newTab = await openDocument(source);
|
|
await onViewSourceWindowOpen(window);
|
|
|
|
let contextMenu = document.getElementById("contentAreaContextMenu");
|
|
|
|
for (let test of expectedData) {
|
|
await checkMenuItems(contextMenu, test[0], test[1], test[2], test[3]);
|
|
}
|
|
|
|
gBrowser.removeTab(newTab);
|
|
|
|
// Selection source in view source tab
|
|
expectedData = [];
|
|
newTab = await openDocumentSelect(source, "body");
|
|
await onViewSourceWindowOpen(window);
|
|
|
|
contextMenu = document.getElementById("contentAreaContextMenu");
|
|
|
|
for (let test of expectedData) {
|
|
await checkMenuItems(contextMenu, test[0], test[1], test[2], test[3]);
|
|
}
|
|
|
|
gBrowser.removeTab(newTab);
|
|
});
|
|
|
|
async function onViewSourceWindowOpen(aWindow) {
|
|
gViewSourceWindow = aWindow;
|
|
|
|
gCopyLinkMenuItem = aWindow.document.getElementById("context-copylink");
|
|
gCopyEmailMenuItem = aWindow.document.getElementById("context-copyemail");
|
|
|
|
let browser = gBrowser.selectedBrowser;
|
|
await ContentTask.spawn(browser, null, async function(arg) {
|
|
let tags = content.document.querySelectorAll("a[href]");
|
|
Assert.equal(tags[0].href, "view-source:http://example.com/", "Link has correct href");
|
|
Assert.equal(tags[1].href, "mailto:abc@def.ghi", "Link has correct href");
|
|
});
|
|
|
|
expectedData.push(["a[href]", true, false, "http://example.com/"]);
|
|
expectedData.push(["a[href^=mailto]", false, true, "abc@def.ghi"]);
|
|
expectedData.push(["span", false, false, null]);
|
|
}
|
|
|
|
async function checkMenuItems(contextMenu, selector, copyLinkExpected, copyEmailExpected, expectedClipboardContent) {
|
|
|
|
let browser = gBrowser.selectedBrowser;
|
|
await ContentTask.spawn(browser, { selector }, async function(arg) {
|
|
content.document.querySelector(arg.selector).scrollIntoView();
|
|
});
|
|
|
|
let popupShownPromise = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
|
|
await BrowserTestUtils.synthesizeMouseAtCenter(selector,
|
|
{ type: "contextmenu", button: 2}, browser);
|
|
await popupShownPromise;
|
|
|
|
is(gCopyLinkMenuItem.hidden, !copyLinkExpected, "Copy link menuitem is " + (copyLinkExpected ? "not hidden" : "hidden"));
|
|
is(gCopyEmailMenuItem.hidden, !copyEmailExpected, "Copy email menuitem is " + (copyEmailExpected ? "not hidden" : "hidden"));
|
|
|
|
if (copyLinkExpected || copyEmailExpected) {
|
|
await new Promise((resolve, reject) => {
|
|
waitForClipboard(expectedClipboardContent, function() {
|
|
if (copyLinkExpected)
|
|
gCopyLinkMenuItem.click();
|
|
else
|
|
gCopyEmailMenuItem.click();
|
|
}, resolve, reject);
|
|
});
|
|
}
|
|
|
|
let popupHiddenPromise = BrowserTestUtils.waitForEvent(contextMenu, "popuphidden");
|
|
contextMenu.hidePopup();
|
|
await popupHiddenPromise;
|
|
}
|