tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });