tor-browser

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

browser_sanitizeOnShutdown_migration.js (18941B)


      1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* vim:set ts=2 sw=2 sts=2 et: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 add_setup(async function () {
      8  await SpecialPowers.pushPrefEnv({
      9    set: [["privacy.sanitize.useOldClearHistoryDialog", false]],
     10  });
     11 });
     12 
     13 // Test checking "clear cookies and site data when firefox shuts down" does a migration
     14 // before making any pref changes (Bug 1894933)
     15 add_task(async function testMigrationForDeleteOnClose() {
     16  await SpecialPowers.pushPrefEnv({
     17    set: [
     18      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
     19      ["privacy.sanitize.sanitizeOnShutdown", false],
     20      ["privacy.clearOnShutdown_v2.cookiesAndStorage", true],
     21      ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true],
     22      ["privacy.clearOnShutdown_v2.siteSettings", false],
     23      ["privacy.clearOnShutdown_v2.cache", false],
     24    ],
     25  });
     26 
     27  // open privacy settings
     28  await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
     29    leaveOpen: true,
     30  });
     31 
     32  let document = gBrowser.contentDocument;
     33  let deleteOnCloseBox = document.getElementById("deleteOnClose");
     34  ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected");
     35 
     36  let alwaysClearBox = document.getElementById("alwaysClear");
     37  ok(!alwaysClearBox.checked, "AlwaysClear initial state is deselected");
     38 
     39  deleteOnCloseBox.click();
     40  // Wait for change to take effect.
     41  await new Promise(resolve => requestAnimationFrame(resolve));
     42 
     43  ok(deleteOnCloseBox.checked, "DeleteOnClose is selected");
     44  is(
     45    deleteOnCloseBox.checked,
     46    alwaysClearBox.checked,
     47    "DeleteOnClose sets alwaysClear in the same state, selected"
     48  );
     49  // We are done changing settings in about:preferences, remove the tab
     50  BrowserTestUtils.removeTab(gBrowser.selectedTab);
     51  // Open the clear on shutdown preferences dialog
     52  let dh = new ClearHistoryDialogHelper({ mode: "clearOnShutdown" });
     53  dh.onload = function () {
     54    is(
     55      Services.prefs.getBoolPref(
     56        "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
     57      ),
     58      false,
     59      "History pref should flip to false"
     60    );
     61    is(
     62      Services.prefs.getBoolPref(
     63        "privacy.clearOnShutdown_v2.cookiesAndStorage"
     64      ),
     65      true,
     66      "Cookies pref should remain true"
     67    );
     68    is(
     69      Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
     70      true,
     71      "Cache pref should flip to true"
     72    );
     73    is(
     74      Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
     75      false,
     76      "Site settings should remain false"
     77    );
     78    this.cancelDialog();
     79  };
     80  dh.open();
     81  await dh.promiseClosed;
     82 });
     83 
     84 // Test removal of the old pref privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs
     85 add_task(async function testOldPrefRemoval() {
     86  await SpecialPowers.pushPrefEnv({
     87    set: [
     88      ["privacy.clearOnShutdown.history", true],
     89      ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", false],
     90      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
     91      ["privacy.sanitize.cpd.hasMigratedToNewPrefs3", false],
     92    ],
     93  });
     94 
     95  // Add the old prefs to indicate that a migration was done before
     96  Services.prefs.setBoolPref(
     97    "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs",
     98    true
     99  );
    100  Services.prefs.setBoolPref(
    101    "privacy.sanitize.cpd.hasMigratedToNewPrefs",
    102    true
    103  );
    104  Services.prefs.setBoolPref(
    105    "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs2",
    106    true
    107  );
    108  Services.prefs.setBoolPref(
    109    "privacy.sanitize.cpd.hasMigratedToNewPrefs2",
    110    true
    111  );
    112 
    113  is(
    114    Services.prefs.getPrefType(
    115      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs"
    116    ),
    117    Services.prefs.PREF_BOOL,
    118    "Old migration pref should exist"
    119  );
    120 
    121  is(
    122    Services.prefs.getPrefType("privacy.sanitize.cpd.hasMigratedToNewPrefs"),
    123    Services.prefs.PREF_BOOL,
    124    "Old migration pref should exist"
    125  );
    126 
    127  is(
    128    Services.prefs.getPrefType(
    129      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs2"
    130    ),
    131    Services.prefs.PREF_BOOL,
    132    "Old migration pref should exist"
    133  );
    134 
    135  is(
    136    Services.prefs.getPrefType("privacy.sanitize.cpd.hasMigratedToNewPrefs2"),
    137    Services.prefs.PREF_BOOL,
    138    "Old migration pref should exist"
    139  );
    140 
    141  Sanitizer.maybeMigratePrefs("clearOnShutdown");
    142 
    143  is(
    144    Services.prefs.getPrefType(
    145      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs"
    146    ),
    147    Services.prefs.PREF_INVALID,
    148    "Old clearonshutdown migration pref should not exist anymore"
    149  );
    150 
    151  is(
    152    Services.prefs.getPrefType(
    153      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs2"
    154    ),
    155    Services.prefs.PREF_BOOL,
    156    "Old clearonshutdown migration pref should still exist"
    157  );
    158 
    159  ok(
    160    Services.prefs.getBoolPref(
    161      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    162    ),
    163    "Migration should be reflected on new clearonshutdown pref"
    164  );
    165 
    166  ok(
    167    Services.prefs.getBoolPref(
    168      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
    169    ),
    170    "History should be flipped to true after migrating"
    171  );
    172 
    173  Sanitizer.maybeMigratePrefs("cpd");
    174 
    175  is(
    176    Services.prefs.getPrefType("privacy.sanitize.cpd.hasMigratedToNewPrefs"),
    177    Services.prefs.PREF_INVALID,
    178    "old cpd migration pref should not exist anymore"
    179  );
    180 
    181  is(
    182    Services.prefs.getPrefType("privacy.sanitize.cpd.hasMigratedToNewPrefs2"),
    183    Services.prefs.PREF_BOOL,
    184    "old cpd migration pref should still exist"
    185  );
    186 
    187  ok(
    188    Services.prefs.getBoolPref("privacy.sanitize.cpd.hasMigratedToNewPrefs3"),
    189    "Migration should be reflected on new cpd pref"
    190  );
    191 });
    192 
    193 add_task(async function testMigrationOfCacheAndSiteSettings() {
    194  await SpecialPowers.pushPrefEnv({
    195    set: [
    196      ["privacy.clearOnShutdown.cache", true],
    197      ["privacy.clearOnShutdown.siteSettings", true],
    198      ["privacy.clearOnShutdown_v2.cache", false],
    199      ["privacy.clearOnShutdown_v2.siteSettings", false],
    200      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
    201    ],
    202  });
    203 
    204  Sanitizer.runSanitizeOnShutdown();
    205 
    206  ok(
    207    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
    208    "Cache should be set to true"
    209  );
    210  ok(
    211    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
    212    "siteSettings should be set to true"
    213  );
    214  ok(
    215    Services.prefs.getBoolPref("privacy.clearOnShutdown.cache"),
    216    "old cache should remain true"
    217  );
    218  ok(
    219    Services.prefs.getBoolPref("privacy.clearOnShutdown.siteSettings"),
    220    "old siteSettings should remain true"
    221  );
    222 
    223  ok(
    224    Services.prefs.getBoolPref(
    225      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    226    ),
    227    "migration pref has been flipped"
    228  );
    229 });
    230 
    231 add_task(async function testHistoryAndFormData_historyTrue() {
    232  await SpecialPowers.pushPrefEnv({
    233    set: [
    234      ["privacy.clearOnShutdown.history", true],
    235      ["privacy.clearOnShutdown.formdata", false],
    236      ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", false],
    237      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
    238    ],
    239  });
    240 
    241  Sanitizer.runSanitizeOnShutdown();
    242 
    243  ok(
    244    Services.prefs.getBoolPref(
    245      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
    246    ),
    247    "browsingHistoryAndDownloads should be set to true"
    248  );
    249  ok(
    250    Services.prefs.getBoolPref("privacy.clearOnShutdown.history"),
    251    "old history pref should remain true"
    252  );
    253  ok(
    254    !Services.prefs.getBoolPref("privacy.clearOnShutdown.formdata"),
    255    "old formdata pref should remain false"
    256  );
    257 
    258  ok(
    259    Services.prefs.getBoolPref(
    260      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    261    ),
    262    "migration pref has been flipped"
    263  );
    264 });
    265 
    266 add_task(async function testHistoryAndDownloads_historyFalse() {
    267  await SpecialPowers.pushPrefEnv({
    268    set: [
    269      ["privacy.clearOnShutdown.history", false],
    270      ["privacy.clearOnShutdown.formdata", true],
    271      ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true],
    272      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
    273    ],
    274  });
    275 
    276  Sanitizer.runSanitizeOnShutdown();
    277 
    278  ok(
    279    !Services.prefs.getBoolPref(
    280      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
    281    ),
    282    "browsingHistoryAndDownloads should be set to false"
    283  );
    284  ok(
    285    !Services.prefs.getBoolPref("privacy.clearOnShutdown.history"),
    286    "old history pref should remain false"
    287  );
    288  ok(
    289    Services.prefs.getBoolPref("privacy.clearOnShutdown.formdata"),
    290    "old formdata pref should remain true"
    291  );
    292 
    293  ok(
    294    Services.prefs.getBoolPref(
    295      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    296    ),
    297    "migration pref has been flipped"
    298  );
    299 });
    300 
    301 add_task(async function testFormData_historyFalse() {
    302  await SpecialPowers.pushPrefEnv({
    303    set: [
    304      ["privacy.clearOnShutdown_v2.historyFormDataAndDownloads", false],
    305      ["privacy.clearOnShutdown_v2.formdata", true],
    306      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
    307    ],
    308  });
    309 
    310  Sanitizer.runSanitizeOnShutdown();
    311 
    312  ok(
    313    !Services.prefs.getBoolPref(
    314      "privacy.clearOnShutdown_v2.historyFormDataAndDownloads"
    315    ),
    316    "historyFormDataAndDownloads should still be false"
    317  );
    318  ok(
    319    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.formdata"),
    320    "old history pref should be set to true"
    321  );
    322 
    323  ok(
    324    Services.prefs.getBoolPref(
    325      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    326    ),
    327    "migration pref has been flipped"
    328  );
    329 });
    330 
    331 add_task(async function testCookiesAndStorage_cookiesFalse() {
    332  await SpecialPowers.pushPrefEnv({
    333    set: [
    334      ["privacy.clearOnShutdown.cookies", false],
    335      ["privacy.clearOnShutdown.offlineApps", true],
    336      ["privacy.clearOnShutdown.sessions", true],
    337      ["privacy.clearOnShutdown_v2.cookiesAndStorage", true],
    338      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
    339    ],
    340  });
    341 
    342  // Simulate clearing on shutdown.
    343  Sanitizer.runSanitizeOnShutdown();
    344 
    345  ok(
    346    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
    347    "cookiesAndStorage should be set to false"
    348  );
    349  ok(
    350    !Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
    351    "old cookies pref should remain false"
    352  );
    353  ok(
    354    Services.prefs.getBoolPref("privacy.clearOnShutdown.offlineApps"),
    355    "old offlineApps pref should remain true"
    356  );
    357  ok(
    358    Services.prefs.getBoolPref("privacy.clearOnShutdown.sessions"),
    359    "old sessions pref should remain true"
    360  );
    361 
    362  ok(
    363    Services.prefs.getBoolPref(
    364      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    365    ),
    366    "migration pref has been flipped"
    367  );
    368 });
    369 
    370 add_task(async function testCookiesAndStorage_cookiesTrue() {
    371  await SpecialPowers.pushPrefEnv({
    372    set: [
    373      ["privacy.clearOnShutdown.cookies", true],
    374      ["privacy.clearOnShutdown.offlineApps", false],
    375      ["privacy.clearOnShutdown.sessions", false],
    376      ["privacy.clearOnShutdown_v2.cookiesAndStorage", false],
    377      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
    378    ],
    379  });
    380 
    381  Sanitizer.runSanitizeOnShutdown();
    382 
    383  ok(
    384    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
    385    "cookiesAndStorage should be set to true"
    386  );
    387  ok(
    388    Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
    389    "old cookies pref should remain true"
    390  );
    391  ok(
    392    !Services.prefs.getBoolPref("privacy.clearOnShutdown.offlineApps"),
    393    "old offlineApps pref should remain false"
    394  );
    395  ok(
    396    !Services.prefs.getBoolPref("privacy.clearOnShutdown.sessions"),
    397    "old sessions pref should remain false"
    398  );
    399 
    400  ok(
    401    Services.prefs.getBoolPref(
    402      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    403    ),
    404    "migration pref has been flipped"
    405  );
    406 });
    407 
    408 add_task(async function testMigrationDoesNotRepeat() {
    409  await SpecialPowers.pushPrefEnv({
    410    set: [
    411      ["privacy.clearOnShutdown.cookies", true],
    412      ["privacy.clearOnShutdown.offlineApps", false],
    413      ["privacy.clearOnShutdown.sessions", false],
    414      ["privacy.clearOnShutdown_v2.cookiesAndStorage", false],
    415      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", true],
    416    ],
    417  });
    418 
    419  // Simulate clearing on shutdown.
    420  Sanitizer.runSanitizeOnShutdown();
    421 
    422  ok(
    423    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
    424    "cookiesAndStorage should remain false"
    425  );
    426  ok(
    427    Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
    428    "old cookies pref should remain true"
    429  );
    430  ok(
    431    !Services.prefs.getBoolPref("privacy.clearOnShutdown.offlineApps"),
    432    "old offlineApps pref should remain false"
    433  );
    434  ok(
    435    !Services.prefs.getBoolPref("privacy.clearOnShutdown.sessions"),
    436    "old sessions pref should remain false"
    437  );
    438 
    439  ok(
    440    Services.prefs.getBoolPref(
    441      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    442    ),
    443    "migration pref has been flipped"
    444  );
    445 });
    446 
    447 add_task(async function ensureNoOldPrefsAreEffectedByMigration() {
    448  await SpecialPowers.pushPrefEnv({
    449    set: [
    450      ["privacy.clearOnShutdown.history", true],
    451      ["privacy.clearOnShutdown.formdata", true],
    452      ["privacy.clearOnShutdown.cookies", true],
    453      ["privacy.clearOnShutdown.offlineApps", false],
    454      ["privacy.clearOnShutdown.sessions", false],
    455      ["privacy.clearOnShutdown.siteSettings", true],
    456      ["privacy.clearOnShutdown.cache", true],
    457      ["privacy.clearOnShutdown_v2.cookiesAndStorage", false],
    458      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
    459    ],
    460  });
    461 
    462  Sanitizer.runSanitizeOnShutdown();
    463 
    464  ok(
    465    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
    466    "cookiesAndStorage should become true"
    467  );
    468  ok(
    469    Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
    470    "old cookies pref should remain true"
    471  );
    472  ok(
    473    !Services.prefs.getBoolPref("privacy.clearOnShutdown.offlineApps"),
    474    "old offlineApps pref should remain false"
    475  );
    476  ok(
    477    !Services.prefs.getBoolPref("privacy.clearOnShutdown.sessions"),
    478    "old sessions pref should remain false"
    479  );
    480  ok(
    481    Services.prefs.getBoolPref("privacy.clearOnShutdown.history"),
    482    "old history pref should remain true"
    483  );
    484  ok(
    485    Services.prefs.getBoolPref("privacy.clearOnShutdown.formdata"),
    486    "old formdata pref should remain true"
    487  );
    488 });
    489 
    490 add_task(async function ensureOldPrefsTrueDontInfluenceV2ToV3Migration() {
    491  // Verify that no true value from v1 prefs spill over to v2 prefs when
    492  // hasMigratedToNewPrefs2 migration already happend.
    493  await SpecialPowers.pushPrefEnv({
    494    set: [
    495      // v1 prefs
    496      ["privacy.clearOnShutdown.history", true],
    497      ["privacy.clearOnShutdown.formdata", true],
    498      ["privacy.clearOnShutdown.cookies", true],
    499      ["privacy.clearOnShutdown.offlineApps", true],
    500      ["privacy.clearOnShutdown.sessions", true],
    501      ["privacy.clearOnShutdown.siteSettings", true],
    502      ["privacy.clearOnShutdown.cache", true],
    503      // v2 prefs
    504      ["privacy.clearOnShutdown_v2.historyFormDataAndDownloads", false],
    505      // shared v2 and v3 prefs
    506      ["privacy.clearOnShutdown_v2.cache", false],
    507      ["privacy.clearOnShutdown_v2.cookiesAndStorage", false],
    508      ["privacy.clearOnShutdown_v2.siteSettings", false],
    509      // v3 prefs
    510      ["privacy.clearOnShutdown_v2.formdata", true],
    511      ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true],
    512 
    513      // migration state prefs
    514      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs2", true],
    515      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
    516    ],
    517  });
    518 
    519  Sanitizer.runSanitizeOnShutdown();
    520 
    521  // verify that unmigrated prefs are unaffected
    522  ok(
    523    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
    524    "cache shouldn't be migrated v2 to v3"
    525  );
    526  ok(
    527    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
    528    "cookiesAndStorage shouldn't be migrated v2 to v3"
    529  );
    530  ok(
    531    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
    532    "cookiesAndStorage shouldn't be migrated v2 to v3"
    533  );
    534  // verify that v3 prefs got migrated
    535  ok(
    536    !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.formdata"),
    537    "formdata should be migrated from v2 pref"
    538  );
    539  ok(
    540    !Services.prefs.getBoolPref(
    541      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
    542    ),
    543    "browsingHistoryAndDownloads should be migrated from v2 pref"
    544  );
    545  ok(
    546    Services.prefs.getBoolPref(
    547      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    548    ),
    549    "migration to v3 ran"
    550  );
    551 });
    552 
    553 add_task(async function ensureOldPrefsFalseDontInfluenceV2ToV3Migration() {
    554  // Verify that no false value from v1 prefs spill over to v2 prefs when
    555  // hasMigratedToNewPrefs2 migration already happend.
    556  await SpecialPowers.pushPrefEnv({
    557    set: [
    558      // v1 prefs
    559      ["privacy.clearOnShutdown.history", false],
    560      ["privacy.clearOnShutdown.formdata", false],
    561      ["privacy.clearOnShutdown.cookies", false],
    562      ["privacy.clearOnShutdown.offlineApps", false],
    563      ["privacy.clearOnShutdown.sessions", false],
    564      ["privacy.clearOnShutdown.siteSettings", false],
    565      ["privacy.clearOnShutdown.cache", false],
    566      // v2 prefs
    567      ["privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true],
    568      // shared v2 and v3 prefs
    569      ["privacy.clearOnShutdown_v2.cache", true],
    570      ["privacy.clearOnShutdown_v2.cookiesAndStorage", true],
    571      ["privacy.clearOnShutdown_v2.siteSettings", true],
    572      // v3 prefs
    573      ["privacy.clearOnShutdown_v2.formdata", false],
    574      ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", false],
    575 
    576      // migration state prefs
    577      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs2", true],
    578      ["privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3", false],
    579    ],
    580  });
    581 
    582  Sanitizer.runSanitizeOnShutdown();
    583 
    584  // verify that unmigrated prefs are unaffected
    585  ok(
    586    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
    587    "cache shouldn't be migrated v2 to v3"
    588  );
    589  ok(
    590    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
    591    "cookiesAndStorage shouldn't be migrated v2 to v3"
    592  );
    593  ok(
    594    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
    595    "cookiesAndStorage shouldn't be migrated v2 to v3"
    596  );
    597  // verify that v3 prefs got migrated
    598  ok(
    599    Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.formdata"),
    600    "formdata should be migrated from v2 pref"
    601  );
    602  ok(
    603    Services.prefs.getBoolPref(
    604      "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads"
    605    ),
    606    "browsingHistoryAndDownloads should be migrated from v2 pref"
    607  );
    608 
    609  ok(
    610    Services.prefs.getBoolPref(
    611      "privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs3"
    612    ),
    613    "migration to v3 ran"
    614  );
    615 });