Bug 823180 - Australis tab styling for OS X. r=dao,mconley
authorMatthew Noorenberghe <mozilla@noorenberghe.ca>
Fri, 08 Mar 2013 02:57:00 -0800
changeset 155161 bc3e29ff72775848efaa5873b8ba7fd981487593
parent 155160 7d9922f790c4556283a8ac76a10ee01c07ed7e3a
child 155162 35d68446e000aaf1f6ca1d3f3bb5e9484b7671de
push id25666
push userjwein@mozilla.com
push dateMon, 18 Nov 2013 15:56:58 +0000
treeherdermozilla-central@f2adb62d07eb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdao, mconley
bugs823180
milestone23.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 823180 - Australis tab styling for OS X. r=dao,mconley
browser/base/content/browser.xul
browser/themes/osx/Toolbar-background-noise.png
browser/themes/osx/browser.css
browser/themes/osx/jar.mn
browser/themes/osx/tabbrowser/tab-active-middle.png
browser/themes/osx/tabbrowser/tab-background-end.png
browser/themes/osx/tabbrowser/tab-background-middle.png
browser/themes/osx/tabbrowser/tab-background-start.png
browser/themes/osx/tabbrowser/tab-bottom-hover-active.png
browser/themes/osx/tabbrowser/tab-bottom-normal-active.png
browser/themes/osx/tabbrowser/tab-bottom-selected-active.png
browser/themes/osx/tabbrowser/tab-stroke-end.png
browser/themes/osx/tabbrowser/tab-stroke-start.png
browser/themes/osx/tabbrowser/tab-top-hover-active.png
browser/themes/osx/tabbrowser/tab-top-hover-active@2x.png
browser/themes/osx/tabbrowser/tab-top-normal-active.png
browser/themes/osx/tabbrowser/tab-top-normal-active@2x.png
browser/themes/osx/tabbrowser/tab-top-selected-active.png
browser/themes/osx/tabbrowser/tab-top-selected-active@2x.png
browser/themes/shared/tabs.inc.css
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -1208,28 +1208,16 @@
 #endif
 #ifdef XP_MACOSX
     <svg:clipPath id="osx-keyhole-forward-clip-path" clipPathUnits="objectBoundingBox">
       <svg:path d="M 0,0 C 0.15,0.12 0.25,0.3 0.25,0.5 0.25,0.7 0.15,0.88 0,1 L 1,1 1,0 0,0 z"/>
     </svg:clipPath>
     <svg:clipPath id="osx-urlbar-back-button-clip-path" clipPathUnits="userSpaceOnUse">
       <svg:path d="m 0,-5 0,4.03 C 3.6,1.8 6,6.1 6,11 6,16 3.6,20 0,23 l 0,27 10000,0 0,-55 L 0,-5 z"/>
     </svg:clipPath>
-    <svg:clipPath id="osx-tab-ontop-left-curve-clip-path" clipPathUnits="userSpaceOnUse">
-      <svg:path d="M 9,0 C 7.3,0 6,1.3 6,3 l 0,14 c 0,3 -2.2,5 -5,5 l -1,0 0,1 12,0 0,-1 0,-19 0,-3 -3,0 z"/>
-    </svg:clipPath>
-    <svg:clipPath id="osx-tab-ontop-right-curve-clip-path" clipPathUnits="userSpaceOnUse">
-      <svg:path d="m 0,0 0,3 0,19 0,1 12,0 0,-1 -1,0 C 8.2,22 6,20 6,17 L 6,3 C 6,1.3 4.7,0 3,0 L 0,0 z"/>
-    </svg:clipPath>
-    <svg:clipPath id="osx-tab-onbottom-left-curve-clip-path" clipPathUnits="userSpaceOnUse">
-      <svg:path d="m 0,0 0,1 1,0 c 2.8,0 5,2.2 5,5 l 0,14 c 0,2 1.3,3 3,3 l 3,0 0,-3 L 12,1 12,0 0,0 z"/>
-    </svg:clipPath>
-    <svg:clipPath id="osx-tab-onbottom-right-curve-clip-path" clipPathUnits="userSpaceOnUse">
-      <svg:path d="m 0,0 0,1 0,19 0,3 3,0 c 1.7,0 3,-1 3,-3 L 6,6 C 6,3.2 8.2,1 11,1 L 12,1 12,0 0,0 z"/>
-    </svg:clipPath>
 #endif
   </svg:svg>
 
 </vbox>
 # <iframe id="tab-view"> is dynamically appended as the 2nd child of #tab-view-deck.
 #     Introducing the iframe dynamically, as needed, was found to be better than
 #     starting with an empty iframe here in browser.xul from a Ts standpoint.
 </deck>
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..aab0a02c84d63603ec1fc3a385a08c5cf5360fd2
GIT binary patch
literal 15667
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
Z%Ktt2F}8~Q0|)>B002ovPDHLkV1jXE7}o#*
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -1,16 +1,18 @@
 /* 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/. */
 
 @import url("chrome://global/skin/");
 
 %include shared.inc
 %filter substitution
+%define fgTabTexture linear-gradient(hsla(0,0%,100%,0.6), hsla(0,0%,100%,0.6) 0px, hsl(0,0%,99%) 1px, hsl(0,0%,92%))
+%define fgTabBackgroundMiddle linear-gradient(transparent, transparent)
 %define forwardTransitionLength 150ms
 %define conditionalForwardWithUrlbar window:not([chromehidden~=toolbar]) #navigator-toolbox[iconsize=large][mode=icons] > :-moz-any(#nav-bar[currentset*="unified-back-forward-button,urlbar-container"],#nav-bar:not([currentset])) > #unified-back-forward-button
 %define conditionalForwardWithUrlbarWidth 27
 
 @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
 @namespace html url("http://www.w3.org/1999/xhtml");
 
 #urlbar:-moz-lwtheme:not([focused="true"]),
