Merge f-t to m-c
authorPhil Ringnalda <philringnalda@gmail.com>
Mon, 20 Jan 2014 18:42:07 -0800
changeset 164375 cdc0ab2c0cbad488f517812a3cf1694eeddaa84f
parent 164366 99715b654c8728ffe179264009953df529da27cf (current diff)
parent 164374 cf528dfe5797ed7498c958c30da274051b9025bd (diff)
child 164376 a3463896324c8a3469f8aa3068de1110f43c1f73
child 164399 9331d1b011c42fff21a7aadc151a24a124799ca0
child 164452 6427c85ecddd16f66365073cadd56e2b1a61c482
child 164492 64e3364098fd3430f434593505e5f9366e2eaf90
push id38691
push userphilringnalda@gmail.com
push dateTue, 21 Jan 2014 02:46:51 +0000
treeherdermozilla-inbound@a3463896324c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone29.0a1
first release with
nightly linux32
cdc0ab2c0cba / 29.0a1 / 20140121030204 / files
nightly linux64
cdc0ab2c0cba / 29.0a1 / 20140121030204 / files
nightly mac
cdc0ab2c0cba / 29.0a1 / 20140121030204 / files
nightly win32
cdc0ab2c0cba / 29.0a1 / 20140121030204 / files
nightly win64
cdc0ab2c0cba / 29.0a1 / 20140121030204 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge f-t to m-c
toolkit/themes/windows/global/arrow/panelarrow-horizontal-white.png
toolkit/themes/windows/global/arrow/panelarrow-vertical-white.png
--- a/browser/devtools/inspector/test/browser_inspector_bug_958456_highlight_comments.js
+++ b/browser/devtools/inspector/test/browser_inspector_bug_958456_highlight_comments.js
@@ -31,31 +31,41 @@ function test() {
   }, true);
   content.location = TEST_PAGE;
 }
 
 function startTests() {
   Task.spawn(function() {
     yield prepareHighlighter();
 
+    // Highlighter should be shown on this element
     yield hoverElement("#id1");
     assertHighlighterShownOn("#id1");
 
+    // But not over a comment
     yield hoverComment();
     assertHighlighterHidden();
 
+    // It should be shown again when coming back to the same element tough
+    yield hoverElement("#id1");
+    assertHighlighterShownOn("#id1");
+
+    // Shown here too
     yield hoverElement("#id2");
     assertHighlighterShownOn("#id2");
 
+    // But not over a script tag
     yield hoverElement("script");
     assertHighlighterHidden();
 
+    // Shown here
     yield hoverElement("#id3");
     assertHighlighterShownOn("#id3");
 
+    // But not over a hidden element
     yield hoverElement("#id4");
     assertHighlighterHidden();
   }).then(null, Cu.reportError).then(finishTest);
 }
 
 function finishTest() {
   doc = inspector = markupView = null;
   gBrowser.removeCurrentTab();
--- a/browser/devtools/webconsole/test/browser_webconsole_bug_653531_highlighter_console_helper.js
+++ b/browser/devtools/webconsole/test/browser_webconsole_bug_653531_highlighter_console_helper.js
@@ -2,18 +2,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // Tests that the $0 console helper works as intended.
 
 let inspector, h1;
 
-function createDocument()
-{
+function createDocument() {
   let doc = content.document;
   let div = doc.createElement("div");
   h1 = doc.createElement("h1");
   let p1 = doc.createElement("p");
   let p2 = doc.createElement("p");
   let div2 = doc.createElement("div");
   let p3 = doc.createElement("p");
   doc.title = "Inspector Tree Selection Test";
@@ -37,83 +36,65 @@ function createDocument()
   div.appendChild(p1);
   div.appendChild(p2);
   div2.appendChild(p3);
   doc.body.appendChild(div);
   doc.body.appendChild(div2);
   setupHighlighterTests();
 }
 
-function setupHighlighterTests()
-{
+function setupHighlighterTests() {
   ok(h1, "we have the header node");
   openInspector(runSelectionTests);
 }
 
-function runSelectionTests(aInspector)
-{
+function runSelectionTests(aInspector) {
   inspector = aInspector;
+
   inspector.toolbox.startPicker();
   inspector.toolbox.once("picker-started", () => {
-    EventUtils.synthesizeMouse(h1, 2, 2, {type: "mousemove"}, content);
-    inspector.toolbox.once("picker-node-hovered", () => {
-      executeSoon(performTestComparisons);
+    info("Picker mode started, now clicking on H1 to select that node");
+    executeSoon(() => {
+      EventUtils.synthesizeMouseAtCenter(h1, {}, content);
+      inspector.toolbox.once("picker-stopped", () => {
+        info("Picker mode stopped, H1 selected, now switching to the console");
+        openConsole(gBrowser.selectedTab).then(performWebConsoleTests);
+      });
     });
   });
 }
 
-function getHighlighterOutline()
-{
-  return gBrowser.selectedBrowser.parentNode
-    .querySelector(".highlighter-container .highlighter-outline");
-}
-
-function performTestComparisons()
-{
-  let outline = getHighlighterOutline();
-  ok(outline && !outline.hasAttribute("hidden"), "inspector is highlighting");
-
-  EventUtils.synthesizeMouseAtCenter(h1, {}, content);
-  inspector.toolbox.once("picker-stopped", () => {
-    openConsole(gBrowser.selectedTab, performWebConsoleTests);
-  });
-}
-
-function performWebConsoleTests(hud)
-{
+function performWebConsoleTests(hud) {
   let target = TargetFactory.forTab(gBrowser.selectedTab);
   let jsterm = hud.jsterm;
   outputNode = hud.outputNode;
 
   jsterm.clearOutput();
   jsterm.execute("$0", onNodeOutput);
 
-  function onNodeOutput(node)
-  {
+  function onNodeOutput(node) {
     isnot(node.textContent.indexOf("<h1>"), -1, "correct output for $0");
 
     jsterm.clearOutput();
     jsterm.execute("$0.textContent = 'bug653531'", onNodeUpdate);
   }
 
-  function onNodeUpdate(node)
-  {
+  function onNodeUpdate(node) {
     isnot(node.textContent.indexOf("bug653531"), -1,
           "correct output for $0.textContent");
     is(inspector.selection.node.textContent, "bug653531",
        "node successfully updated");
 
     inspector = h1 = null;
     gBrowser.removeCurrentTab();
     finishTest();
   }
 }
 
-function test()
-{
+function test() {
   waitForExplicitFinish();
 
   gBrowser.selectedTab = gBrowser.addTab();
   gBrowser.selectedBrowser.addEventListener("load", function onLoad() {
     gBrowser.selectedBrowser.removeEventListener("load", onLoad, true);
     waitForFocus(createDocument, content);
   }, true);
 
--- a/browser/modules/BrowserUITelemetry.jsm
+++ b/browser/modules/BrowserUITelemetry.jsm
@@ -127,16 +127,24 @@ XPCOMUtils.defineLazyGetter(this, "ALL_B
   ]
   return DEFAULT_ITEMS.concat(PALETTE_ITEMS)
                       .concat(SPECIAL_CASES);
 });
 
 const OTHER_MOUSEUP_MONITORED_ITEMS = [
   "PlacesChevron",
   "PlacesToolbarItems",
+  "menubar-items",
+];
+
+// Items that open arrow panels will often be overlapped by
+// the panel that they're opening by the time the mouseup
+// event is fired, so for these items, we monitor mousedown.
+const MOUSEDOWN_MONITORED_ITEMS = [
+  "PanelUI-menu-button",
 ];
 
 // Weakly maps browser windows to objects whose keys are relative
 // timestamps for when some kind of session started. For example,
 // when a customization session started. That way, when the window
 // exits customization mode, we can determine how long the session
 // lasted.
 const WINDOW_DURATION_MAP = new WeakMap();
@@ -255,16 +263,23 @@ this.BrowserUITelemetry = {
 
     for (let itemID of OTHER_MOUSEUP_MONITORED_ITEMS) {
       let item = document.getElementById(itemID);
       if (item) {
         item.addEventListener("mouseup", this);
       }
     }
 
+    for (let itemID of MOUSEDOWN_MONITORED_ITEMS) {
+      let item = document.getElementById(itemID);
+      if (item) {
+        item.addEventListener("mousedown", this);
+      }
+    }
+
     WINDOW_DURATION_MAP.set(aWindow, {});
   },
 
   _unregisterWindow: function(aWindow) {
     aWindow.removeEventListener("unload", this);
     let document = aWindow.document;
 
     for (let areaID of CustomizableUI.areas) {
@@ -275,44 +290,67 @@ this.BrowserUITelemetry = {
     }
 
     for (let itemID of OTHER_MOUSEUP_MONITORED_ITEMS) {
       let item = document.getElementById(itemID);
       if (item) {
         item.removeEventListener("mouseup", this);
       }
     }
+
+    for (let itemID of MOUSEDOWN_MONITORED_ITEMS) {
+      let item = document.getElementById(itemID);
+      if (item) {
+        item.removeEventListener("mousedown", this);
+      }
+    }
   },
 
   handleEvent: function(aEvent) {
     switch(aEvent.type) {
       case "unload":
         this._unregisterWindow(aEvent.currentTarget);
         break;
       case "mouseup":
         this._handleMouseUp(aEvent);
         break;
+      case "mousedown":
+        this._handleMouseDown(aEvent);
+        break;
     }
   },
 
   _handleMouseUp: function(aEvent) {
     let targetID = aEvent.currentTarget.id;
 
     switch (targetID) {
       case "PlacesToolbarItems":
         this._PlacesToolbarItemsMouseUp(aEvent);
         break;
       case "PlacesChevron":
         this._PlacesChevronMouseUp(aEvent);
         break;
+      case "menubar-items":
+        this._menubarMouseUp(aEvent);
+        break;
       default:
         this._checkForBuiltinItem(aEvent);
     }
   },
 
+  _handleMouseDown: function(aEvent) {
+    if (aEvent.currentTarget.id == "PanelUI-menu-button") {
+      // _countMouseUpEvent expects a detail for the second argument,
+      // but we don't really have any details to give. Just passing in
+      // "button" is probably simpler than trying to modify
+      // _countMouseUpEvent for this particular case.
+      this._countMouseUpEvent("click-menu-button", "button", aEvent.button);
+    }
+  },
+
   _PlacesChevronMouseUp: function(aEvent) {
     let target = aEvent.originalTarget;
     let result = target.id == "PlacesChevron" ? "chevron" : "overflowed-item";
     this._countMouseUpEvent("click-bookmarks-bar", result, aEvent.button);
   },
 
   _PlacesToolbarItemsMouseUp: function(aEvent) {
     let target = aEvent.originalTarget;
@@ -320,16 +358,23 @@ this.BrowserUITelemetry = {
     if (!target.classList.contains("bookmark-item")) {
       return;
     }
 
     let result = target.hasAttribute("container") ? "container" : "item";
     this._countMouseUpEvent("click-bookmarks-bar", result, aEvent.button);
   },
 
+  _menubarMouseUp: function(aEvent) {
+    let target = aEvent.originalTarget;
+    let tag = target.localName
+    let result = (tag == "menu" || tag == "menuitem") ? tag : "other";
+    this._countMouseUpEvent("click-menubar", result, aEvent.button);
+  },
+
   _bookmarksMenuButtonMouseUp: function(aEvent) {
     let bookmarksWidget = CustomizableUI.getWidget("bookmarks-menu-button");
     if (bookmarksWidget.areaType == CustomizableUI.TYPE_MENU_PANEL) {
       // In the menu panel, only the star is visible, and that opens up the
       // bookmarks subview.
       this._countMouseUpEvent("click-bookmarks-menu-button", "in-panel",
                               aEvent.button);
     } else {
@@ -386,16 +431,23 @@ this.BrowserUITelemetry = {
     // Determine if the window is in the maximized, normal or
     // fullscreen state.
     result.sizemode = document.documentElement.getAttribute("sizemode");
 
     // Determine if the Bookmarks bar is currently visible
     let bookmarksBar = document.getElementById("PersonalToolbar");
     result.bookmarksBarEnabled = bookmarksBar && !bookmarksBar.collapsed;
 
+    // Determine if the menubar is currently visible. On OS X, the menubar
+    // is never shown, despite not having the collapsed attribute set.
+    let menuBar = document.getElementById("toolbar-menubar");
+    result.menuBarEnabled =
+      menuBar && Services.appinfo.OS != "Darwin"
+              && menuBar.getAttribute("autohide") != "true";
+
     // Examine all customizable areas and see what default items
     // are present and missing.
     let defaultKept = [];
     let defaultMoved = [];
     let nondefaultAdded = [];
 
     for (let areaID of CustomizableUI.areas) {
       let items = CustomizableUI.getWidgetIdsInArea(areaID);
--- a/toolkit/devtools/server/actors/highlighter.js
+++ b/toolkit/devtools/server/actors/highlighter.js
@@ -509,16 +509,17 @@ BoxModelHighlighter.prototype = {
     if (!aRect) {
       return false;
     }
 
     let oldRect = this._contentRect;
 
     if (oldRect && aRect.top == oldRect.top && aRect.left == oldRect.left &&
         aRect.width == oldRect.width && aRect.height == oldRect.height) {
+      this._showOutline();
       return true; // same rectangle
     }
 
     let aRectScaled = this.layoutHelpers.getZoomedRect(this.win, aRect);
     let isShown = false;
 
     if (aRectScaled.left >= 0 && aRectScaled.top >= 0 &&
         aRectScaled.width > 0 && aRectScaled.height > 0) {
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/windows/global/arrow/panelarrow-horizontal-themed.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<svg xmlns="http://www.w3.org/2000/svg"
+     width="10"
+     height="20">
+  <path d="M 10,0 L 0,10 10,20 z"
+        fill="ThreeDShadow"/>
+  <path d="M 10,1 L 1,10 10,19 z"
+        fill="-moz-field"/>
+</svg>
deleted file mode 100644
index 24f06bcd5e3a7515bf82fa84fe30b61f21021d75..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/toolkit/themes/windows/global/arrow/panelarrow-horizontal.svg
+++ b/toolkit/themes/windows/global/arrow/panelarrow-horizontal.svg
@@ -2,12 +2,12 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <svg xmlns="http://www.w3.org/2000/svg"
      width="10"
      height="20">
   <path d="M 10,0 L 0,10 10,20 z"
-        fill="ThreeDShadow"/>
+        fill="hsla(210,4%,10%,.2)"/>
   <path d="M 10,1 L 1,10 10,19 z"
-        fill="-moz-Dialog"/>
+        fill="-moz-field"/>
 </svg>
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/windows/global/arrow/panelarrow-vertical-themed.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<svg xmlns="http://www.w3.org/2000/svg"
+     width="20"
+     height="10">
+  <path d="M 0,10 L 10,0 20,10 z"
+        fill="ThreeDShadow"/>
+  <path d="M 1,10 L 10,1 19,10 z"
+        fill="-moz-field"/>
+</svg>
deleted file mode 100644
index 91ba69db285dbb8c03f577197f51d939d5c1aec5..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/toolkit/themes/windows/global/arrow/panelarrow-vertical.svg
+++ b/toolkit/themes/windows/global/arrow/panelarrow-vertical.svg
@@ -2,12 +2,12 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <svg xmlns="http://www.w3.org/2000/svg"
      width="20"
      height="10">
   <path d="M 0,10 L 10,0 20,10 z"
-        fill="ThreeDShadow"/>
+        fill="hsla(210,4%,10%,.2)"/>
   <path d="M 1,10 L 10,1 19,10 z"
-        fill="-moz-Dialog"/>
+        fill="-moz-field"/>
 </svg>
--- a/toolkit/themes/windows/global/jar.mn
+++ b/toolkit/themes/windows/global/jar.mn
@@ -77,19 +77,19 @@ toolkit.jar:
         skin/classic/global/arrow/arrow-rit-hov.gif              (arrow/arrow-rit.gif)
         skin/classic/global/arrow/arrow-rit-sharp.gif            (arrow/arrow-rit-sharp.gif)
         skin/classic/global/arrow/arrow-rit-sharp-end.gif        (arrow/arrow-rit-sharp-end.gif)
         skin/classic/global/arrow/arrow-up.gif                   (arrow/arrow-up.gif)
         skin/classic/global/arrow/arrow-up-dis.gif               (arrow/arrow-up-dis.gif)
         skin/classic/global/arrow/arrow-up-hov.gif               (arrow/arrow-up-hov.gif)
         skin/classic/global/arrow/arrow-up-sharp.gif             (arrow/arrow-up-sharp.gif)
         skin/classic/global/arrow/panelarrow-horizontal.svg      (arrow/panelarrow-horizontal.svg)
-        skin/classic/global/arrow/panelarrow-horizontal-white.png (arrow/panelarrow-horizontal-white.png)
         skin/classic/global/arrow/panelarrow-vertical.svg        (arrow/panelarrow-vertical.svg)
-        skin/classic/global/arrow/panelarrow-vertical-white.png  (arrow/panelarrow-vertical-white.png)
+        skin/classic/global/arrow/panelarrow-horizontal-themed.svg (arrow/panelarrow-horizontal-themed.svg)
+        skin/classic/global/arrow/panelarrow-vertical-themed.svg   (arrow/panelarrow-vertical-themed.svg)
         skin/classic/global/checkbox/cbox-check.gif              (checkbox/cbox-check.gif)
         skin/classic/global/checkbox/cbox-check-dis.gif          (checkbox/cbox-check-dis.gif)
         skin/classic/global/console/console.css                  (console/console.css)
         skin/classic/global/console/console-toolbar.png          (console/console-toolbar.png)
         skin/classic/global/console/console-error-caret.gif      (console/console-error-caret.gif)
         skin/classic/global/console/console-error-dash.gif       (console/console-error-dash.gif)
         skin/classic/global/console/itemSelected.png             (console/itemSelected.png)
 *       skin/classic/global/dirListing/dirListing.css            (dirListing/dirListing.css)
@@ -220,17 +220,17 @@ toolkit.jar:
         skin/classic/aero/global/linkTree.css
 *       skin/classic/aero/global/listbox.css                             (listbox-aero.css)
 *       skin/classic/aero/global/menu.css                                (menu-aero.css)
 *       skin/classic/aero/global/menulist.css                            (menulist-aero.css)
         skin/classic/aero/global/netError.css
         skin/classic/aero/global/numberbox.css
 *       skin/classic/aero/global/notification.css                        (notification-aero.css)
         skin/classic/aero/global/passwordmgr.css
-*       skin/classic/aero/global/popup.css
+*       skin/classic/aero/global/popup.css                               (popup-aero.css)
         skin/classic/aero/global/preferences.css
         skin/classic/aero/global/printPageSetup.css
         skin/classic/aero/global/printPreview.css
         skin/classic/aero/global/progressmeter.css
         skin/classic/aero/global/radio.css
         skin/classic/aero/global/resizer.css
         skin/classic/aero/global/richlistbox.css
         skin/classic/aero/global/scale.css
@@ -262,19 +262,19 @@ toolkit.jar:
         skin/classic/aero/global/arrow/arrow-rit-hov.gif                 (arrow/arrow-rit.gif)
         skin/classic/aero/global/arrow/arrow-rit-sharp.gif               (arrow/arrow-rit-sharp.gif)
         skin/classic/aero/global/arrow/arrow-rit-sharp-end.gif           (arrow/arrow-rit-sharp-end.gif)
         skin/classic/aero/global/arrow/arrow-up.gif                      (arrow/arrow-up.gif)
         skin/classic/aero/global/arrow/arrow-up-dis.gif                  (arrow/arrow-up-dis.gif)
         skin/classic/aero/global/arrow/arrow-up-hov.gif                  (arrow/arrow-up-hov.gif)
         skin/classic/aero/global/arrow/arrow-up-sharp.gif                (arrow/arrow-up-sharp.gif)
         skin/classic/aero/global/arrow/panelarrow-horizontal.svg         (arrow/panelarrow-horizontal.svg)
-        skin/classic/aero/global/arrow/panelarrow-horizontal-white.png   (arrow/panelarrow-horizontal-white.png)
         skin/classic/aero/global/arrow/panelarrow-vertical.svg           (arrow/panelarrow-vertical.svg)
-        skin/classic/aero/global/arrow/panelarrow-vertical-white.png     (arrow/panelarrow-vertical-white.png)
+        skin/classic/aero/global/arrow/panelarrow-horizontal-themed.svg  (arrow/panelarrow-horizontal-themed.svg)
+        skin/classic/aero/global/arrow/panelarrow-vertical-themed.svg    (arrow/panelarrow-vertical-themed.svg)
         skin/classic/aero/global/checkbox/cbox-check.gif                 (checkbox/cbox-check.gif)
         skin/classic/aero/global/checkbox/cbox-check-dis.gif             (checkbox/cbox-check-dis.gif)
 *       skin/classic/aero/global/console/console.css                     (console/console-aero.css)
         skin/classic/aero/global/console/console-toolbar.png             (console/console-toolbar-aero.png)
         skin/classic/aero/global/console/console-error-caret.gif         (console/console-error-caret.gif)
         skin/classic/aero/global/console/console-error-dash.gif          (console/console-error-dash.gif)
         skin/classic/aero/global/console/itemSelected.png                (console/itemSelected.png)
 *       skin/classic/aero/global/dirListing/dirListing.css               (dirListing/dirListing.css)
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/windows/global/popup-aero.css
@@ -0,0 +1,7 @@
+% This Source Code Form is subject to the terms of the Mozilla Public
+% License, v. 2.0. If a copy of the MPL was not distributed with this
+% file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+%define WINDOWS_AERO
+%include popup.css
+%undef WINDOWS_AERO
--- a/toolkit/themes/windows/global/popup.css
+++ b/toolkit/themes/windows/global/popup.css
@@ -70,45 +70,56 @@ panel[type="arrow"][side="bottom"] {
 
 panel[type="arrow"][side="left"],
 panel[type="arrow"][side="right"] {
   margin-top: -20px;
   margin-bottom: -20px;
 }
 
 .panel-arrowcontent {
-  border-radius: 4px;
   padding: 10px;
-  color: -moz-DialogText;
-  background: -moz-Dialog;
+  color: -moz-FieldText;
+  background: -moz-field;
   background-clip: padding-box;
   border: 1px solid ThreeDShadow;
   margin: 4px;
 }
 
+%ifdef WINDOWS_AERO
+@media (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
+%endif
+/* < Win8 */
+.panel-arrowcontent {
+  border-radius: 4px;
+}
+%ifdef WINDOWS_AERO
+}
+%endif
+
 .panel-arrow[side="top"],
 .panel-arrow[side="bottom"] {
-  list-style-image: url("chrome://global/skin/arrow/panelarrow-vertical.svg");
+  list-style-image: url("chrome://global/skin/arrow/panelarrow-vertical-themed.svg");
   position: relative;
   margin-left: 10px;
   margin-right: 10px;
 }
 
 .panel-arrow[side="top"] {
   margin-bottom: -5px;
 }
 
 .panel-arrow[side="bottom"] {
   transform: scaleY(-1);
   margin-top: -5px;
 }
 
 .panel-arrow[side="left"],
 .panel-arrow[side="right"] {
-  list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal.svg");
+  list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal-themed.svg");
   position: relative;
   margin-top: 10px;
   margin-bottom: 10px;
 }
 
 .panel-arrow[side="left"] {
   margin-right: -5px;
 }
@@ -116,44 +127,29 @@ panel[type="arrow"][side="right"] {
 .panel-arrow[side="right"] {
   transform: scaleX(-1);
   margin-left: -5px;
 }
 
 %ifdef XP_WIN
 @media (-moz-windows-default-theme) {
   .panel-arrowcontent {
-    border-color: rgba(0,0,0,.3);
-    box-shadow: 0 0 4px rgba(0,0,0,.3);
-  }
-
-  .panel-arrowcontent[side="top"] {
-    background-image: linear-gradient(white 1px, rgba(255,255,255,0) 15px);
-  }
-
-  .panel-arrowcontent[side="bottom"] {
-    background-image: linear-gradient(to top, white 1px, rgba(255,255,255,0) 15px);
-  }
-
-  .panel-arrowcontent[side="left"] {
-    background-image: linear-gradient(to right, white 1px, rgba(255,255,255,0) 15px);
-  }
-
-  .panel-arrowcontent[side="right"] {
-    background-image: linear-gradient(to left, white 1px, rgba(255,255,255,0) 15px);
+    border-color: hsla(210,4%,10%,.2);
+    box-shadow: 0 3px 5px hsla(210,4%,10%,.1),
+                0 0 7px hsla(210,4%,10%,.1);
   }
 
   .panel-arrow[side="top"],
   .panel-arrow[side="bottom"] {
-    list-style-image: url("chrome://global/skin/arrow/panelarrow-vertical-white.png");
+    list-style-image: url("chrome://global/skin/arrow/panelarrow-vertical.svg");
   }
 
   .panel-arrow[side="left"],
   .panel-arrow[side="right"] {
-    list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal-white.png");
+    list-style-image: url("chrome://global/skin/arrow/panelarrow-horizontal.svg");
   }
 }
 %endif
 
 /* ::::: tooltip ::::: */
 
 tooltip {
   -moz-appearance: tooltip;
--- a/toolkit/themes/windows/mozapps/extensions/extensions.css
+++ b/toolkit/themes/windows/mozapps/extensions/extensions.css
@@ -294,21 +294,31 @@
     width: 12em;
   }
 }
 
 @media (-moz-windows-default-theme) {
   #header-search {
     -moz-appearance: none;
     border: 1px solid rgba(0, 0, 0, 0.32);
-    border-radius: 2.5px;
     padding-bottom: 2px;
     background-color: rgba(255, 255, 255, 0.4);
   }
 
+%ifdef WINDOWS_AERO
+@media (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
+%endif
+  #header-search {
+    border-radius: 2.5px;
+  }
+%ifdef WINDOWS_AERO
+}
+%endif
+
   #header-search:hover {
     background-color: rgba(255, 255, 255, .75);
   }
 
   #header-search[focused] {
     background-color: white;
   }
 }
@@ -1133,23 +1143,33 @@ button.button-link:not([disabled="true"]
 .header-button {
   -moz-appearance: none;
   padding: 1px 3px;
   color: #444;
   text-shadow: 0 0 3px white;
   background: linear-gradient(rgba(251, 252, 253, 0.95), rgba(246, 247, 248, 0) 49%, 
                               rgba(211, 212, 213, 0.45) 51%, rgba(225, 226, 229, 0.3));
   background-clip: padding-box;
-  border-radius: 2.5px;
   border: 1px solid rgba(31, 64, 100, 0.4);
   border-top-color: rgba(31, 64, 100, 0.3);
   box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.25) inset,
               0 0 2px 1px rgba(255, 255, 255, 0.25) inset;
 }
 
+%ifdef WINDOWS_AERO
+@media (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
+%endif
+  .header-button {
+    border-radius: 2.5px;
+  }
+%ifdef WINDOWS_AERO
+}
+%endif
+
 .header-button[disabled="true"] {
   opacity: 0.8;
 }
 
 .header-button[disabled="true"] > .toolbarbutton-icon {
   opacity: 0.4;
 }
 
--- a/widget/windows/WinTaskbar.cpp
+++ b/widget/windows/WinTaskbar.cpp
@@ -215,16 +215,17 @@ WinTaskbar::Initialize() {
                                   CLSCTX_INPROC_SERVER,
                                   IID_ITaskbarList4,
                                   (void**)&mTaskbar);
   if (FAILED(hr))
     return false;
 
   hr = mTaskbar->HrInit();
   if (FAILED(hr)) {
+    // This may fail with shell extensions like blackbox installed.
     NS_WARNING("Unable to initialize taskbar");
     NS_RELEASE(mTaskbar);
     return false;
   }
   return true;
 }
 
 WinTaskbar::WinTaskbar() 
@@ -361,17 +362,19 @@ WinTaskbar::RegisterAppUserModelID() {
   if (hDLL)
     ::FreeLibrary(hDLL);
 
   return retVal;
 }
 
 NS_IMETHODIMP
 WinTaskbar::GetAvailable(bool *aAvailable) {
-  *aAvailable = IsWin7OrLater();
+  // ITaskbarList4::HrInit() may fail with shell extensions like blackbox
+  // installed. Initialize early to return available=false in those cases.
+  *aAvailable = IsWin7OrLater() && Initialize();
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 WinTaskbar::CreateTaskbarTabPreview(nsIDocShell *shell, nsITaskbarPreviewController *controller, nsITaskbarTabPreview **_retval) {
   if (!Initialize())
     return NS_ERROR_NOT_AVAILABLE;