browser/components/shell/test/unit/test_421977.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 const Cc = Components.classes;
     2 const Ci = Components.interfaces;
     3 const Cr = Components.results;
     5 const GCONF_BG_COLOR_KEY = "/desktop/gnome/background/primary_color";
     7 var gShell;
     8 var gGConf;
    10 /**
    11  * Converts from a rgb numerical color valule (r << 16 | g << 8 | b)
    12  * into a hex string in #RRGGBB format.
    13  */
    14 function colorToHex(aColor) {
    15   const rMask = 4294901760;
    16   const gMask = 65280;
    17   const bMask = 255;
    19   var r = (aColor & rMask) >> 16;
    20   var g = (aColor & gMask) >> 8;
    21   var b = (aColor & bMask);
    23   return "#" + [r, g, b].map(function(aInt)
    24                               aInt.toString(16).replace(/^(.)$/, "0$1"))
    25                              .join("").toUpperCase();
    26 }
    28 /**
    29  * Converts a color string in #RRGGBB format to a rgb numerical color value
    30  *  (r << 16 | g << 8 | b).
    31  */
    32 function hexToColor(aString) {
    33   return parseInt(aString.substring(1,3), 16) << 16 |
    34          parseInt(aString.substring(3,5), 16) << 8 |
    35          parseInt(aString.substring(5,7), 16);
    36 }
    38 /**
    39  * Checks that setting the GConf background key to aGConfColor will
    40  * result in the Shell component returning a background color equals
    41  * to aExpectedShellColor in #RRGGBB format.
    42  */
    43 function checkGConfToShellColor(aGConfColor, aExpectedShellColor) {
    45   gGConf.setString(GCONF_BG_COLOR_KEY, aGConfColor);
    46   var shellColor = colorToHex(gShell.desktopBackgroundColor);
    48   do_check_eq(shellColor, aExpectedShellColor);
    49 }
    51 /**
    52  * Checks that setting the background color (in #RRGGBB format) using the Shell
    53  * component will result in having a GConf key for the background color set to
    54  * aExpectedGConfColor.
    55  */
    56 function checkShellToGConfColor(aShellColor, aExpectedGConfColor) {
    58   gShell.desktopBackgroundColor = hexToColor(aShellColor);
    59   var gconfColor = gGConf.getString(GCONF_BG_COLOR_KEY);
    61   do_check_eq(gconfColor, aExpectedGConfColor);
    62 }
    64 function run_test() {
    66   // This test is Linux specific for now
    67   if (!("@mozilla.org/gnome-gconf-service;1" in Cc))
    68     return;
    70   try {
    71     // If GSettings is available, then the GConf tests
    72     // will fail
    73     var gsettings = Cc["@mozilla.org/gsettings-service;1"].
    74                     getService(Ci.nsIGSettingsService).
    75                     getCollectionForSchema("org.gnome.desktop.background");
    76     return;
    77   } catch(e) { }
    79   gGConf = Cc["@mozilla.org/gnome-gconf-service;1"].
    80            getService(Ci.nsIGConfService);
    82   gShell = Cc["@mozilla.org/browser/shell-service;1"].
    83            getService(Ci.nsIShellService);
    85   // Save the original background color so that we can restore it
    86   // after the test.
    87   var origGConfColor = gGConf.getString(GCONF_BG_COLOR_KEY);
    89   try {
    91     checkGConfToShellColor("#000", "#000000");
    92     checkGConfToShellColor("#00f", "#0000FF");
    93     checkGConfToShellColor("#b2f", "#BB22FF");
    94     checkGConfToShellColor("#fff", "#FFFFFF");
    96     checkGConfToShellColor("#000000", "#000000");
    97     checkGConfToShellColor("#0000ff", "#0000FF");
    98     checkGConfToShellColor("#b002f0", "#B002F0");
    99     checkGConfToShellColor("#ffffff", "#FFFFFF");
   101     checkGConfToShellColor("#000000000", "#000000");
   102     checkGConfToShellColor("#00f00f00f", "#000000");
   103     checkGConfToShellColor("#aaabbbccc", "#AABBCC");
   104     checkGConfToShellColor("#fffffffff", "#FFFFFF");
   106     checkGConfToShellColor("#000000000000", "#000000");
   107     checkGConfToShellColor("#000f000f000f", "#000000");
   108     checkGConfToShellColor("#00ff00ff00ff", "#000000");
   109     checkGConfToShellColor("#aaaabbbbcccc", "#AABBCC");
   110     checkGConfToShellColor("#111122223333", "#112233");
   111     checkGConfToShellColor("#ffffffffffff", "#FFFFFF");
   113     checkShellToGConfColor("#000000", "#000000000000");
   114     checkShellToGConfColor("#0000FF", "#00000000ffff");
   115     checkShellToGConfColor("#FFFFFF", "#ffffffffffff");
   116     checkShellToGConfColor("#0A0B0C", "#0a0a0b0b0c0c");
   117     checkShellToGConfColor("#A0B0C0", "#a0a0b0b0c0c0");
   118     checkShellToGConfColor("#AABBCC", "#aaaabbbbcccc");
   120   } finally {
   121     gGConf.setString(GCONF_BG_COLOR_KEY, origGConfColor);
   122   }
   123 }

mercurial