tor-browser

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

browser_393716.js (2755B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const URL = "about:config";
      7 
      8 add_setup(async function () {
      9  // Make sure that the field of which we restore the state is visible on load.
     10  await SpecialPowers.pushPrefEnv({
     11    set: [["browser.aboutConfig.showWarning", false]],
     12  });
     13 });
     14 
     15 /**
     16 * Bug 393716 - Basic tests for getTabState(), setTabState(), and duplicateTab().
     17 */
     18 add_task(async function test_set_tabstate() {
     19  let key = "Unique key: " + Date.now();
     20  let value = "Unique value: " + Math.random();
     21 
     22  // create a new tab
     23  let tab = BrowserTestUtils.addTab(gBrowser, URL);
     24  ss.setCustomTabValue(tab, key, value);
     25  await promiseBrowserLoaded(tab.linkedBrowser);
     26 
     27  // get the tab's state
     28  await TabStateFlusher.flush(tab.linkedBrowser);
     29  let state = ss.getTabState(tab);
     30  ok(state, "get the tab's state");
     31 
     32  // verify the tab state's integrity
     33  state = JSON.parse(state);
     34  ok(
     35    state instanceof Object &&
     36      state.entries instanceof Array &&
     37      !!state.entries.length,
     38    "state object seems valid"
     39  );
     40  ok(
     41    state.entries.length == 1 && state.entries[0].url == URL,
     42    "Got the expected state object (test URL)"
     43  );
     44  ok(
     45    state.extData && state.extData[key] == value,
     46    "Got the expected state object (test manually set tab value)"
     47  );
     48 
     49  // clean up
     50  gBrowser.removeTab(tab);
     51 });
     52 
     53 add_task(async function test_set_tabstate_and_duplicate() {
     54  let key2 = "key2";
     55  let value2 = "Value " + Math.random();
     56  let value3 = "Another value: " + Date.now();
     57  let state = {
     58    entries: [{ url: URL, triggeringPrincipal_base64 }],
     59    extData: { key2: value2 },
     60  };
     61 
     62  // create a new tab
     63  let tab = BrowserTestUtils.addTab(gBrowser);
     64  // set the tab's state
     65  ss.setTabState(tab, JSON.stringify(state));
     66  await promiseBrowserLoaded(tab.linkedBrowser);
     67 
     68  // verify the correctness of the restored tab
     69  ok(
     70    ss.getCustomTabValue(tab, key2) == value2 &&
     71      tab.linkedBrowser.currentURI.spec == URL,
     72    "the tab's state was correctly restored"
     73  );
     74 
     75  // add text data
     76  await setPropertyOfFormField(
     77    tab.linkedBrowser,
     78    "#about-config-search",
     79    "value",
     80    value3
     81  );
     82 
     83  // duplicate the tab
     84  let tab2 = ss.duplicateTab(window, tab);
     85  await promiseTabRestored(tab2);
     86 
     87  // verify the correctness of the duplicated tab
     88  ok(
     89    ss.getCustomTabValue(tab2, key2) == value2 &&
     90      tab2.linkedBrowser.currentURI.spec == URL,
     91    "correctly duplicated the tab's state"
     92  );
     93  let textbox = await getPropertyOfFormField(
     94    tab2.linkedBrowser,
     95    "#about-config-search",
     96    "value"
     97  );
     98  is(textbox, value3, "also duplicated text data");
     99 
    100  // clean up
    101  gBrowser.removeTab(tab2);
    102  gBrowser.removeTab(tab);
    103 });