toolkit/mozapps/extensions/test/xpcshell/test_bug299716.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 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
     4  */
     6 // Disables security checking our updates which haven't been signed
     7 Services.prefs.setBoolPref("extensions.checkUpdateSecurity", false);
     9 // Update check listener.
    10 const checkListener = {
    11   pendingCount: 0,
    13   onUpdateAvailable: function onUpdateAvailable(aAddon, aInstall) {
    14     for (let currentAddon of ADDONS) {
    15       if (currentAddon.id == aAddon.id) {
    16        currentAddon.newInstall = aInstall;
    17        return;
    18       }
    19     }
    20   },
    22   onUpdateFinished: function onUpdateFinished() {
    23     if (--this.pendingCount == 0)
    24       next_test();
    25   }
    26 }
    28 // Get the HTTP server.
    29 Components.utils.import("resource://testing-common/httpd.js");
    30 var testserver;
    32 var ADDONS = [
    33   // XPCShell
    34   {
    35     id: "bug299716-a@tests.mozilla.org",
    36     addon: "test_bug299716_a_1",
    37     installed: true,
    38     item: null,
    39     newInstall: null
    40   },
    42   // Toolkit
    43   {
    44     id: "bug299716-b@tests.mozilla.org",
    45     addon: "test_bug299716_b_1",
    46     installed: true,
    47     item: null,
    48     newInstall: null
    49   },
    51   // XPCShell + Toolkit
    52   {
    53     id: "bug299716-c@tests.mozilla.org",
    54     addon: "test_bug299716_c_1",
    55     installed: true,
    56     item: null,
    57     newInstall: null
    58   },
    60   // XPCShell (Toolkit invalid)
    61   {
    62     id: "bug299716-d@tests.mozilla.org",
    63     addon: "test_bug299716_d_1",
    64     installed: true,
    65     item: null,
    66     newInstall: null
    67   },
    69   // Toolkit (XPCShell invalid)
    70   {
    71     id: "bug299716-e@tests.mozilla.org",
    72     addon: "test_bug299716_e_1",
    73     installed: false,
    74     item: null,
    75     newInstall: null,
    76     failedAppName: "XPCShell"
    77   },
    79   // None (XPCShell, Toolkit invalid)
    80   {
    81     id: "bug299716-f@tests.mozilla.org",
    82     addon: "test_bug299716_f_1",
    83     installed: false,
    84     item: null,
    85     newInstall: null,
    86     failedAppName: "XPCShell"
    87   },
    89   // None (Toolkit invalid)
    90   {
    91     id: "bug299716-g@tests.mozilla.org",
    92     addon: "test_bug299716_g_1",
    93     installed: false,
    94     item: null,
    95     newInstall: null,
    96     failedAppName: "Toolkit"
    97   },
    98 ];
   100 var next_test = function() {};
   102 function do_check_item(aItem, aVersion, aAddonsEntry) {
   103   if (aAddonsEntry.installed) {
   104     if (aItem == null)
   105       do_throw("Addon " + aAddonsEntry.id + " wasn't detected");
   106     if (aItem.version != aVersion)
   107       do_throw("Addon " + aAddonsEntry.id + " was version " + aItem.version + " instead of " + aVersion);
   108   } else {
   109     if (aItem != null)
   110       do_throw("Addon " + aAddonsEntry.id + " was detected");
   111   }
   112 }
   114 /**
   115  * Start the test by installing extensions.
   116  */
   117 function run_test() {
   118   do_test_pending();
   120   createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "5", "1.9");
   122   const dataDir = do_get_file("data");
   123   const addonsDir = do_get_addon(ADDONS[0].addon).parent;
   125   // Make sure we can actually get our data files.
   126   const xpiFile = addonsDir.clone();
   127   xpiFile.append("test_bug299716_a_2.xpi");
   128   do_check_true(xpiFile.exists());
   130   // Create and configure the HTTP server.
   131   testserver = new HttpServer();
   132   testserver.registerDirectory("/addons/", addonsDir);
   133   testserver.registerDirectory("/data/", dataDir);
   134   testserver.start(4444);
   136   // Make sure we can fetch the files over HTTP.
   137   const Ci = Components.interfaces;
   138   const xhr = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
   139                         .createInstance(Ci.nsIXMLHttpRequest)
   140   xhr.open("GET", "http://localhost:4444/addons/test_bug299716_a_2.xpi", false);
   141   xhr.send(null);
   142   do_check_true(xhr.status == 200);
   144   xhr.open("GET", "http://localhost:4444/data/test_bug299716.rdf", false);
   145   xhr.send(null);
   146   do_check_true(xhr.status == 200);
   148   // Start the real test.
   149   startupManager();
   150   dump("\n\n*** INSTALLING NEW ITEMS\n\n");
   152   installAllFiles([do_get_addon(a.addon) for each (a in ADDONS)], run_test_pt2,
   153                   true);
   154 }
   156 /**
   157  * Check the versions of all items, and ask the extension manager to find updates.
   158  */
   159 function run_test_pt2() {
   160   dump("\n\n*** DONE INSTALLING NEW ITEMS\n\n");
   161   dump("\n\n*** RESTARTING EXTENSION MANAGER\n\n");
   162   restartManager();
   164   AddonManager.getAddonsByIDs([a.id for each (a in ADDONS)], function(items) {
   165     dump("\n\n*** REQUESTING UPDATE\n\n");
   166     // checkListener will call run_test_pt3().
   167     next_test = run_test_pt3;
   169     // Try to update the items.
   170     for (var i = 0; i < ADDONS.length; i++) {
   171       var item = items[i];
   172       do_check_item(item, "0.1", ADDONS[i]);
   174       if (item) {
   175         checkListener.pendingCount++;
   176         ADDONS[i].item = item;
   177         item.findUpdates(checkListener, AddonManager.UPDATE_WHEN_USER_REQUESTED);
   178       }
   179     }
   180   });
   181 }
   183 /**
   184  * Install new items for each enabled extension.
   185  */
   186 function run_test_pt3() {
   187   // Install the new items.
   188   dump("\n\n*** UPDATING ITEMS\n\n");
   189   completeAllInstalls([a.newInstall for each(a in ADDONS) if (a.newInstall)],
   190                       run_test_pt4);
   191 }
   193 /**
   194  * Check the final version of each extension.
   195  */
   196 function run_test_pt4() {
   197   dump("\n\n*** RESTARTING EXTENSION MANAGER\n\n");
   198   restartManager();
   200   dump("\n\n*** FINAL CHECKS\n\n");
   201   AddonManager.getAddonsByIDs([a.id for each (a in ADDONS)], function(items) {
   202     for (var i = 0; i < ADDONS.length; i++) {
   203       var item = items[i];
   204       do_check_item(item, "0.2", ADDONS[i]);
   205     }
   207     testserver.stop(do_test_finished);
   208   });
   209 }

mercurial