mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-04 13:07:52 +00:00
abdca609f0
Differential Revision: https://phabricator.services.mozilla.com/D40652 --HG-- extra : moz-landing-system : lando
83 lines
2.3 KiB
JavaScript
83 lines
2.3 KiB
JavaScript
"use strict";
|
|
|
|
let BASE_URL = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content/",
|
|
"http://example.com/"
|
|
);
|
|
const DUMMY_URL = BASE_URL + "file_test_browser_bookmarklets.html";
|
|
|
|
function makeBookmarkFor(url, keyword) {
|
|
return Promise.all([
|
|
PlacesUtils.bookmarks.insert({
|
|
parentGuid: PlacesUtils.bookmarks.unfiledGuid,
|
|
title: "bookmarklet",
|
|
url,
|
|
}),
|
|
PlacesUtils.keywords.insert({ url, keyword }),
|
|
]);
|
|
}
|
|
/* Test Description:
|
|
* 1 - Load a Page with CSP script-src: none
|
|
* 2 - Create a bookmarklet with javascript:window.open('about:blank')
|
|
* 3 - Select and enter the bookmarklet
|
|
* A new tab with about:blank should be opened
|
|
*/
|
|
add_task(async function openKeywordBookmarkWithWindowOpen() {
|
|
// This is the current default, but let's not assume that...
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
["browser.link.open_newwindow", 3],
|
|
["dom.disable_open_during_load", true],
|
|
],
|
|
});
|
|
|
|
let moztab;
|
|
let tabOpened = BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
DUMMY_URL
|
|
).then(tab => {
|
|
moztab = tab;
|
|
});
|
|
let keywordForBM = "openNewWindowBookmarklet";
|
|
|
|
let bookmarkInfo;
|
|
let bookmarkCreated = makeBookmarkFor(
|
|
`javascript: window.open("about:blank")`,
|
|
keywordForBM
|
|
).then(values => {
|
|
bookmarkInfo = values[0];
|
|
});
|
|
await Promise.all([tabOpened, bookmarkCreated]);
|
|
|
|
registerCleanupFunction(function() {
|
|
return Promise.all([
|
|
PlacesUtils.bookmarks.remove(bookmarkInfo),
|
|
PlacesUtils.keywords.remove(keywordForBM),
|
|
]);
|
|
});
|
|
gURLBar.value = keywordForBM;
|
|
gURLBar.focus();
|
|
|
|
let tabCreatedPromise = BrowserTestUtils.waitForEvent(
|
|
gBrowser.tabContainer,
|
|
"TabOpen"
|
|
);
|
|
EventUtils.synthesizeKey("KEY_Enter");
|
|
info("Waiting for tab being created");
|
|
let { target: tab } = await tabCreatedPromise;
|
|
info("Got tab");
|
|
let browser = tab.linkedBrowser;
|
|
if (!browser.currentURI || browser.currentURI.spec != "about:blank") {
|
|
info("Waiting for browser load");
|
|
await BrowserTestUtils.browserLoaded(browser, false, "about:blank");
|
|
}
|
|
is(
|
|
browser.currentURI && browser.currentURI.spec,
|
|
"about:blank",
|
|
"Tab with expected URL loaded."
|
|
);
|
|
info("Waiting to remove tab");
|
|
BrowserTestUtils.removeTab(tab);
|
|
BrowserTestUtils.removeTab(moztab);
|
|
});
|