@@ -57,59 +59,70 @@
 }
 
 /* Because of -moz-box-align: center above, separators will be invisible unless
    we set their min-height. See bug 583510 for more information. */
 toolbarseparator {
   min-height: 22px;
 }
 
+toolbox[tabsontop=true] > toolbar:not(#TabsToolbar):not(#nav-bar):not(#toolbar-menubar),
+toolbox[tabsontop=false] > toolbar:not(#nav-bar) {
+  margin-top: -2px; /* overlay the bottom border of the toolbar above us */
+  padding-top: 1px !important;
+}
+
+toolbox[tabsontop=true] > toolbar:not(#TabsToolbar):not(#nav-bar):not(:-moz-lwtheme) {
+  -moz-appearance: none;
+  background: url(chrome://browser/skin/Toolbar-background-noise.png) hsl(0,0%,83%);
+}
+
 /* We need more height when toolbar buttons show both icon and text. */
 toolbar[mode="full"] toolbarseparator {
   min-height: 36px;
 }
 
 #nav-bar {
   padding-bottom: 4px !important;
 }
 
 #PersonalToolbar {
   -moz-appearance: none;
-  margin-top: -2px; /* overlay the bottom border of the toolbar above us */
-  padding-top: 1px !important;
   background-color: -moz-mac-chrome-active;
-  border-bottom: 1px solid rgba(0, 0, 0, 0.57);
+  border-bottom: 2px solid;
+  -moz-border-bottom-colors: hsla(0,0%,0%,.15) hsla(0,0%,100%,.15);
 }
 
 #nav-bar[tabsontop=true],
 #nav-bar[tabsontop=true][collapsed=true]:not([customizing]) + toolbar,
 #nav-bar[tabsontop=true][collapsed=true]:not([customizing]) + #customToolbars + #PersonalToolbar {
   -moz-appearance: none;
   margin-top: 0; /* don't overlay the bottom border of the tabs toolbar */
   padding-top: 4px !important;
-  border-bottom: 1px solid rgba(0, 0, 0, 0.57);
-  background-color: -moz-mac-chrome-active;
-  background-image: linear-gradient(rgba(255,255,255,.43), rgba(255,255,255,0)) !important; /* override lwtheme style */
+  border-bottom: 2px solid;
+  -moz-border-bottom-colors: hsla(0,0%,0%,.15) hsla(0,0%,100%,.15);
+  background: url(chrome://browser/skin/Toolbar-background-noise.png),
+              linear-gradient(hsl(0,0%,93%), hsl(0,0%,83%)); !important; /* override lwtheme style */
+  background-clip: border-box;
   background-origin: border-box !important;
 }
 
 #PersonalToolbar:-moz-lwtheme,
 #nav-bar[tabsontop=true]:-moz-lwtheme,
 #nav-bar[tabsontop=true][collapsed=true]:not([customizing]) + toolbar:-moz-lwtheme,
 #nav-bar[tabsontop=true][collapsed=true]:not([customizing]) + #customToolbars + #PersonalToolbar:-moz-lwtheme {
   background-color: transparent;
   border-bottom-color: transparent;
 }
 
 #PersonalToolbar:not(:-moz-lwtheme):-moz-window-inactive,
 #nav-bar[tabsontop=true]:not(:-moz-lwtheme):-moz-window-inactive,
 #nav-bar[tabsontop=true][collapsed=true]:not([customizing]) + toolbar:not(:-moz-lwtheme):-moz-window-inactive,
 #nav-bar[tabsontop=true][collapsed=true]:not([customizing]) + #customToolbars + #PersonalToolbar:not(:-moz-lwtheme):-moz-window-inactive {
   background-color: -moz-mac-chrome-inactive;
-  border-bottom-color: rgba(0, 0, 0, 0.32);
 }
 
 /* ----- BOOKMARK TOOLBAR ----- */
 
 #personal-bookmarks {
   min-height: 17px; /* 16px button height + 1px margin-bottom */
 }
 
@@ -2160,16 +2173,18 @@ toolbarbutton.chevron > .toolbarbutton-m
 }
 
 /* ::::: tabbrowser ::::: */
 
 .tabbrowser-tabbox {
   margin: 0;
 }
 
+%include ../shared/tabs.inc.css
+
 .tab-throbber,
 .tab-icon-image {
   width: 16px;
   height: 16px;
   list-style-image: url("chrome://mozapps/skin/places/defaultFavicon.png");
 }
 
 .tab-throbber {
@@ -2191,337 +2206,123 @@ toolbarbutton.chevron > .toolbarbutton-m
   }
 
   .tab-throbber[progress] {
     list-style-image: url("chrome://browser/skin/tabbrowser/loading@2x.png");
   }
 }
 
 .tabbrowser-tab:not(:hover) > .tab-stack > .tab-content > .tab-icon-image:not([selected="true"]) {
-  opacity: .8;
+  opacity: .9;
+}
+
+.tab-label:not([selected="true"]) {
+  opacity: .7;
 }
 
 .tabbrowser-tab:not([pinned]):not([fadein]) {
   transition: min-width 200ms ease-out /* copied from browser/base/content/browser.css */,
               max-width 250ms ease-out /* copied from browser/base/content/browser.css */,
               opacity 50ms ease-out 100ms /* hide the tab for the last 100ms of the max-width transition */;
 }
 
-.tab-stack {
-  /* ensure stable tab height with and without toolbarbuttons on the tab bar */
-  height: 26px;
-}
-
 .tabbrowser-tab,
 .tabs-newtab-button {
   -moz-appearance: none;
   font: message-box;
   font-weight: bold;
   text-shadow: @loweredShadow@;
-  margin: 0;
-  padding: 0;
   border: none;
-  text-align: center;
   -moz-box-align: stretch;
 }
 
