toolkit/mozapps/extensions/test/xpcshell/test_gfxBlacklist_OK.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 whether a machine which exactly matches the blacklist entry is
     6 // successfully blocked.
     7 // Uses test_gfxBlacklist.xml
     9 Components.utils.import("resource://testing-common/httpd.js");
    11 var gTestserver = new HttpServer();
    12 gTestserver.start(-1);
    13 gPort = gTestserver.identity.primaryPort;
    14 mapFile("/data/test_gfxBlacklist.xml", gTestserver);
    16 function get_platform() {
    17   var xulRuntime = Components.classes["@mozilla.org/xre/app-info;1"]
    18                              .getService(Components.interfaces.nsIXULRuntime);
    19   return xulRuntime.OS;
    20 }
    22 function load_blocklist(file) {
    23   Services.prefs.setCharPref("extensions.blocklist.url", "http://localhost:" +
    24                              gPort + "/data/" + file);
    25   var blocklist = Cc["@mozilla.org/extensions/blocklist;1"].
    26                   getService(Ci.nsITimerCallback);
    27   blocklist.notify(null);
    28 }
    30 // Performs the initial setup
    31 function run_test() {
    32   try {
    33     var gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo);
    34   } catch (e) {
    35     do_test_finished();
    36     return;
    37   }
    39   // We can't do anything if we can't spoof the stuff we need.
    40   if (!(gfxInfo instanceof Ci.nsIGfxInfoDebug)) {
    41     do_test_finished();
    42     return;
    43   }
    45   gfxInfo.QueryInterface(Ci.nsIGfxInfoDebug);
    47   // Set the vendor/device ID, etc, to match the test file.
    48   switch (get_platform()) {
    49     case "WINNT":
    50       gfxInfo.spoofVendorID("0xabcd");
    51       gfxInfo.spoofDeviceID("0x1234");
    52       gfxInfo.spoofDriverVersion("8.52.322.2201");
    53       // Windows 7
    54       gfxInfo.spoofOSVersion(0x60001);
    55       break;
    56     case "Linux":
    57       gfxInfo.spoofVendorID("0xabcd");
    58       gfxInfo.spoofDeviceID("0x1234");
    59       break;
    60     case "Darwin":
    61       gfxInfo.spoofVendorID("0xabcd");
    62       gfxInfo.spoofDeviceID("0x1234");
    63       gfxInfo.spoofOSVersion(0x1050);
    64       break;
    65     case "Android":
    66       gfxInfo.spoofVendorID("abcd");
    67       gfxInfo.spoofDeviceID("asdf");
    68       gfxInfo.spoofDriverVersion("5");
    69       break;
    70   }
    72   createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8");
    73   startupManager();
    75   do_test_pending();
    77   function checkBlacklist()
    78   {
    79     var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D);
    80     do_check_eq(status, Ci.nsIGfxInfo.FEATURE_BLOCKED_DRIVER_VERSION);
    82     // Make sure unrelated features aren't affected
    83     status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS);
    84     do_check_eq(status, Ci.nsIGfxInfo.FEATURE_NO_INFO);
    86     gTestserver.stop(do_test_finished);
    87   }
    89   Services.obs.addObserver(function(aSubject, aTopic, aData) {
    90     // If we wait until after we go through the event loop, gfxInfo is sure to
    91     // have processed the gfxItems event.
    92     do_execute_soon(checkBlacklist);
    93   }, "blocklist-data-gfxItems", false);
    95   load_blocklist("test_gfxBlacklist.xml");
    96 }

mercurial