toolkit/mozapps/extensions/test/xpcshell/test_compatoverrides.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/ */
     4 // Tests compatibility overrides, for when strict compatibility checking is
     5 // disabled. See bug 693906.
     8 const PREF_GETADDONS_CACHE_ENABLED = "extensions.getAddons.cache.enabled";
    10 Components.utils.import("resource://testing-common/httpd.js");
    11 var gServer = new HttpServer();
    12 gServer.start(-1);
    13 gPort = gServer.identity.primaryPort;
    15 const PORT            = gPort;
    16 const BASE_URL        = "http://localhost:" + PORT;
    17 const DEFAULT_URL     = "about:blank";
    18 const REQ_URL         = "/data.xml";
    20 // register static file and mark it for interpolation
    21 mapUrlToFile(REQ_URL, do_get_file("data/test_compatoverrides.xml"), gServer);
    23 Services.prefs.setBoolPref(PREF_EM_STRICT_COMPATIBILITY, false);
    24 Services.prefs.setBoolPref(PREF_GETADDONS_CACHE_ENABLED, true);
    25 Services.prefs.setCharPref(PREF_GETADDONS_BYIDS_PERFORMANCE,
    26                            BASE_URL + REQ_URL);
    29 // Not hosted, no overrides
    30 var addon1 = {
    31   id: "addon1@tests.mozilla.org",
    32   version: "1.0",
    33   name: "Test addon 1",
    34   targetApplications: [{
    35     id: "xpcshell@tests.mozilla.org",
    36     minVersion: "1",
    37     maxVersion: "1"
    38   }]
    39 };
    41 // Hosted, no overrides
    42 var addon2 = {
    43   id: "addon2@tests.mozilla.org",
    44   version: "1.0",
    45   name: "Test addon 2",
    46   targetApplications: [{
    47     id: "xpcshell@tests.mozilla.org",
    48     minVersion: "1",
    49     maxVersion: "1"
    50   }]
    51 };
    53 // Hosted, matching override
    54 var addon3 = {
    55   id: "addon3@tests.mozilla.org",
    56   version: "1.0",
    57   name: "Test addon 3",
    58   targetApplications: [{
    59     id: "xpcshell@tests.mozilla.org",
    60     minVersion: "1",
    61     maxVersion: "1"
    62   }]
    63 };
    65 // Hosted, matching override, wouldn't be compatible if strict checking is enabled
    66 var addon4 = {
    67   id: "addon4@tests.mozilla.org",
    68   version: "1.0",
    69   name: "Test addon 4",
    70   targetApplications: [{
    71     id: "xpcshell@tests.mozilla.org",
    72     minVersion: "0.1",
    73     maxVersion: "0.2"
    74   }]
    75 };
    77 // Hosted, app ID doesn't match in override
    78 var addon5 = {
    79   id: "addon5@tests.mozilla.org",
    80   version: "1.0",
    81   name: "Test addon 5",
    82   targetApplications: [{
    83     id: "xpcshell@tests.mozilla.org",
    84     minVersion: "1",
    85     maxVersion: "1"
    86   }]
    87 };
    89 // Hosted, addon version range doesn't match in override
    90 var addon6 = {
    91   id: "addon6@tests.mozilla.org",
    92   version: "1.0",
    93   name: "Test addon 6",
    94   targetApplications: [{
    95     id: "xpcshell@tests.mozilla.org",
    96     minVersion: "1",
    97     maxVersion: "1"
    98   }]
    99 };
   101 // Hosted, app version range doesn't match in override
   102 var addon7 = {
   103   id: "addon7@tests.mozilla.org",
   104   version: "1.0",
   105   name: "Test addon 7",
   106   targetApplications: [{
   107     id: "xpcshell@tests.mozilla.org",
   108     minVersion: "1",
   109     maxVersion: "1"
   110   }]
   111 };
   113 // Hosted, multiple overrides
   114 var addon8 = {
   115   id: "addon8@tests.mozilla.org",
   116   version: "1.0",
   117   name: "Test addon 8",
   118   targetApplications: [{
   119     id: "xpcshell@tests.mozilla.org",
   120     minVersion: "1",
   121     maxVersion: "1"
   122   }]
   123 };
   125 // Not hosted, matching override
   126 var addon9 = {
   127   id: "addon9@tests.mozilla.org",
   128   version: "1.0",
   129   name: "Test addon 9",
   130   targetApplications: [{
   131     id: "xpcshell@tests.mozilla.org",
   132     minVersion: "1",
   133     maxVersion: "1"
   134   }]
   135 };
   137 // Not hosted, override is of unsupported type (compatible)
   138 var addon10 = {
   139   id: "addon10@tests.mozilla.org",
   140   version: "1.0",
   141   name: "Test addon 10",
   142   targetApplications: [{
   143     id: "xpcshell@tests.mozilla.org",
   144     minVersion: "1",
   145     maxVersion: "1"
   146   }]
   147 };
   150 const profileDir = gProfD.clone();
   151 profileDir.append("extensions");
   154 /*
   155  * Trigger an AddonManager background update check
   156  *
   157  * @param  aCallback
   158  *         Callback to call once the background update is complete
   159  */
   160 function trigger_background_update(aCallback) {
   161   Services.obs.addObserver({
   162     observe: function(aSubject, aTopic, aData) {
   163       Services.obs.removeObserver(this, "addons-background-update-complete");
   164       do_execute_soon(aCallback);
   165     }
   166   }, "addons-background-update-complete", false);
   168   gInternalManager.notify(null);
   169 }
   171 function run_test() {
   172   do_test_pending();
   173   createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "2");
   175   writeInstallRDFForExtension(addon1, profileDir);
   176   writeInstallRDFForExtension(addon2, profileDir);
   177   writeInstallRDFForExtension(addon3, profileDir);
   178   writeInstallRDFForExtension(addon4, profileDir);
   179   writeInstallRDFForExtension(addon5, profileDir);
   180   writeInstallRDFForExtension(addon6, profileDir);
   181   writeInstallRDFForExtension(addon7, profileDir);
   182   writeInstallRDFForExtension(addon8, profileDir);
   183   writeInstallRDFForExtension(addon9, profileDir);
   184   writeInstallRDFForExtension(addon10, profileDir);
   186   startupManager();
   188   trigger_background_update(run_test_1);
   189 }
   191 function end_test() {
   192   gServer.stop(do_test_finished);
   193 }
   195 function check_compat_status(aCallback) {
   196   AddonManager.getAddonsByIDs(["addon1@tests.mozilla.org",
   197                                "addon2@tests.mozilla.org",
   198                                "addon3@tests.mozilla.org",
   199                                "addon4@tests.mozilla.org",
   200                                "addon5@tests.mozilla.org",
   201                                "addon6@tests.mozilla.org",
   202                                "addon7@tests.mozilla.org",
   203                                "addon8@tests.mozilla.org",
   204                                "addon9@tests.mozilla.org",
   205                                "addon10@tests.mozilla.org"],
   206                               function([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]) {
   208     do_check_neq(a1, null);
   209     do_check_eq(a1.compatibilityOverrides, null);
   210     do_check_true(a1.isCompatible);
   211     do_check_false(a1.appDisabled);
   213     do_check_neq(a2, null);
   214     do_check_eq(a2.compatibilityOverrides, null);
   215     do_check_true(a2.isCompatible);
   216     do_check_false(a2.appDisabled);
   218     do_check_neq(a3, null);
   219     do_check_neq(a3.compatibilityOverrides, null);
   220     do_check_eq(a3.compatibilityOverrides.length, 1);
   221     do_check_false(a3.isCompatible);
   222     do_check_true(a3.appDisabled);
   224     do_check_neq(a4, null);
   225     do_check_neq(a4.compatibilityOverrides, null);
   226     do_check_eq(a4.compatibilityOverrides.length, 1);
   227     do_check_false(a4.isCompatible);
   228     do_check_true(a4.appDisabled);
   230     do_check_neq(a5, null);
   231     do_check_eq(a5.compatibilityOverrides, null);
   232     do_check_true(a5.isCompatible);
   233     do_check_false(a5.appDisabled);
   235     do_check_neq(a6, null);
   236     do_check_neq(a6.compatibilityOverrides, null);
   237     do_check_eq(a6.compatibilityOverrides.length, 1);
   238     do_check_true(a6.isCompatible);
   239     do_check_false(a6.appDisabled);
   241     do_check_neq(a7, null);
   242     do_check_neq(a7.compatibilityOverrides, null);
   243     do_check_eq(a7.compatibilityOverrides.length, 1);
   244     do_check_true(a7.isCompatible);
   245     do_check_false(a7.appDisabled);
   247     do_check_neq(a8, null);
   248     do_check_neq(a8.compatibilityOverrides, null);
   249     do_check_eq(a8.compatibilityOverrides.length, 3);
   250     do_check_false(a8.isCompatible);
   251     do_check_true(a8.appDisabled);
   253     do_check_neq(a9, null);
   254     do_check_neq(a9.compatibilityOverrides, null);
   255     do_check_eq(a9.compatibilityOverrides.length, 1);
   256     do_check_false(a9.isCompatible);
   257     do_check_true(a9.appDisabled);
   259     do_check_neq(a10, null);
   260     do_check_eq(a10.compatibilityOverrides, null);
   261     do_check_true(a10.isCompatible);
   262     do_check_false(a10.appDisabled);
   264     do_execute_soon(aCallback);
   265   });
   266 }
   268 function run_test_1() {
   269   do_print("Run test 1");
   270   check_compat_status(run_test_2);
   271 }
   273 function run_test_2() {
   274   do_print("Run test 2");
   275   restartManager();
   276   check_compat_status(end_test);  
   277 }

mercurial