Bug 1004576 - Background tabs are unreadable when the Color Intensity of the window frame is at or near its lowest point (white text on light-grey window frame). r=Gijs a=sledru
authorJared Wein <jwein@mozilla.com>
Mon, 05 May 2014 18:41:40 -0400
changeset 192217 ebad9b622f2e
parent 192216 0c8b19312abf
child 192218 1c5aa2062579
push id3527
push userjwein@mozilla.com
push date2014-05-07 16:53 +0000
treeherdermozilla-beta@ebad9b622f2e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersGijs, sledru
bugs1004576
milestone30.0
Bug 1004576 - Background tabs are unreadable when the Color Intensity of the window frame is at or near its lowest point (white text on light-grey window frame). r=Gijs a=sledru
browser/modules/Windows8WindowFrameColor.jsm
--- a/browser/modules/Windows8WindowFrameColor.jsm
+++ b/browser/modules/Windows8WindowFrameColor.jsm
@@ -4,30 +4,40 @@
 
 "use strict";
 const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
 
 this.EXPORTED_SYMBOLS = ["Windows8WindowFrameColor"];
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/WindowsRegistry.jsm");
+let Registry = Cu.import("resource://gre/modules/WindowsRegistry.jsm").WindowsRegistry;
 
 const Windows8WindowFrameColor = {
   _windowFrameColor: null,
 
   get: function() {
     if (this._windowFrameColor)
       return this._windowFrameColor;
 
-    let windowFrameColor = WindowsRegistry.readRegKey(Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER,
-                                                      "Software\\Microsoft\\Windows\\DWM",
-                                                      "ColorizationColor");
+    const HKCU = Ci.nsIWindowsRegKey.ROOT_KEY_CURRENT_USER;
+    const dwmKey = "Software\\Microsoft\\Windows\\DWM";
+    let customizationColor = Registry.readRegKey(HKCU, dwmKey,
+                                                 "ColorizationColor");
     // The color returned from the Registry is in decimal form.
-    let windowFrameColorHex = windowFrameColor.toString(16);
+    let customizationColorHex = customizationColor.toString(16);
     // Zero-pad the number just to make sure that it is 8 digits.
-    windowFrameColorHex = ("00000000" + windowFrameColorHex).substr(-8);
-    let windowFrameColorArray = windowFrameColorHex.match(/../g);
-    let [pixelA, pixelR, pixelG, pixelB] = windowFrameColorArray.map(function(val) parseInt(val, 16));
+    customizationColorHex = ("00000000" + customizationColorHex).substr(-8);
+    let customizationColorArray = customizationColorHex.match(/../g);
+    let [unused, fgR, fgG, fgB] = customizationColorArray.map(function(val) parseInt(val, 16));
+    let colorizationColorBalance = Registry.readRegKey(HKCU, dwmKey,
+                                                       "ColorizationColorBalance");
+     // Window frame base color when Color Intensity is at 0, see bug 1004576.
+    let frameBaseColor = 217;
+    let alpha = colorizationColorBalance / 100;
 
-    return this._windowFrameColor = [pixelR, pixelG, pixelB];
+    // Alpha-blend the foreground color with the frame base color.
+    let r = Math.round(fgR * alpha + frameBaseColor * (1 - alpha));
+    let g = Math.round(fgG * alpha + frameBaseColor * (1 - alpha));
+    let b = Math.round(fgB * alpha + frameBaseColor * (1 - alpha));
+    return this._windowFrameColor = [r, g, b];
   },
 };