toolkit/mozapps/extensions/test/xpcshell/test_gfxBlacklist_DriverNew.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/
     3  */
     5 // Test whether a new-enough driver bypasses the blacklist, even if the rest of
     6 // the attributes match the blacklist entry.
     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.2202");
    53       // Windows 7
    54       gfxInfo.spoofOSVersion(0x60001);
    55       break;
    56     case "Linux":
    57       // We don't support driver versions on Linux.
    58       do_test_finished();
    59       return;
    60     case "Darwin":
    61       // We don't support driver versions on Darwin.
    62       do_test_finished();
    63       return;
    64     case "Android":
    65       gfxInfo.spoofVendorID("abcd");
    66       gfxInfo.spoofDeviceID("wxyz");
    67       gfxInfo.spoofDriverVersion("6");
    68       break;
    69   }
    71   createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "3", "8");
    72   startupManager();
    74   do_test_pending();
    76   function checkBlacklist()
    77   {
    78     var status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT2D);
    79     do_check_eq(status, Ci.nsIGfxInfo.FEATURE_NO_INFO);
    81     status = gfxInfo.getFeatureStatus(Ci.nsIGfxInfo.FEATURE_DIRECT3D_9_LAYERS);
    82     do_check_eq(status, Ci.nsIGfxInfo.FEATURE_NO_INFO);
    84     gTestserver.stop(do_test_finished);
    85   }
    87   Services.obs.addObserver(function(aSubject, aTopic, aData) {
    88     // If we wait until after we go through the event loop, gfxInfo is sure to
    89     // have processed the gfxItems event.
    90     do_execute_soon(checkBlacklist);
    91   }, "blocklist-data-gfxItems", false);
    93   load_blocklist("test_gfxBlacklist.xml");
    94 }

mercurial