toolkit/modules/tests/xpcshell/test_Services.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 /**
     5  * This file tests the Services.jsm module.
     6  */
     8 ////////////////////////////////////////////////////////////////////////////////
     9 /// Globals
    11 const Cc = Components.classes;
    12 const Ci = Components.interfaces;
    13 const Cu = Components.utils;
    14 const Cr = Components.results;
    16 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
    17 Cu.import("resource://gre/modules/Services.jsm");
    19 function checkService(service, interface) {
    20   do_print("Checking that Services." + service + " is an " + interface);
    21   do_check_true(service in Services);
    22   do_check_true(Services[service] instanceof interface);
    23 }
    25 ////////////////////////////////////////////////////////////////////////////////
    26 /// Tests
    28 function run_test()
    29 {
    30   do_get_profile();
    32   checkService("appShell", Ci.nsIAppShellService);
    33   checkService("appinfo", Ci.nsIXULRuntime);
    34   checkService("blocklist", Ci.nsIBlocklistService);
    35   checkService("cache", Ci.nsICacheService);
    36   checkService("cache2", Ci.nsICacheStorageService);
    37   checkService("clipboard", Ci.nsIClipboard);
    38   checkService("console", Ci.nsIConsoleService);
    39   checkService("contentPrefs", Ci.nsIContentPrefService);
    40   checkService("cookies", Ci.nsICookieManager2);
    41   checkService("dirsvc", Ci.nsIDirectoryService);
    42   checkService("dirsvc", Ci.nsIProperties);
    43   checkService("DOMRequest", Ci.nsIDOMRequestService);
    44   checkService("domStorageManager", Ci.nsIDOMStorageManager);
    45   checkService("downloads", Ci.nsIDownloadManager);
    46   checkService("droppedLinkHandler", Ci.nsIDroppedLinkHandler);
    47   checkService("eTLD", Ci.nsIEffectiveTLDService);
    48   checkService("focus", Ci.nsIFocusManager);
    49   checkService("io", Ci.nsIIOService);
    50   checkService("io", Ci.nsIIOService2);
    51   checkService("locale", Ci.nsILocaleService);
    52   checkService("logins", Ci.nsILoginManager);
    53   checkService("obs", Ci.nsIObserverService);
    54   checkService("perms", Ci.nsIPermissionManager);
    55   checkService("prefs", Ci.nsIPrefBranch);
    56   checkService("prefs", Ci.nsIPrefService);
    57   checkService("prompt", Ci.nsIPromptService);
    58   checkService("scriptSecurityManager", Ci.nsIScriptSecurityManager);
    59   checkService("scriptloader", Ci.mozIJSSubScriptLoader);
    60   checkService("startup", Ci.nsIAppStartup);
    61   checkService("storage", Ci.mozIStorageService);
    62   checkService("strings", Ci.nsIStringBundleService);
    63   checkService("sysinfo", Ci.nsIPropertyBag2);
    64   checkService("telemetry", Ci.nsITelemetry);
    65   checkService("tm", Ci.nsIThreadManager);
    66   checkService("uriFixup", Ci.nsIURIFixup);
    67   checkService("urlFormatter", Ci.nsIURLFormatter);
    68   checkService("vc", Ci.nsIVersionComparator);
    69   checkService("wm", Ci.nsIWindowMediator);
    70   checkService("ww", Ci.nsIWindowWatcher);
    71   if ("nsIBrowserSearchService" in Ci) {
    72     checkService("search", Ci.nsIBrowserSearchService);
    73   }
    74   if ("nsIAndroidBridge" in Ci) {
    75     checkService("androidBridge", Ci.nsIAndroidBridge);
    76   }
    78   // In xpcshell tests, the "@mozilla.org/xre/app-info;1" component implements
    79   // only the nsIXULRuntime interface, but not nsIXULAppInfo.  To test the
    80   // service getter for the latter interface, we define a minimal mock factory
    81   // that returns an object defining both interfaces.
    82   let contractID = "@mozilla.org/xre/app-info;1";
    83   let mockFactory = {
    84     createInstance: function (aOuter, aIid) {
    85       return {
    86         QueryInterface: XPCOMUtils.generateQI([Ci.nsIXULRuntime,
    87                                                Ci.nsIXULAppInfo]),
    88       }.QueryInterface(aIid);
    89     }
    90   };
    92   let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
    93   let cid = registrar.contractIDToCID(contractID);
    94   let oldFactory = Components.manager.getClassObject(Cc[contractID],
    95                                                      Ci.nsIFactory);
    96   registrar.unregisterFactory(cid, oldFactory);
    97   registrar.registerFactory(cid, "", contractID, mockFactory);
    99   // We need to reload the module to update the lazy getter.
   100   Cu.unload("resource://gre/modules/Services.jsm");
   101   Cu.import("resource://gre/modules/Services.jsm");
   103   checkService("appinfo", Ci.nsIXULAppInfo);
   105   // Clean up.
   106   registrar.unregisterFactory(cid, mockFactory);
   107   registrar.registerFactory(cid, "", contractID, oldFactory);
   109   Cu.unload("resource://gre/modules/Services.jsm");
   110 }

mercurial