tor-browser

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

browser_privacy_syncDataClearing_v2.js (10149B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 /*
      5 * With no custom cleaning categories set and sanitizeOnShutdown disabled,
      6 * the checkboxes "alwaysClear" and "deleteOnClose" should share the same state.
      7 * The state of the cleaning categories cookiesAndStorage and cache should be in the state of the "deleteOnClose" box.
      8 */
      9 add_setup(async function () {
     10  await SpecialPowers.pushPrefEnv({
     11    set: [
     12      ["privacy.clearOnShutdown.cookies", true],
     13      ["privacy.sanitize.useOldClearHistoryDialog", false],
     14    ],
     15  });
     16 });
     17 
     18 add_task(async function test_syncWithoutCustomPrefs() {
     19  await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
     20    leaveOpen: true,
     21  });
     22 
     23  let document = gBrowser.contentDocument;
     24  let deleteOnCloseBox = document.getElementById("deleteOnClose");
     25  let alwaysClearBox = document.getElementById("alwaysClear");
     26 
     27  ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected");
     28  ok(!alwaysClearBox.checked, "AlwaysClear initial state is deselected");
     29 
     30  deleteOnCloseBox.click();
     31 
     32  // Wait for UI to update.
     33  await new Promise(resolve => requestAnimationFrame(resolve));
     34 
     35  ok(deleteOnCloseBox.checked, "DeleteOnClose is selected");
     36  is(
     37    deleteOnCloseBox.checked,
     38    alwaysClearBox.checked,
     39    "DeleteOnClose sets alwaysClear in the same state, selected"
     40  );
     41  ok(
     42    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
     43    "Cookie cleaning pref is set"
     44  );
     45  ok(
     46    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
     47    "Cache cleaning pref is set"
     48  );
     49  ok(
     50    Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
     51    "Old cookie cleaning pref is not changed"
     52  );
     53  ok(
     54    !Services.prefs.getBoolPref(
     55      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
     56    ),
     57    "History cleaning pref is not set"
     58  );
     59  ok(
     60    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
     61    "Site settings cleaning pref is not set"
     62  );
     63  ok(
     64    !Services.prefs.getBoolPref("privacy.clearOnShutdown.siteSettings"),
     65    "Old Site settings cleaning pref is not set"
     66  );
     67 
     68  deleteOnCloseBox.click();
     69 
     70  // Wait for UI to update.
     71  await new Promise(resolve => requestAnimationFrame(resolve));
     72 
     73  ok(!deleteOnCloseBox.checked, "DeleteOnClose is deselected");
     74  is(
     75    deleteOnCloseBox.checked,
     76    alwaysClearBox.checked,
     77    "DeleteOnclose sets alwaysClear in the same state, deselected"
     78  );
     79 
     80  ok(
     81    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
     82    "Cookie cleaning pref is reset"
     83  );
     84  ok(
     85    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
     86    "Cache cleaning pref is reset"
     87  );
     88  ok(
     89    Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
     90    "Old cookie cleaning pref is not changed"
     91  );
     92  ok(
     93    !Services.prefs.getBoolPref(
     94      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
     95    ),
     96    "History cleaning pref is not set"
     97  );
     98  ok(
     99    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
    100    "Site settings cleaning pref is not set"
    101  );
    102 
    103  BrowserTestUtils.removeTab(gBrowser.selectedTab);
    104  Services.prefs.clearUserPref(
    105    "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
    106  );
    107  Services.prefs.clearUserPref("privacy.clearOnShutdown_v2.siteSettings");
    108  Services.prefs.clearUserPref("privacy.clearOnShutdown_v2.cache");
    109  Services.prefs.clearUserPref("privacy.clearOnShutdown_v2.cookiesAndStorage");
    110  Services.prefs.clearUserPref("privacy.sanitize.sanitizeOnShutdown");
    111 });
    112 
    113 /*
    114 * With custom cleaning category already set and SanitizeOnShutdown enabled,
    115 * deselecting "deleteOnClose" should not change the state of "alwaysClear".
    116 * The state of the cleaning categories cookiesAndStorage and cache should be in the state of the "deleteOnClose" box.
    117 */
    118 add_task(async function test_syncWithCustomPrefs() {
    119  await SpecialPowers.pushPrefEnv({
    120    set: [
    121      ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true],
    122      ["privacy.clearOnShutdown.history", false],
    123      ["privacy.clearOnShutdown_v2.siteSettings", true],
    124      ["privacy.sanitize.sanitizeOnShutdown", true],
    125    ],
    126  });
    127 
    128  await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
    129    leaveOpen: true,
    130  });
    131 
    132  let document = gBrowser.contentDocument;
    133  let deleteOnCloseBox = document.getElementById("deleteOnClose");
    134  let alwaysClearBox = document.getElementById("alwaysClear");
    135 
    136  ok(deleteOnCloseBox.checked, "DeleteOnClose initial state is selected");
    137  ok(alwaysClearBox.checked, "AlwaysClear initial state is selected");
    138 
    139  is(
    140    deleteOnCloseBox.checked,
    141    alwaysClearBox.checked,
    142    "AlwaysClear and deleteOnClose are in the same state, selected"
    143  );
    144  ok(
    145    Services.prefs.getBoolPref(
    146      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
    147    ),
    148    "History cleaning pref is still set"
    149  );
    150  ok(
    151    !Services.prefs.getBoolPref("privacy.clearOnShutdown.history"),
    152    "Old history cleaning pref is not changed"
    153  );
    154  ok(
    155    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
    156    "Site settings cleaning pref is still set"
    157  );
    158 
    159  ok(
    160    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
    161    "Cookie cleaning pref is set"
    162  );
    163  ok(
    164    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
    165    "Cache cleaning pref is set"
    166  );
    167 
    168  deleteOnCloseBox.click();
    169 
    170  // Wait for UI to update.
    171  await new Promise(resolve => requestAnimationFrame(resolve));
    172 
    173  ok(!deleteOnCloseBox.checked, "DeleteOnClose is deselected");
    174  is(
    175    !deleteOnCloseBox.checked,
    176    alwaysClearBox.checked,
    177    "AlwaysClear is not synced with deleteOnClose, only deleteOnClose is deselected"
    178  );
    179 
    180  ok(
    181    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
    182    "Cookie cleaning pref is reset"
    183  );
    184  ok(
    185    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
    186    "Cache cleaning pref is reset"
    187  );
    188  ok(
    189    Services.prefs.getBoolPref(
    190      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
    191    ),
    192    "History cleaning pref is still set"
    193  );
    194  ok(
    195    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
    196    "Site settings cleaning pref is still set"
    197  );
    198 
    199  BrowserTestUtils.removeTab(gBrowser.selectedTab);
    200  await SpecialPowers.popPrefEnv();
    201 });
    202 
    203 /*
    204 * Setting/resetting cleaning prefs for cookies, cache, offline apps
    205 * and selecting/deselecting the "alwaysClear" Box, also selects/deselects
    206 * the "deleteOnClose" box.
    207 */
    208 
    209 add_task(async function test_syncWithCustomPrefs() {
    210  await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
    211    leaveOpen: true,
    212  });
    213 
    214  let document = gBrowser.contentDocument;
    215  let deleteOnCloseBox = document.getElementById("deleteOnClose");
    216  let alwaysClearBox = document.getElementById("alwaysClear");
    217 
    218  ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected");
    219  ok(!alwaysClearBox.checked, "AlwaysClear initial state is deselected");
    220 
    221  await SpecialPowers.pushPrefEnv({
    222    set: [
    223      ["privacy.clearOnShutdown_v2.cookiesAndStorage", true],
    224      ["privacy.clearOnShutdown_v2.cache", true],
    225      ["privacy.sanitize.sanitizeOnShutdown", true],
    226    ],
    227  });
    228 
    229  ok(alwaysClearBox.checked, "AlwaysClear is selected");
    230  is(
    231    deleteOnCloseBox.checked,
    232    alwaysClearBox.checked,
    233    "AlwaysClear and deleteOnClose are in the same state, selected"
    234  );
    235 
    236  alwaysClearBox.click();
    237 
    238  // Wait for UI to update.
    239  await new Promise(resolve => requestAnimationFrame(resolve));
    240 
    241  ok(!alwaysClearBox.checked, "AlwaysClear is deselected");
    242  is(
    243    deleteOnCloseBox.checked,
    244    alwaysClearBox.checked,
    245    "AlwaysClear and deleteOnClose are in the same state, deselected"
    246  );
    247 
    248  BrowserTestUtils.removeTab(gBrowser.selectedTab);
    249  await SpecialPowers.popPrefEnv();
    250 });
    251 
    252 /*
    253 * On loading the page, the ClearOnClose box should be set according to the pref selection
    254 */
    255 add_task(async function test_initialState() {
    256  await SpecialPowers.pushPrefEnv({
    257    set: [
    258      ["privacy.clearOnShutdown_v2.cookiesAndStorage", true],
    259      ["privacy.clearOnShutdown_v2.cache", true],
    260      ["privacy.sanitize.sanitizeOnShutdown", true],
    261    ],
    262  });
    263 
    264  await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
    265    leaveOpen: true,
    266  });
    267 
    268  let document = gBrowser.contentDocument;
    269  let deleteOnCloseBox = document.getElementById("deleteOnClose");
    270 
    271  ok(
    272    deleteOnCloseBox.checked,
    273    "DeleteOnClose is set accordingly to the prefs, selected"
    274  );
    275 
    276  BrowserTestUtils.removeTab(gBrowser.selectedTab);
    277 
    278  await SpecialPowers.pushPrefEnv({
    279    set: [
    280      ["privacy.clearOnShutdown_v2.cookiesAndStorage", false],
    281      ["privacy.clearOnShutdown_v2.cache", false],
    282      ["privacy.sanitize.sanitizeOnShutdown", true],
    283      ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true],
    284    ],
    285  });
    286 
    287  await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
    288    leaveOpen: true,
    289  });
    290 
    291  document = gBrowser.contentDocument;
    292  deleteOnCloseBox = document.getElementById("deleteOnClose");
    293 
    294  ok(
    295    !deleteOnCloseBox.checked,
    296    "DeleteOnClose is set accordingly to the prefs, deselected"
    297  );
    298 
    299  BrowserTestUtils.removeTab(gBrowser.selectedTab);
    300 
    301  // When private browsing mode autostart is selected, the deleteOnClose Box is selected always
    302  await SpecialPowers.pushPrefEnv({
    303    set: [
    304      ["privacy.clearOnShutdown_v2.cookiesAndStorage", false],
    305      ["privacy.clearOnShutdown_v2.cache", false],
    306      ["privacy.sanitize.sanitizeOnShutdown", false],
    307      ["browser.privatebrowsing.autostart", true],
    308    ],
    309  });
    310 
    311  await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
    312    leaveOpen: true,
    313  });
    314 
    315  document = gBrowser.contentDocument;
    316  deleteOnCloseBox = document.getElementById("deleteOnClose");
    317 
    318  ok(
    319    deleteOnCloseBox.checked,
    320    "DeleteOnClose is set accordingly to the private Browsing autostart pref, selected"
    321  );
    322 
    323  // Reset history mode
    324  await SpecialPowers.popPrefEnv();
    325  gBrowser.contentWindow.Preferences.getSetting("historyMode").value =
    326    "remember";
    327  BrowserTestUtils.removeTab(gBrowser.selectedTab);
    328 });