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";
11 * Converts from a rgb numerical color valule (r << 16 | g << 8 | b)
12 * into a hex string in #RRGGBB format.
14 function colorToHex(aColor
) {
15 const rMask
= 4294901760;
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();
29 * Converts a color string in #RRGGBB format to a rgb numerical color value
30 * (r << 16 | g << 8 | b).
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);
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.
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
);
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.
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
);
66 // This test is Linux specific for now
67 if (!("@mozilla.org/gnome-gconf-service;1" in Cc
))
70 gGConf
= Cc
["@mozilla.org/gnome-gconf-service;1"].
71 getService(Ci
.nsIGConfService
);
73 gShell
= Cc
["@mozilla.org/browser/shell-service;1"].
74 getService(Ci
.nsIShellService
);
76 // Save the original background color so that we can restore it
78 var origGConfColor
= gGConf
.getString(GCONF_BG_COLOR_KEY
);
82 checkGConfToShellColor("#000", "#000000");
83 checkGConfToShellColor("#00f", "#0000FF");
84 checkGConfToShellColor("#b2f", "#BB22FF");
85 checkGConfToShellColor("#fff", "#FFFFFF");
87 checkGConfToShellColor("#000000", "#000000");
88 checkGConfToShellColor("#0000ff", "#0000FF");
89 checkGConfToShellColor("#b002f0", "#B002F0");
90 checkGConfToShellColor("#ffffff", "#FFFFFF");
92 checkGConfToShellColor("#000000000", "#000000");
93 checkGConfToShellColor("#00f00f00f", "#000000");
94 checkGConfToShellColor("#aaabbbccc", "#AABBCC");
95 checkGConfToShellColor("#fffffffff", "#FFFFFF");
97 checkGConfToShellColor("#000000000000", "#000000");
98 checkGConfToShellColor("#000f000f000f", "#000000");
99 checkGConfToShellColor("#00ff00ff00ff", "#000000");
100 checkGConfToShellColor("#aaaabbbbcccc", "#AABBCC");
101 checkGConfToShellColor("#111122223333", "#112233");
102 checkGConfToShellColor("#ffffffffffff", "#FFFFFF");
104 checkShellToGConfColor("#000000", "#000000000000");
105 checkShellToGConfColor("#0000FF", "#00000000ff00");
106 checkShellToGConfColor("#FFFFFF", "#ff00ff00ff00");
107 checkShellToGConfColor("#0A0B0C", "#0a000b000c00");
108 checkShellToGConfColor("#A0B0C0", "#a000b000c000");
109 checkShellToGConfColor("#AABBCC", "#aa00bb00cc00");
112 gGConf
.setString(GCONF_BG_COLOR_KEY
, origGConfColor
);