toolkit/mozapps/extensions/test/xpcshell/test_cacheflush.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 // This verifies that flushing the zipreader cache happens when appropriate
     7 var gExpectedFile = null;
     8 var gCacheFlushed = false;
    10 var CacheFlushObserver = {
    11   observe: function(aSubject, aTopic, aData) {
    12     if (aTopic != "flush-cache-entry")
    13       return;
    15     do_check_true(gExpectedFile != null);
    16     do_check_true(aSubject instanceof AM_Ci.nsIFile);
    17     do_check_eq(aSubject.path, gExpectedFile.path);
    18     gCacheFlushed = true;
    19     gExpectedFile = null;
    20   }
    21 };
    23 function run_test() {
    24   // This test only makes sense when leaving extensions packed
    25   if (Services.prefs.getBoolPref("extensions.alwaysUnpack"))
    26     return;
    28   do_test_pending();
    29   Services.obs.addObserver(CacheFlushObserver, "flush-cache-entry", false);
    30   createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "2");
    32   startupManager();
    34   run_test_1();
    35 }
    37 // Tests that the cache is flushed when cancelling a pending install
    38 function run_test_1() {
    39   AddonManager.getInstallForFile(do_get_addon("test_cacheflush1"), function(aInstall) {
    40     completeAllInstalls([aInstall], function() {
    41       // We should flush the staged XPI when cancelling the install
    42       gExpectedFile = gProfD.clone();
    43       gExpectedFile.append("extensions");
    44       gExpectedFile.append("staged");
    45       gExpectedFile.append("addon1@tests.mozilla.org.xpi");
    46       aInstall.cancel();
    48       do_check_true(gCacheFlushed);
    49       gCacheFlushed = false;
    51       run_test_2();
    52     });
    53   });
    54 }
    56 // Tests that the cache is flushed when uninstalling an add-on
    57 function run_test_2() {
    58   installAllFiles([do_get_addon("test_cacheflush1")], function() {
    59     // Installing will flush the staged XPI during startup
    60     gExpectedFile = gProfD.clone();
    61     gExpectedFile.append("extensions");
    62     gExpectedFile.append("staged");
    63     gExpectedFile.append("addon1@tests.mozilla.org.xpi");
    64     restartManager();
    65     do_check_true(gCacheFlushed);
    66     gCacheFlushed = false;
    68     AddonManager.getAddonByID("addon1@tests.mozilla.org", function(a1) {
    69       // We should flush the installed XPI when uninstalling
    70       gExpectedFile = gProfD.clone();
    71       gExpectedFile.append("extensions");
    72       gExpectedFile.append("addon1@tests.mozilla.org.xpi");
    74       do_check_true(a1 != null);
    75       a1.uninstall();
    76       do_check_false(gCacheFlushed);
    77       do_execute_soon(run_test_3);
    78     });
    79   });
    80 }
    82 // Tests that the cache is flushed when installing a restartless add-on
    83 function run_test_3() {
    84   restartManager();
    86   AddonManager.getInstallForFile(do_get_addon("test_cacheflush2"), function(aInstall) {
    87     aInstall.addListener({
    88       onInstallStarted: function(aInstall) {
    89         // We should flush the staged XPI when completing the install
    90         gExpectedFile = gProfD.clone();
    91         gExpectedFile.append("extensions");
    92         gExpectedFile.append("staged");
    93         gExpectedFile.append("addon2@tests.mozilla.org.xpi");
    94       },
    96       onInstallEnded: function(aInstall) {
    97         do_check_true(gCacheFlushed);
    98         gCacheFlushed = false;
   100         do_execute_soon(run_test_4);
   101       }
   102     });
   104     aInstall.install();
   105   });
   106 }
   108 // Tests that the cache is flushed when uninstalling a restartless add-on
   109 function run_test_4() {
   110   AddonManager.getAddonByID("addon2@tests.mozilla.org", function(a2) {
   111     // We should flush the installed XPI when uninstalling
   112     gExpectedFile = gProfD.clone();
   113     gExpectedFile.append("extensions");
   114     gExpectedFile.append("addon2@tests.mozilla.org.xpi");
   116     a2.uninstall();
   117     do_check_true(gCacheFlushed);
   118     gCacheFlushed = false;
   120     do_execute_soon(do_test_finished);
   121   });
   122 }

mercurial