browser_test_bookmarklets.js (2316B)
1 "use strict"; 2 3 let BASE_URL = getRootDirectory(gTestPath).replace( 4 "chrome://mochitests/content/", 5 "https://example.com/" 6 ); 7 const DUMMY_URL = BASE_URL + "file_test_browser_bookmarklets.html"; 8 9 function makeBookmarkFor(url, keyword) { 10 return Promise.all([ 11 PlacesUtils.bookmarks.insert({ 12 parentGuid: PlacesUtils.bookmarks.unfiledGuid, 13 title: "bookmarklet", 14 url, 15 }), 16 PlacesUtils.keywords.insert({ url, keyword }), 17 ]); 18 } 19 /* Test Description: 20 * 1 - Load a Page with CSP script-src: none 21 * 2 - Create a bookmarklet with javascript:window.open('about:blank') 22 * 3 - Select and enter the bookmarklet 23 * A new tab with about:blank should be opened 24 */ 25 add_task(async function openKeywordBookmarkWithWindowOpen() { 26 // This is the current default, but let's not assume that... 27 await SpecialPowers.pushPrefEnv({ 28 set: [ 29 ["browser.link.open_newwindow", 3], 30 ["dom.disable_open_during_load", true], 31 ], 32 }); 33 34 let moztab; 35 let tabOpened = BrowserTestUtils.openNewForegroundTab( 36 gBrowser, 37 DUMMY_URL 38 ).then(tab => { 39 moztab = tab; 40 }); 41 let keywordForBM = "openNewWindowBookmarklet"; 42 43 let bookmarkInfo; 44 let bookmarkCreated = makeBookmarkFor( 45 `javascript: window.open("about:blank")`, 46 keywordForBM 47 ).then(values => { 48 bookmarkInfo = values[0]; 49 }); 50 await Promise.all([tabOpened, bookmarkCreated]); 51 52 registerCleanupFunction(function () { 53 return Promise.all([ 54 PlacesUtils.bookmarks.remove(bookmarkInfo), 55 PlacesUtils.keywords.remove(keywordForBM), 56 ]); 57 }); 58 gURLBar.value = keywordForBM; 59 gURLBar.focus(); 60 61 let tabCreatedPromise = BrowserTestUtils.waitForEvent( 62 gBrowser.tabContainer, 63 "TabOpen" 64 ); 65 EventUtils.synthesizeKey("KEY_Enter"); 66 info("Waiting for tab being created"); 67 let { target: tab } = await tabCreatedPromise; 68 info("Got tab"); 69 let browser = tab.linkedBrowser; 70 if (!browser.currentURI || browser.currentURI.spec != "about:blank") { 71 info("Waiting for browser load"); 72 await BrowserTestUtils.browserLoaded(browser, false, "about:blank"); 73 } 74 is( 75 browser.currentURI && browser.currentURI.spec, 76 "about:blank", 77 "Tab with expected URL loaded." 78 ); 79 info("Waiting to remove tab"); 80 BrowserTestUtils.removeTab(tab); 81 BrowserTestUtils.removeTab(moztab); 82 });