-%define TABSONTOP_TAB #tabbrowser-tabs[tabsontop="true"] > .tabbrowser-tab
-%define TABSONBOTTOM_TAB #tabbrowser-tabs[tabsontop="false"] > .tabbrowser-tab
-%define TABSONTOP_TAB_STACK #tabbrowser-tabs[tabsontop="true"] > .tabbrowser-tab > .tab-stack
-%define TABSONBOTTOM_TAB_STACK #tabbrowser-tabs[tabsontop="false"] > .tabbrowser-tab > .tab-stack
+.tabbrowser-tab {
+  color: #333;
+}
+
 %define TABSONTOP_NEWTAB_BUTTON #tabbrowser-tabs[tabsontop="true"] > .tabbrowser-arrowscrollbox > .tabs-newtab-button
 %define TABSONBOTTOM_NEWTAB_BUTTON #tabbrowser-tabs[tabsontop="false"] > .tabbrowser-arrowscrollbox > .tabs-newtab-button
 
-@TABSONTOP_TAB_STACK@ > .tab-background {
-  margin-top: 3px;
-}
-
-@TABSONBOTTOM_TAB_STACK@ > .tab-background {
-  margin-bottom: 3px;
-}
-
-@TABSONTOP_TAB_STACK@ > .tab-background:not([selected="true"]):not(:-moz-lwtheme) {
-  margin-bottom: 2px;
-}
-
-@TABSONBOTTOM_TAB_STACK@ > .tab-background:not([selected="true"]) {
-  margin-top: 2px;
-}
-
-.tab-background,
-.tab-content,
-.tabs-newtab-button > .toolbarbutton-icon {
-  -moz-margin-start: -5px;
-  -moz-margin-end: -4px;
-  pointer-events: none;
-}
-
-.tab-close-button {
-  pointer-events: auto;
+.tab-background-start[selected=true]::before,
+.tab-background-end[selected=true]::before {
+  /* The fill is in the image of ::after on OS X */
+  background: none;
 }
 
 .tabbrowser-tabs[closebuttons="hidden"] > * > * > * > .tab-close-button:not([pinned]) {
   display: -moz-box;
   visibility: hidden;
 }
 
-.tabbrowser-arrowscrollbox > .arrowscrollbox-scrollbox {
-  -moz-padding-start: 5px;
-  -moz-padding-end: 4px;
-}
-
-.tab-content,
 .tabs-newtab-button > .toolbarbutton-icon {
   -moz-box-align: center;
   border: solid transparent;
   border-width: 0 11px;
 }
 
-.tab-background-start,
-.tab-background-end {
-  width: 12px;
-  height: 21px;
-}
-
-.tab-background-middle {
-  -moz-box-flex: 1;
-}
-
-@TABSONTOP_TAB_STACK@ > .tab-background > .tab-background-start:-moz-locale-dir(ltr),
-@TABSONTOP_TAB_STACK@ > .tab-background > .tab-background-end:-moz-locale-dir(rtl) {
-  clip-path: url(chrome://browser/content/browser.xul#osx-tab-ontop-left-curve-clip-path);
-}
-
-@TABSONTOP_TAB_STACK@ > .tab-background > .tab-background-end:-moz-locale-dir(ltr),
-@TABSONTOP_TAB_STACK@ > .tab-background > .tab-background-start:-moz-locale-dir(rtl) {
-  clip-path: url(chrome://browser/content/browser.xul#osx-tab-ontop-right-curve-clip-path);
-}
-
-@TABSONBOTTOM_TAB_STACK@ > .tab-background > .tab-background-start:-moz-locale-dir(ltr),
-@TABSONBOTTOM_TAB_STACK@ > .tab-background > .tab-background-end:-moz-locale-dir(rtl) {
-  clip-path: url(chrome://browser/content/browser.xul#osx-tab-onbottom-left-curve-clip-path);
-}
-
-@TABSONBOTTOM_TAB_STACK@ > .tab-background > .tab-background-end:-moz-locale-dir(ltr),
-@TABSONBOTTOM_TAB_STACK@ > .tab-background > .tab-background-start:-moz-locale-dir(rtl) {
-  clip-path: url(chrome://browser/content/browser.xul#osx-tab-onbottom-right-curve-clip-path);
-}
-
-.tab-background-start[selected="true"]:not(:-moz-lwtheme),
-.tab-background-middle[selected="true"]:not(:-moz-lwtheme),
-.tab-background-end[selected="true"]:not(:-moz-lwtheme) {
-  background-color: -moz-mac-chrome-active;
-}
-
-.tab-background-start[selected="true"]:not(:-moz-lwtheme):-moz-window-inactive,
-.tab-background-middle[selected="true"]:not(:-moz-lwtheme):-moz-window-inactive,
-.tab-background-end[selected="true"]:not(:-moz-lwtheme):-moz-window-inactive {
-  background-color: -moz-mac-chrome-inactive;
-}
-
-.tab-background-start[pinned][titlechanged]:not([selected="true"]),
-.tab-background-end[pinned][titlechanged]:not([selected="true"]) {
-  background-image: linear-gradient(rgba(148,205,253,.2), rgba(148,205,253,.2)) !important;
-}
-
-@TABSONBOTTOM_TAB_STACK@ > .tab-background > .tab-background-middle[pinned][titlechanged]:not([selected="true"]) {
-  background-image: radial-gradient(circle farthest-corner at 50% 99%, rgba(254,254,255,1) 3%, rgba(210,235,255,.9) 12%, rgba(148,205,253,.6) 30%, rgba(148,205,253,.2) 70%);
-}
-
-@TABSONTOP_TAB_STACK@ > .tab-background > .tab-background-middle[pinned][titlechanged]:not([selected="true"]) {
-  background-image: radial-gradient(circle farthest-corner at 50% 2px, rgba(254,254,255,1) 3%, rgba(210,235,255,.9) 12%, rgba(148,205,253,.6) 30%, rgba(148,205,253,.2) 70%);
-}
-
-.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-start:-moz-lwtheme-brighttext:not([selected="true"]),
-.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-middle:-moz-lwtheme-brighttext:not([selected="true"]),
-.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-end:-moz-lwtheme-brighttext:not([selected="true"]) {
-  background-image: linear-gradient(hsla(0,0%,40%,.6), hsla(0,0%,30%,.6) 50%);
-}
-
-.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-start:-moz-lwtheme-darktext:not([selected="true"]),
-.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-middle:-moz-lwtheme-darktext:not([selected="true"]),
-.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-end:-moz-lwtheme-darktext:not([selected="true"]) {
-  background-image: linear-gradient(hsla(0,0%,60%,.5), hsla(0,0%,45%,.5) 50%);
-}
-
-@TABSONTOP_TAB_STACK@ > .tab-content,
-@TABSONTOP_NEWTAB_BUTTON@ > .toolbarbutton-icon {
-  border-image: url(chrome://browser/skin/tabbrowser/tab-top-normal-active.png) 0 11 fill repeat stretch;
-}
-
-@TABSONTOP_TAB@:hover > .tab-stack > .tab-content:not([selected="true"]),
-@TABSONTOP_NEWTAB_BUTTON@:hover > .toolbarbutton-icon {
-  border-image: url(chrome://browser/skin/tabbrowser/tab-top-hover-active.png) 0 11 fill repeat stretch;
-}
-
-@TABSONTOP_TAB_STACK@ > .tab-content[selected="true"] {
-  border-image: url(chrome://browser/skin/tabbrowser/tab-top-selected-active.png) 0 11 fill repeat stretch;
-}
-
-@TABSONBOTTOM_TAB_STACK@ > .tab-content,
-@TABSONBOTTOM_NEWTAB_BUTTON@ > .toolbarbutton-icon {
-  border-image: url(chrome://browser/skin/tabbrowser/tab-bottom-normal-active.png) 0 11 fill repeat stretch;
-}
-
-@media (min-resolution: 2dppx) {
-  @TABSONTOP_TAB_STACK@ > .tab-content,
-  @TABSONTOP_NEWTAB_BUTTON@ > .toolbarbutton-icon {
-    border-image: url(chrome://browser/skin/tabbrowser/tab-top-normal-active@2x.png) 0 22 fill repeat stretch;
-  }
-
-  @TABSONTOP_TAB@:hover > .tab-stack > .tab-content:not([selected="true"]),
-  @TABSONTOP_NEWTAB_BUTTON@:hover > .toolbarbutton-icon {
-    border-image: url(chrome://browser/skin/tabbrowser/tab-top-hover-active@2x.png) 0 22 fill repeat stretch;
-  }
-
-  @TABSONTOP_TAB_STACK@ > .tab-content[selected="true"] {
-    border-image: url(chrome://browser/skin/tabbrowser/tab-top-selected-active@2x.png) 0 22 fill repeat stretch;
-  }
-}
-
-@TABSONBOTTOM_TAB@:hover > .tab-stack > .tab-content:not([selected="true"]),
-@TABSONBOTTOM_NEWTAB_BUTTON@:hover > .toolbarbutton-icon {
-  border-image: url(chrome://browser/skin/tabbrowser/tab-bottom-hover-active.png) 0 11 fill repeat stretch;
-}
-
-@TABSONBOTTOM_TAB_STACK@ > .tab-content[selected="true"] {
-  border-image: url(chrome://browser/skin/tabbrowser/tab-bottom-selected-active.png) 0 11 fill repeat stretch;
-}
-
-/* preloading hack */
-#TabsToolbar::after {
-  content: '';
-  display: block;
-  background-image:
-    url(chrome://browser/skin/tabbrowser/tab-top-normal-active.png),
-    url(chrome://browser/skin/tabbrowser/tab-top-hover-active.png),
-    url(chrome://browser/skin/tabbrowser/tab-top-selected-active.png),
-    url(chrome://browser/skin/tabbrowser/tab-bottom-normal-active.png),
-    url(chrome://browser/skin/tabbrowser/tab-bottom-hover-active.png),
-    url(chrome://browser/skin/tabbrowser/tab-bottom-selected-active.png),
-    url(chrome://browser/skin/tabbrowser/tabbar-top-bg-active.png),
-    url(chrome://browser/skin/tabbrowser/tabbar-top-bg-inactive.png),
-    url(chrome://browser/skin/tabbrowser/tabbar-bottom-bg-active.png),
-    url(chrome://browser/skin/tabbrowser/tabbar-bottom-bg-inactive.png);
-}
-
-@media (min-resolution: 2dppx) {
-  #TabsToolbar::after {
-    content: '';
-    display: block;
-    background-image:
-      url(chrome://browser/skin/tabbrowser/tab-top-normal-active@2x.png),
-      url(chrome://browser/skin/tabbrowser/tab-top-hover-active@2x.png),
-      url(chrome://browser/skin/tabbrowser/tab-top-selected-active@2x.png),
-      url(chrome://browser/skin/tabbrowser/tab-bottom-normal-active.png),
-      url(chrome://browser/skin/tabbrowser/tab-bottom-hover-active.png),
-      url(chrome://browser/skin/tabbrowser/tab-bottom-selected-active.png),
-      url(chrome://browser/skin/tabbrowser/tabbar-top-bg-active.png),
-      url(chrome://browser/skin/tabbrowser/tabbar-top-bg-inactive.png),
-      url(chrome://browser/skin/tabbrowser/tabbar-bottom-bg-active.png),
-      url(chrome://browser/skin/tabbrowser/tabbar-bottom-bg-inactive.png);
-  }
-}
-
 .tabbrowser-tab:focus > .tab-stack {
   box-shadow: @focusRingShadow@;
 }
 
-.tabbrowser-tab:not([selected="true"]):not(:hover):not(:-moz-lwtheme) {
-  color: #222;
-}
-
-.tabbrowser-tab[selected="true"] {
-  color: #000;
-  z-index: 1;
-  position: relative;
-}
-
 .tabbrowser-tab:-moz-lwtheme {
   color: inherit;
   text-shadow: inherit;
 }
 
 #main-window:not([privatebrowsingmode=temporary]) #navigator-toolbox[tabsontop="true"]:not(:-moz-lwtheme)::before {
   /* We want the titlebar to be unified, but we still want to be able
    * to give #TabsToolbar a background. So we can't set -moz-appearance:
    * toolbar on #TabsToolbar itself. Instead, we set it on a box of the
    * right size which is put underneath #TabsToolbar.
    */
   content: '';
   display: block;
   -moz-appearance: toolbar;
-  height: 25px;
-  margin-bottom: -25px;
+  height: calc(@tabHeight@ + 1px);
+  margin-bottom: calc(-1px - @tabHeight@);
 }
 
 #TabsToolbar {
   -moz-appearance: none;
-  height: 26px;
   background-repeat: repeat-x;
 }
 
 #TabsToolbar[tabsontop="false"] {
   margin-top: -2px;
   padding-top: 2px;
 }
 
-/* For tabs-on-top, only fill the bottom 2px with the chrome background
- * color, so that the borders in tabbar-top-bg-*.png can mix with it.
- * In the top 24px the unified toolbar (from the ::before above) will show.
+/*
+ * Draw the bottom border of the tabstrip above ::before
  */
 #TabsToolbar[tabsontop="true"]:not(:-moz-lwtheme) {
-  padding-bottom: 2px;
-  background: url(chrome://browser/skin/tabbrowser/tabbar-top-bg-active.png),
-              linear-gradient(to top, -moz-mac-chrome-active 2px, transparent 2px);
-}
-
-#TabsToolbar[tabsontop="true"]:not(:-moz-lwtheme):-moz-window-inactive {
-  background: url(chrome://browser/skin/tabbrowser/tabbar-top-bg-inactive.png),
-              linear-gradient(to top, -moz-mac-chrome-inactive 2px, transparent 2px);
+  background: linear-gradient(to top, hsla(0,0%,0%,.3), hsla(0,0%,0%,.3) 1px, transparent 1px);
 }
 
 /* In tabs-on-bottom mode, fill the whole toolbar with the chrome
  * background color.
  */
 #TabsToolbar[tabsontop="false"]:not(:-moz-lwtheme) {
-  background: url(chrome://browser/skin/tabbrowser/tabbar-bottom-bg-active.png) -moz-mac-chrome-active;
+  background: -moz-mac-chrome-active;
 }
 
 #TabsToolbar[tabsontop="false"]:not(:-moz-lwtheme):-moz-window-inactive {
-  background: url(chrome://browser/skin/tabbrowser/tabbar-bottom-bg-inactive.png) -moz-mac-chrome-inactive;
+  background: -moz-mac-chrome-inactive;
 }
 
 #tabbrowser-tabs {
   -moz-box-align: stretch;
-  height: 26px;
-}
-
-#tabbrowser-tabs[tabsontop="true"] > .tabbrowser-arrowscrollbox > .arrowscrollbox-scrollbox:not(:-moz-lwtheme) {
-  margin-bottom: -2px;
-}
-
-#tabbrowser-tabs[tabsontop="false"] > .tabbrowser-arrowscrollbox > .arrowscrollbox-scrollbox {
-  margin-top: -2px;
 }
 
 @TABSONTOP_NEWTAB_BUTTON@ > .toolbarbutton-icon {
-  padding: 4px 0 2px;
-}
-
-@TABSONTOP_TAB_STACK@ > .tab-content {
-  padding-top: 2px;
+  padding: 6px 0 4px;
 }
 
 @TABSONBOTTOM_NEWTAB_BUTTON@ > .toolbarbutton-icon {
-  padding: 2px 0 4px;
-}
-
-@TABSONBOTTOM_TAB_STACK@ > .tab-content {
-  padding-bottom: 2px;
+  padding: 4px 0 6px;
 }
 
 /**
  * Tab Drag and Drop
  */
 
 .tab-drop-indicator {
   list-style-image: url(chrome://browser/skin/tabbrowser/tabDragIndicator.png);
--- a/browser/themes/osx/jar.mn
+++ b/browser/themes/osx/jar.mn
@@ -171,33 +171,30 @@ browser.jar:
   skin/classic/browser/social/chat-close.png                             (social/chat-close.png)
   skin/classic/browser/tabbrowser/alltabs-box-bkgnd-icon.png             (tabbrowser/alltabs-box-bkgnd-icon.png)
   skin/classic/browser/tabbrowser/newtab.png                             (tabbrowser/newtab.png)
   skin/classic/browser/tabbrowser/newtab@2x.png                          (tabbrowser/newtab@2x.png)
   skin/classic/browser/tabbrowser/connecting.png                         (tabbrowser/connecting.png)
   skin/classic/browser/tabbrowser/connecting@2x.png                      (tabbrowser/connecting@2x.png)
   skin/classic/browser/tabbrowser/loading.png                            (tabbrowser/loading.png)
   skin/classic/browser/tabbrowser/loading@2x.png                         (tabbrowser/loading@2x.png)
+  skin/classic/browser/tabbrowser/tab-active-middle.png                  (tabbrowser/tab-active-middle.png)
   skin/classic/browser/tabbrowser/tab-arrow-left.png                     (tabbrowser/tab-arrow-left.png)
   skin/classic/browser/tabbrowser/tab-arrow-left@2x.png                  (tabbrowser/tab-arrow-left@2x.png)
   skin/classic/browser/tabbrowser/tab-arrow-right.png                    (tabbrowser/tab-arrow-right.png)
   skin/classic/browser/tabbrowser/tab-arrow-right@2x.png                 (tabbrowser/tab-arrow-right@2x.png)
+  skin/classic/browser/tabbrowser/tab-background-end.png                 (tabbrowser/tab-background-end.png)
+  skin/classic/browser/tabbrowser/tab-background-middle.png              (tabbrowser/tab-background-middle.png)
+  skin/classic/browser/tabbrowser/tab-background-start.png               (tabbrowser/tab-background-start.png)
+  skin/classic/browser/tabbrowser/tab-stroke-end.png                     (tabbrowser/tab-stroke-end.png)
+  skin/classic/browser/tabbrowser/tab-stroke-start.png                   (tabbrowser/tab-stroke-start.png)
   skin/classic/browser/tabbrowser/tabbar-bottom-bg-active.png            (tabbrowser/tabbar-bottom-bg-active.png)
   skin/classic/browser/tabbrowser/tabbar-bottom-bg-inactive.png          (tabbrowser/tabbar-bottom-bg-inactive.png)
-  skin/classic/browser/tabbrowser/tab-bottom-normal-active.png           (tabbrowser/tab-bottom-normal-active.png)
-  skin/classic/browser/tabbrowser/tab-bottom-hover-active.png            (tabbrowser/tab-bottom-hover-active.png)
-  skin/classic/browser/tabbrowser/tab-bottom-selected-active.png         (tabbrowser/tab-bottom-selected-active.png)
   skin/classic/browser/tabbrowser/tabbar-top-bg-active.png               (tabbrowser/tabbar-top-bg-active.png)
   skin/classic/browser/tabbrowser/tabbar-top-bg-inactive.png             (tabbrowser/tabbar-top-bg-inactive.png)
-  skin/classic/browser/tabbrowser/tab-top-normal-active.png              (tabbrowser/tab-top-normal-active.png)
-  skin/classic/browser/tabbrowser/tab-top-normal-active@2x.png           (tabbrowser/tab-top-normal-active@2x.png)
-  skin/classic/browser/tabbrowser/tab-top-hover-active.png               (tabbrowser/tab-top-hover-active.png)
-  skin/classic/browser/tabbrowser/tab-top-hover-active@2x.png            (tabbrowser/tab-top-hover-active@2x.png)
-  skin/classic/browser/tabbrowser/tab-top-selected-active.png            (tabbrowser/tab-top-selected-active.png)
-  skin/classic/browser/tabbrowser/tab-top-selected-active@2x.png         (tabbrowser/tab-top-selected-active@2x.png)
   skin/classic/browser/tabbrowser/tab-overflow-border.png                (tabbrowser/tab-overflow-border.png)
   skin/classic/browser/tabbrowser/tabDragIndicator.png                   (tabbrowser/tabDragIndicator.png)
   skin/classic/browser/tabbrowser/tabDragIndicator@2x.png                (tabbrowser/tabDragIndicator.png)
   skin/classic/browser/tabview/close.png                    (tabview/close.png)
   skin/classic/browser/tabview/edit-light.png               (tabview/edit-light.png)
   skin/classic/browser/tabview/search.png                   (tabview/search.png)
   skin/classic/browser/tabview/stack-expander.png           (tabview/stack-expander.png)
   skin/classic/browser/tabview/tabview.png                  (tabview/tabview.png)
@@ -306,16 +303,17 @@ browser.jar:
   skin/classic/browser/syncCommon.css
   skin/classic/browser/syncQuota.css
   skin/classic/browser/syncProgress.css
 #endif
   skin/classic/browser/lion/keyhole-circle.png              (keyhole-circle-lion.png)
   skin/classic/browser/keyhole-circle@2x.png                (keyhole-circle-lion@2x.png)
   skin/classic/browser/lion/Toolbar.png                     (Toolbar-lion.png)
   skin/classic/browser/Toolbar@2x.png                       (Toolbar-lion@2x.png)
+  skin/classic/browser/Toolbar-background-noise.png         (Toolbar-background-noise.png)
   skin/classic/browser/lion/toolbarbutton-dropmarker.png    (toolbarbutton-dropmarker-lion.png)
   skin/classic/browser/toolbarbutton-dropmarker@2x.png      (toolbarbutton-dropmarker-lion@2x.png)
   skin/classic/browser/lion/tabbrowser/alltabs-box-bkgnd-icon.png      (tabbrowser/alltabs-box-bkgnd-icon-lion.png)
   skin/classic/browser/tabbrowser/alltabs-box-bkgnd-icon@2x.png        (tabbrowser/alltabs-box-bkgnd-icon-lion@2x.png)
   skin/classic/browser/lion/tabview/tabview.png                        (tabview/tabview-lion.png)
   skin/classic/browser/lion/places/toolbar.png              (places/toolbar-lion.png)
   skin/classic/browser/webapps-16.png
   skin/classic/browser/webapps-16@2x.png
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7872d03678032661cced28b941f1fbd353019707
GIT binary patch
literal 227
zc%17D@N?(olHy`uVBq!ia0vp^Y(Ol}0V0ox?vVykk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5XT0LDHLo_B{4UFbHpulmt?oHP2_wSbbd7QFpXP5AN%<Q$1
z>A=KA-|NyGvfrL+FmyZFu&Hytfld(H<m%q2>~)57d$ex1x5Y(lxNvmsT-hCM7B4@`
z&trKhRmN8+o0RRTa;5LQ^^MzX1-(}t`uO)gDLI!gb!)}W)lzHtj{Oq5eqrA#Q8l3+
Z>4mxm7tMYeO#nKG!PC{xWt~$(699F7SXlr7
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9374cbda64b64563200cb6b8488ef3495781375b
GIT binary patch
literal 677
zc$@*H0$TlvP)<h;3K|Lk000e1NJLTq0015U0018d1^@s6@N9ht0007PNkl<Zc-p<!
z&1xD^7{+lE$2!_72`SR1P%6?&KWHh9X*9+d<40mlQng7M0<EQ8xEF;8-h(@@z>Qlk
zz*Rueg=;ri1XOe(Sp-26)8~aVAfW{3%(TMqU5N1K9Ovka1}`Hcf*y1rz$`OEZf<Tg
zYNFRC_yF(VB`m@t5J3l8m{mJYBiZlwf1aP8f3H+3hq+uXU^bf_2-(2`A_!`)UUPkY
zy$ex@!!h3cadma|yH=|m9~~We5qbr4@Bp-G#c4$TVh;{SqtUN&xg1+qSXf5vIg1NY
zd^{d&cu{!g9ufG~?RFDOOG~SWy<qX#e;t<MF^b#mc8Wg*ozggk!&8bjo6Qq;^&3G@
z8s44~#ShZybWrh@v+$M-;ZCP>VltVW2tEWsNjM}^G?hw)5PZhHY8DR4w0(AVcEG-C
zQAs!;Q*byOex0A6cOz&5fj8{u5J@JJwB3u+(c%ejatIZR#V_plT+g%JG<+QVjYcDe
z*hdgS%M;$<;JduMq!qis$Q$-@+IBb`n+QGz9Zz_jQy`no?jUI8InOjaoP4EHX`lBz
z(^%uQ-fFcdyu$N6({OX5_?E}x2_k5b`&UV0RRM24pQly7mV2ydxD;^rdc8eS6nzMq
z<*b^9Q=yI1)6)oIZ@~cCY2upO+uId|T!X=2-)gl=HwgO4IKgK$chUH)g0*V38poFV
z*||1MJ`6B35-Gf_6pMT7^?KZ5vCzujfC&tszxzZ&DC|(lGI%a7E@GKXW={}=00QsX
z_CJ}pLDZ@pmN+5QZnxuwLLr(+BzAGu!#10ZF1|VG8u<TVcHaL0pr1FohJ36x00000
LNkvXXu0mjfU3W3*
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..060a3afa4abd9a732e2da16ecb57d0b4df0c851d
GIT binary patch
literal 153
zc%17D@N?(olHy`uVBq!ia0vp^Y(Ol}0V0ox?vVykk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5XtUX;ELp07OCnh93NIJk2(GVfL`pEtL^}ZXt{`~*{Uowo-
z&F$F#9d8b39(35$w@}3~Y(mekIb0{%wHX)|>dUV;d=$P4Xbgj=tDnm{r-UW|Vtq7`
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5b0c62ca637166ead5fbdac5e054e69dab18e7f9
GIT binary patch
literal 657
zc$@)|0&e|@P)<h;3K|Lk000e1NJLTq0015U0018d1^@s6@N9ht00075Nkl<Zc-p<z
zO=}uK9LI4R*SbxsL@d&#P!wsUjkJ_%8ckwt;zJ%ankF^`T1$KIE(R2Q58iwQUcCAO
zJOvDT@a)AyKt&JYK?G6LpYRtGA>ht#Dts=>?0k1-9aJ_P4kd-pBeFm^P=FG6SR9i)
zN-;Ubcz6cO@CMBA5k5b}Dme=3z@%2It;uB4ozLe_tJUhyR;%?J_e7+O%Hc6A!P`(M
z<h;7NI_q}3e=+XYU@$m?V+g>ZY&06Nx*g>x`dX{iuI6&NV87r0gWxIn;9!;%;RTB7
zEf&jqqtOUs;vW>)zmF7A1-vwwOp|DE5`D-p2a8}Xm&@mvFaUe=kYtNvv6u&wozSGa
z^ANk*rz(}oR<GC3DY`Q+v8#O*jYhq+#a<!Agn2MuUS6Ki_IZR5v&|}vMzhiD^}f?&
zZXsC0lOwboiA20~bX-EQZnF|hnM~%0-r2TLEMYnD@TpWP1##U4TSBph7s1}?bdG4E
zZ$hzz74Y0@wQl3uE;w1Ro?k;Ek=Vy|H+*Hme15apte>{o!GiVuu2m`(KRx{>3znZi
zox|bq;Q9_tvcZDo7`;oSQhxf9tg{ljS~bt}Tg_(EM^A2NHE&c7Phce;j~~!kw22|R
zxw)A|!8=hU=nV#gr`>M*F~$ySV$6gnHVrChr3P%Vt57H$WBew35o;Q~8&gtH1@Cn_
zou^nVj-yVxaaAk|BRKuz_5$?qf#W#$#l?m1`uaME!4A5~Dh1iCcerFU8dq>e_rl@u
rVLF`-)M~ZyD!pK13d|Aa|9AKw@hUgEwE0yI00000NkvXXu0mjfafUN!
deleted file mode 100644
index a5fdaba4bb0f223984253e0839b70b9f81f0e7f2..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 1a0dceea376d576199d3c6d4bcf8ac974104c4c3..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0596cb28dd471f83629de71d56cfd8b348e4d9c1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3efb44726fa16622366738ffbcba296ad0277298
GIT binary patch
literal 932
zc%17D@N?(olHy`uVBq!ia0vp^azHH4!3-piZ|XG#Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07#QONd_r7-ikV=5k&zKdVu~=L0w*UYpqkI0KQmx}%*;$=
zE><;o02ddRsHmujhzO7&BO?RUE-Nc5C@83;q-1AjXJKLC=;+wp-R<M!lb4s*(9qD)
z(b3h_HDkt%Ns}gh`t)fg7_3;aV#kghd-m-4@ZrPGojdpK+jr{JsjFA7o<D#7+O=!f
zuV23k29F*+dIknBUc7kl;KAFsZ=Zs}D=_%}{ri_MUw;4o{qp5YAoum_*Kgju0jhcT
z?%n(M?|~+N{P+=QBhZCFWnaI3{r2q}P|J@WKYsrF`Rms&pvFIc{`~#>_gTuMcA&=+
zN`m}?85o(ESy)(E+1NQaIC=T_1q8&z#3dx9W##1+6qQv}b#(Rg4NOeUZET&~ynK9v
zf`Y@s!Xu&*64TOha?4wLdio|!U9fP?=IuLo?>&6#^u_Bp@7{k5bpPx3A3uNn{`;Tb
z7C#PPwB~!dIEHAPFP)U__t-(8W%X^djj~R2SPCY{MpSxMXezwDm-xP3e#WZ54_SU5
z%`ll2c=r0$yIKC1Z|Zd3Icu=-&jpj+XLUN4mHz+!@7JHA9q~ufgymzdu3x_Y`19>n
z{XEKd86CE_r~Tj2yX-|-?!9lJlD&t1|6H_7uX|$MGS#=Qw*L2E{!tswclz~(M`yLR
z&Cd)udX=Hv^T)I4-tw25{MIMU^r?JYA`*Gef1j`q!=^jcb4yFloYax6+Ro)5IOF)?
zGq*Q19c;LIwY5KkD@j^y?)SZ%f{R2{Ja6uqKD#?N&BWo*(>3Y;{$5v*+!D9cZh`8@
zEerR&*tU1AwS@oE&sDPJCCfV!7?m_HiM`%rJUOpuhGYucj1{>%JOA2T;ZyeH6mS&&
zoLf5CB`=TdM|cBI1CtBKx!b#L9rF}9%D2OjOHqJh5!1dem3QCBzn`{Kra*&Zf(F9^
z74FF5n#x)FJOzh%#28t4{Fr^`zkK)O<MY3XpXDR;o?iHQ<IrzV0`_$Eb6Mw<&;$US
C!Jp#*
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8e0cd509f524a09b26556f5c3f1dd2eb215824bd
GIT binary patch
literal 903
zc%17D@N?(olHy`uVBq!ia0vp^azHH4!3-piZ|XG#Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07#QONd_r7-ikV=5k&zKdVu~=L0w*UYpqkI0KQmx}%*;$=
zE><;o02ddRsHmujhzO7&BO?RUE-Nc5C@83;q-1AjXJKLC=;+wp-R<M!lb4s*(9qD)
z(b3h_HDkt%Ns}gh`t)fg7_3;aV#kghd-m-4@ZrPGojdpK+jr{JsjFA7o<D#7+O=!f
zuV23k29F*+dIknBUc7kl;KAFsZ=Zs}D=_%}{ri_MUw;4o{qp5YAoum_*Kgju0jhcT
z?%n(M?|~+N{P+=QBhZCFWnaI3{r2q}P|J@WKYsrF`Rms&pvFIc{`~#>_gTuMcA&=+
zN`m}?85o(ESy)(E+1NQaIC=T_1q8&z#3dx9W##1+6qQv}b#(Rg4NOeUZET&~ynK9v
zf`Y@s!Xu&*64TOha?4wLdio|!U9fP?=IuLo?>&6#^u_Bp@7{k5bpPx3A3uNn{`;Tb
z7C#PPv<7*)IEHAPFP$76e8@ngrQBaigqtZyr<_Gb!`MRW|Nr@lk@B~gS|_#pOnU!j
z-f5qXS*`*m%m=N!X6?K_E&Yg<=Heal-yf;lr}CDbfB!hoT(ltHZ&%`^WuB5X?w4QI
zs9j0ARQmk%&(Kv`+g>O~KV($9n^AhfIj8q*S`+(>lKh+ca>@HoOnW{%Z=-4X?zlR!
z_g9`(-SpR6ZK(b?WA|RkLRS6FnLm%*o_YDt^K$-0Jg2l*KUlHTK4!}HXU`_xUAJIL
zMCjzYZLu-4gfzo~)_<>Uba=3L=gx}%p%&ARe)f{-HCsJNq+$A*bsNt{P0LPIFTZP^
zShpw2S&7AI3hO-E6B;wu$G0rX2yjt2ZU1o6#}t8tgG?)xSXkyT_GMa0&d~{&z$(-r
z;c`Ix+uLgfng5^uWC;4n$JD!H=bMt-?oO!(E0dLO=JQ(hw)Rc17F1GXY4#NP!oOxp
VOnX#Gl?5n`db;|#taD0e0sv(ag$e)w
deleted file mode 100644
index f41b253d0bce22c49f06bba7bdf1934813ff3562..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a8215a283d57a01334bd53c4a864ad373cfc4cd8..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 5987a2fe32d7e26d7b0ae3f80625e69ae9b7d45f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 658b291d3940b0a53d321f54ff86e2ade53cf82f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 930e76588fed21ab53cd454f1e7f0d82989b814b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7de41e77b273e66b7578c11c96efbe054b1655fc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/themes/shared/tabs.inc.css
+++ b/browser/themes/shared/tabs.inc.css
@@ -3,16 +3,26 @@
  * 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/. */
 %endif
 
 %define tabHeight 30px
 %define tabCurveWidth 30px
 %define tabCurveHalfWidth 15px
 
+/* image preloading hack */
+#TabsToolbar::after {
+  content: '';
+  display: block;
+  background-image:
+    url(chrome://browser/skin/tabbrowser/tab-background-end.png),
+    url(chrome://browser/skin/tabbrowser/tab-background-middle.png),
+    url(chrome://browser/skin/tabbrowser/tab-background-start.png);
+}
+
 .tabbrowser-tab,
 .tabs-newtab-button {
   -moz-appearance: none;
   background-color: transparent;
   border-radius: 0;
   border-width: 0;
   margin: 0;
   padding: 0;