toolkit/mozapps/extensions/test/xpcshell/test_no_addons.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/
     3  */
     5 // Test startup and restart when no add-ons are installed
     6 // bug 944006
     8 Components.utils.import("resource://gre/modules/Promise.jsm");
    10 // Load XPI Provider to get schema version ID
    11 let XPIScope = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm");
    12 const DB_SCHEMA = XPIScope.DB_SCHEMA;
    14 createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
    16 function run_test() {
    17   // Kick off the task-based tests...
    18   run_next_test();
    19 }
    21 // Test for a preference to either exist with a specified value, or not exist at all
    22 function checkPending() {
    23   try {
    24     do_check_false(Services.prefs.getBoolPref("extensions.pendingOperations"));
    25   }
    26   catch (e) {
    27     // OK
    28   }
    29 }
    31 function checkString(aPref, aValue) {
    32   try {
    33     do_check_eq(Services.prefs.getCharPref(aPref), aValue)
    34   }
    35   catch (e) {
    36     //OK
    37   }
    38 }
    40 // Make sure all our extension state is empty/nonexistent
    41 function check_empty_state() {
    42   do_check_false(gExtensionsJSON.exists());
    43   do_check_false(gExtensionsINI.exists());
    45   do_check_eq(Services.prefs.getIntPref("extensions.databaseSchema"), DB_SCHEMA);
    47   checkString("extensions.bootstrappedAddons", "{}");
    48   checkString("extensions.installCache", "[]");
    49   checkPending();
    50 }
    52 // After first run with no add-ons, we expect:
    53 // no extensions.json is created
    54 // no extensions.ini
    55 // database schema version preference is set
    56 // bootstrap add-ons preference is not found
    57 // add-on directory state preference is an empty array
    58 // no pending operations
    59 add_task(function first_run() {
    60   startupManager();
    61   check_empty_state();
    62   yield true;
    63 });
    65 // Now do something that causes a DB load, and re-check
    66 function trigger_db_load() {
    67   let addonDefer = Promise.defer();
    68   AddonManager.getAddonsByTypes(['extension'], addonDefer.resolve);
    69   let addonList = yield addonDefer.promise;
    71   do_check_eq(addonList.length, 0);
    72   check_empty_state();
    74   yield true;
    75 };
    76 add_task(trigger_db_load);
    78 // Now restart the manager and check again
    79 add_task(function restart_and_recheck() {
    80   restartManager();
    81   check_empty_state();
    82   yield true;
    83 });
    85 // and reload the DB again
    86 add_task(trigger_db_load);
    88 // When we start up with no DB and an old database schema, we should update the
    89 // schema number but not create a database
    90 add_task(function upgrade_schema_version() {
    91   shutdownManager();
    92   Services.prefs.setIntPref("extensions.databaseSchema", 1);
    94   startupManager();
    95   do_check_eq(Services.prefs.getIntPref("extensions.databaseSchema"), DB_SCHEMA);
    96   check_empty_state();
    97 });

mercurial