tor-browser

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

browser_819510_perwindowpb.js (4759B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 // Test opening default mochitest-normal-private-normal-private windows
      5 // (saving the state with last window being private)
      6 
      7 requestLongerTimeout(2);
      8 
      9 add_task(async function test_1() {
     10  let win = await promiseNewWindowLoaded();
     11  await promiseTabLoad(win, "http://www.example.com/#1");
     12 
     13  win = await promiseNewWindowLoaded({ private: true });
     14  await promiseTabLoad(win, "http://www.example.com/#2");
     15 
     16  win = await promiseNewWindowLoaded();
     17  await promiseTabLoad(win, "http://www.example.com/#3");
     18 
     19  win = await promiseNewWindowLoaded({ private: true });
     20  await promiseTabLoad(win, "http://www.example.com/#4");
     21 
     22  let curState = JSON.parse(ss.getBrowserState());
     23  is(curState.windows.length, 5, "Browser has opened 5 windows");
     24  is(curState.windows[2].isPrivate, true, "Window is private");
     25  is(curState.windows[4].isPrivate, true, "Last window is private");
     26  is(curState.selectedWindow, 5, "Last window opened is the one selected");
     27 
     28  let state = JSON.parse(await promiseRecoveryFileContents());
     29 
     30  is(
     31    state.windows.length,
     32    2,
     33    "sessionstore state: 2 windows in data being written to disk"
     34  );
     35  is(
     36    state.selectedWindow,
     37    2,
     38    "Selected window is updated to match one of the saved windows"
     39  );
     40  ok(
     41    state.windows.every(win2 => !win2.isPrivate),
     42    "Saved windows are not private"
     43  );
     44  is(
     45    state._closedWindows.length,
     46    0,
     47    "sessionstore state: no closed windows in data being written to disk"
     48  );
     49 
     50  // Cleanup.
     51  await promiseAllButPrimaryWindowClosed();
     52  forgetClosedWindows();
     53 });
     54 
     55 // Test opening default mochitest window + 2 private windows
     56 add_task(async function test_2() {
     57  let win = await promiseNewWindowLoaded({ private: true });
     58  await promiseTabLoad(win, "http://www.example.com/#1");
     59 
     60  win = await promiseNewWindowLoaded({ private: true });
     61  await promiseTabLoad(win, "http://www.example.com/#2");
     62 
     63  let curState = JSON.parse(ss.getBrowserState());
     64  is(curState.windows.length, 3, "Browser has opened 3 windows");
     65  is(curState.windows[1].isPrivate, true, "Window 1 is private");
     66  is(curState.windows[2].isPrivate, true, "Window 2 is private");
     67  is(curState.selectedWindow, 3, "Last window opened is the one selected");
     68 
     69  let state = JSON.parse(await promiseRecoveryFileContents());
     70 
     71  is(
     72    state.windows.length,
     73    0,
     74    "sessionstore state: no window in data being written to disk"
     75  );
     76  is(
     77    state.selectedWindow,
     78    0,
     79    "Selected window updated to 0 given there are no saved windows"
     80  );
     81  is(
     82    state._closedWindows.length,
     83    0,
     84    "sessionstore state: no closed windows in data being written to disk"
     85  );
     86 
     87  // Cleanup.
     88  await promiseAllButPrimaryWindowClosed();
     89  forgetClosedWindows();
     90 });
     91 
     92 // Test opening default-normal-private-normal windows and closing a normal window
     93 add_task(async function test_3() {
     94  let normalWindow = await promiseNewWindowLoaded();
     95  await promiseTabLoad(normalWindow, "http://www.example.com/#1");
     96 
     97  let win = await promiseNewWindowLoaded({ private: true });
     98  await promiseTabLoad(win, "http://www.example.com/#2");
     99 
    100  win = await promiseNewWindowLoaded();
    101  await promiseTabLoad(win, "http://www.example.com/#3");
    102 
    103  let curState = JSON.parse(ss.getBrowserState());
    104  is(curState.windows.length, 4, "Browser has opened 4 windows");
    105  is(curState.windows[2].isPrivate, true, "Window 2 is private");
    106  is(curState.selectedWindow, 4, "Last window opened is the one selected");
    107 
    108  await BrowserTestUtils.closeWindow(normalWindow);
    109 
    110  // Pin and unpin a tab before checking the written state so that
    111  // the list of restoring windows gets cleared. Otherwise the
    112  // window we just closed would be marked as not closed.
    113  let tab = win.gBrowser.tabs[0];
    114  win.gBrowser.pinTab(tab);
    115  win.gBrowser.unpinTab(tab);
    116 
    117  let state = JSON.parse(await promiseRecoveryFileContents());
    118 
    119  is(
    120    state.windows.length,
    121    1,
    122    "sessionstore state: 1 window in data being written to disk"
    123  );
    124  is(
    125    state.selectedWindow,
    126    1,
    127    "Selected window is updated to match one of the saved windows"
    128  );
    129  ok(
    130    state.windows.every(win2 => !win2.isPrivate),
    131    "Saved windows are not private"
    132  );
    133  is(
    134    state._closedWindows.length,
    135    1,
    136    "sessionstore state: 1 closed window in data being written to disk"
    137  );
    138  ok(
    139    state._closedWindows.every(win2 => !win2.isPrivate),
    140    "Closed windows are not private"
    141  );
    142 
    143  // Cleanup.
    144  await promiseAllButPrimaryWindowClosed();
    145  forgetClosedWindows();
    146 });
    147 
    148 async function promiseTabLoad(win, url) {
    149  let tab = BrowserTestUtils.addTab(win.gBrowser, url);
    150  await promiseBrowserLoaded(tab.linkedBrowser);
    151  await TabStateFlusher.flush(tab.linkedBrowser);
    152 }