Merge mozilla-central to mozilla-inbound
authorMatt Brubeck <mbrubeck@mozilla.com>
Wed, 07 Sep 2011 21:55:42 -0700
changeset 76711 c1e043e89bc49696c054a9ebda52356955e3057e
parent 76710 ea4291bb1c1574be796efe8780408c147e02cb43 (current diff)
parent 76651 b7d269a291b6f91a20958011d610cf8d443bd685 (diff)
child 76712 f08b80318718f3070348da0a6f211a30ceadf11c
push id3
push userfelipc@gmail.com
push dateFri, 30 Sep 2011 20:09:13 +0000
milestone9.0a1
Merge mozilla-central to mozilla-inbound
mobile/chrome/content/browser.xul
--- a/client.mk
+++ b/client.mk
@@ -263,16 +263,17 @@ configure depend realbuild install expor
 else
 
 # MOZ_CURRENT_PROJECT: either doing a single-project build, or building an
 # individual project in a multi-project build.
 
 ####################################
 # Configure
 
+MAKEFILE      = $(wildcard $(OBJDIR)/Makefile)
 CONFIG_STATUS = $(wildcard $(OBJDIR)/config.status)
 CONFIG_CACHE  = $(wildcard $(OBJDIR)/config.cache)
 
 EXTRA_CONFIG_DEPS := \
 	$(TOPSRCDIR)/aclocal.m4 \
 	$(wildcard $(TOPSRCDIR)/build/autoconf/*.m4) \
 	$(TOPSRCDIR)/js/src/aclocal.m4 \
 	$(NULL)
@@ -311,17 +312,23 @@ endif
 	@if test ! -d $(OBJDIR); then $(MKDIR) $(OBJDIR); else true; fi
 	@echo cd $(OBJDIR);
 	@echo $(CONFIGURE) $(CONFIGURE_ARGS)
 	@cd $(OBJDIR) && $(BUILD_PROJECT_ARG) $(CONFIGURE_ENV_ARGS) $(CONFIGURE) $(CONFIGURE_ARGS) \
 	  || ( echo "*** Fix above errors and then restart with\
                \"$(MAKE) -f client.mk build\"" && exit 1 )
 	@touch $(OBJDIR)/Makefile
 
-$(OBJDIR)/Makefile $(OBJDIR)/config.status: $(CONFIG_STATUS_DEPS)
+ifneq (,$(MAKEFILE))
+$(OBJDIR)/Makefile: $(OBJDIR)/config.status
+
+$(OBJDIR)/config.status: $(CONFIG_STATUS_DEPS)
+else
+$(OBJDIR)/Makefile: $(CONFIG_STATUS_DEPS)
+endif
 	@$(MAKE) -f $(TOPSRCDIR)/client.mk configure
 
 ifneq (,$(CONFIG_STATUS))
 $(OBJDIR)/config/autoconf.mk: $(TOPSRCDIR)/config/autoconf.mk.in
 	cd $(OBJDIR); \
 	  CONFIG_FILES=config/autoconf.mk ./config.status
 endif
 
--- a/content/base/src/nsGenericElement.cpp
+++ b/content/base/src/nsGenericElement.cpp
@@ -5529,18 +5529,20 @@ nsGenericElement::SizeOf() const
 #define TOUCH_EVENT EVENT
 #include "nsEventNameList.h"
 #undef TOUCH_EVENT
 #undef EVENT
 
 PRBool
 nsINode::Contains(const nsINode* aOther) const
 {
+  if (aOther == this) {
+    return PR_TRUE;
+  }
   if (!aOther ||
-      aOther == this ||
       GetOwnerDoc() != aOther->GetOwnerDoc() ||
       IsInDoc() != aOther->IsInDoc() ||
       !(aOther->IsElement() ||
         aOther->IsNodeOfType(nsINode::eCONTENT)) ||
       !GetFirstChild()) {
     return PR_FALSE;
   }
 
--- a/content/base/test/chrome/test_bug683852.xul
+++ b/content/base/test/chrome/test_bug683852.xul
@@ -16,23 +16,25 @@ https://bugzilla.mozilla.org/show_bug.cg
 
   <!-- test code goes here -->
   <script type="application/javascript">
   <![CDATA[
   /** Test for Bug 683852 **/
   SimpleTest.waitForExplicitFinish();
 
   function startTest() {
-    is(document.contains(document), false, "Document should not contain itself!");
+    is(document.contains(document), true, "Document should contain itself!");
 
     var tb = document.getElementById("testbutton");
     is(document.contains(tb), true, "Document should contain element in it!");
+    is(tb.contains(tb), true, "Element should contain itself.")
     var anon = document.getAnonymousElementByAttribute(tb, "anonid", "button-box");
     is(document.contains(anon), false, "Document should not contain anonymous element in it!");
     is(tb.contains(anon), false, "Element should not contain anonymous element in it!");
+    is(anon.contains(anon), true, "Anonymous element should contain itself.")
     is(document.documentElement.contains(tb), true, "Element should contain element in it!");
     is(document.contains(document.createElement("foo")), false, "Document shouldn't contain element which is't in the document");
     is(document.contains(document.createTextNode("foo")), false, "Document shouldn't contain text node which is't in the document");
 
     var link = document.getElementById("link");
     is(document.contains(link.firstChild), true,
        "Document should contain a text node in it.");
     is(link.contains(link.firstChild), true,
@@ -45,17 +47,17 @@ https://bugzilla.mozilla.org/show_bug.cg
     is(pi.contains(document), false, "Processing instruction shouldn't contain document");
     document.documentElement.appendChild(pi);
     document.contains(pi, true, "Document should contain processing instruction");
 
     var df = document.createRange().createContextualFragment("<div>foo</div>");
     is(df.contains(df.firstChild), true, "Document fragment should contain its child");
     is(df.contains(df.firstChild.firstChild), true,
        "Document fragment should contain its descendant");
-    is(df.contains(df), false, "Document fragment shouldn't contain itself.");
+    is(df.contains(df), true, "Document fragment should contain itself.");
 
     var d = document.implementation.createHTMLDocument("");
     is(document.contains(d), false,
        "Document shouldn't contain another document.");
     is(document.contains(d.createElement("div")), false,
        "Document shouldn't contain an element from another document.");
 
     SimpleTest.finish();
--- a/mobile/chrome/content/Util.js
+++ b/mobile/chrome/content/Util.js
@@ -156,25 +156,39 @@ let Util = {
     Services.io.offline = false;
   },
 
   isParentProcess: function isInParentProcess() {
     let appInfo = Cc["@mozilla.org/xre/app-info;1"];
     return (!appInfo || appInfo.getService(Ci.nsIXULRuntime).processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT);
   },
 
-  isTablet: function isTablet() {
+  isTablet: function isTablet(options) {
+    let forceUpdate = options && 'forceUpdate' in options && options.forceUpdate;
+
+    if ('_isTablet' in this && !forceUpdate)
+      return this._isTablet;
+
+    let tabletPref = Services.prefs.getIntPref("browser.ui.layout.tablet");
+
+    // Act according to user prefs if tablet mode has been
+    // explicitly disabled or enabled.
+    if (tabletPref == 0)
+      return this._isTablet = false;
+    else if (tabletPref == 1)
+      return this._isTablet = true;
+
     let dpi = this.displayDPI;
     if (dpi <= 96)
-      return (window.innerWidth > 1024);
+      return this._isTablet = (window.innerWidth > 1024);
 
     // See the tablet_panel_minwidth from mobile/themes/core/defines.inc
     let tablet_panel_minwidth = 124;
     let dpmm = 25.4 * window.innerWidth / dpi;
-    return (dpmm >= tablet_panel_minwidth);
+    return this._isTablet = (dpmm >= tablet_panel_minwidth);
   },
 
   isPortrait: function isPortrait() {
 #ifdef MOZ_PLATFORM_MAEMO
     return (screen.width <= screen.height);
 #elifdef ANDROID
     return (screen.width <= screen.height);
 #else
--- a/mobile/chrome/content/browser-ui.js
+++ b/mobile/chrome/content/browser-ui.js
@@ -181,16 +181,18 @@ var BrowserUI = {
 
   _toolbarLocked: 0,
 
   isToolbarLocked: function isToolbarLocked() {
     return this._toolbarLocked;
   },
 
   lockToolbar: function lockToolbar() {
+    if (Util.isTablet())
+      return;
     this._toolbarLocked++;
     document.getElementById("toolbar-moveable-container").top = "0";
     if (this._toolbarLocked == 1)
       Browser.forceChromeReflow();
   },
 
   unlockToolbar: function unlockToolbar() {
     if (!this._toolbarLocked)
@@ -374,21 +376,16 @@ var BrowserUI = {
   get toolbarH() {
     if (!this._toolbarH) {
       let toolbar = document.getElementById("toolbar-main");
       this._toolbarH = toolbar.boxObject.height;
     }
     return this._toolbarH;
   },
 
-  get sidebarW() {
-    delete this._sidebarW;
-    return this._sidebarW = Elements.controls.getBoundingClientRect().width;
-  },
-
   sizeControls: function(windowW, windowH) {
     // tabs
     document.getElementById("tabs").resize();
     AwesomeScreen.doResize(windowW, windowH);
 
     // content navigator helper
     document.getElementById("content-navigator").contentHasChanged();
   },
@@ -547,21 +544,37 @@ var BrowserUI = {
   },
 
   observe: function observe(aSubject, aTopic, aData) {
     if (aTopic == "nsPref:changed" && aData == "browser.ui.layout.tablet")
       this.updateTabletLayout();
   },
 
   updateTabletLayout: function updateTabletLayout() {
-    let tabletPref = Services.prefs.getIntPref("browser.ui.layout.tablet");
-    if (tabletPref == 1 || (tabletPref == -1 && Util.isTablet()))
+    if (Util.isTablet({ forceUpdate: true })) {
+      this.unlockToolbar();
       Elements.urlbarState.setAttribute("tablet", "true");
-    else
+    } else {
       Elements.urlbarState.removeAttribute("tablet");
+    }
+
+    // Tablet mode changes the size of the thumbnails
+    // in the tabs container. Hence we have to force a
+    // thumbnail update on all tabs.
+    setTimeout(function(self) {
+      self._updateAllTabThumbnails();
+    }, 0, this);
+  },
+
+  _updateAllTabThumbnails: function() {
+    let tabs = Browser.tabs;
+
+    tabs.forEach(function(tab) {
+      tab.updateThumbnail({ force: true });
+    });
   },
 
   update: function(aState) {
     let browser = Browser.selectedBrowser;
 
     switch (aState) {
       case TOOLBARSTATE_LOADED:
         this._updateToolbar();
--- a/mobile/chrome/content/browser.js
+++ b/mobile/chrome/content/browser.js
@@ -1033,17 +1033,17 @@ var Browser = {
         snappedX = -ritevis * ritew * dirVal;
       }
     }
 
     return Math.round(snappedX);
   },
 
   tryFloatToolbar: function tryFloatToolbar(dx, dy) {
-    if (this.floatedWhileDragging)
+    if (this.floatedWhileDragging || Util.isTablet())
       return;
 
     let [leftvis, ritevis, leftw, ritew] = Browser.computeSidebarVisibility(dx, dy);
     if (leftvis > 0 || ritevis > 0) {
       BrowserUI.lockToolbar();
       this.floatedWhileDragging = true;
     }
   },
@@ -1284,17 +1284,17 @@ Browser.MainDragger.prototype = {
     return { x: true, y: true };
   },
 
   dragStart: function dragStart(clientX, clientY, target, scroller) {
     let browser = getBrowser();
     let bcr = browser.getBoundingClientRect();
     this._contentView = browser.getViewAt(clientX - bcr.left, clientY - bcr.top);
     this._stopAtSidebar = 0;
-    this._panToolbars = !Elements.urlbarState.getAttribute("tablet");
+    this._panToolbars = !Util.isTablet();
     if (this._sidebarTimeout) {
       clearTimeout(this._sidebarTimeout);
       this._sidebarTimeout = null;
     }
   },
 
   dragStop: function dragStop(dx, dy, scroller) {
     if (this._contentView && this._contentView._updateCacheViewport)
@@ -1903,17 +1903,17 @@ const ContentTouchHandler = {
     let bcr = browser.getBoundingClientRect();
     let rect = new Rect(0, 0, window.innerWidth, window.innerHeight);
     rect.restrictTo(Rect.fromRect(bcr));
 
     // Check if the user touched near to one of the edges of the browser area
     // or if the urlbar is showing
     this.canCancelPan = (aX >= rect.left + kSafetyX) && (aX <= rect.right - kSafetyX) &&
                         (aY >= rect.top  + kSafetyY) &&
-                        (bcr.top == 0 || Elements.urlbarState.getAttribute("tablet"));
+                        (bcr.top == 0 || Util.isTablet());
   },
 
   tapDown: function tapDown(aX, aY) {
     let browser = getBrowser();
     browser.focus();
 
     // if the page might capture touch events, we give it the option
     this.updateCanCancel(aX, aY);
@@ -2892,17 +2892,16 @@ Tab.prototype = {
   _createBrowser: function _createBrowser(aURI, aInsertBefore) {
     if (this._browser)
       throw "Browser already exists";
 
     // Create a notification box around the browser
     let notification = this._notification = document.createElement("notificationbox");
     notification.classList.add("inputHandler");
 
-    // Create the browser using the current width the dynamically size the height
     let browser = this._browser = document.createElement("browser");
     browser.setAttribute("class", "viewable-width viewable-height");
     this._chromeTab.linkedBrowser = browser;
 
     browser.setAttribute("type", "content");
 
     let useRemote = Services.prefs.getBoolPref("browser.tabs.remote");
     let useLocal = Util.isLocalScheme(aURI);
@@ -3146,25 +3145,28 @@ function rendererFactory(aBrowser, aCanv
 
 /* ViewableAreaObserver is an helper object where width/height represents the
  * size of the currently viewable area in pixels. This is use instead of
  * window.innerHeight/innerWidth because some keyboards does not resize the
  * window but floats over it.
  */
 var ViewableAreaObserver = {
   get width() {
-    return this._width || window.innerWidth;
+    let width = this._width || window.innerWidth;
+    if (Util.isTablet()) {
+      let sidebarWidth = Math.round(Elements.tabs.getBoundingClientRect().width);
+      width -= sidebarWidth;
+    }
+    return width;
   },
 
   get height() {
     let height = (this._height || window.innerHeight);
-    if (Elements.urlbarState.getAttribute("tablet")) {
-      let toolbarHeight = Math.round(document.getElementById("toolbar-main").getBoundingClientRect().height);
-      height -= toolbarHeight;
-    }
+    if (Util.isTablet())
+      height -= BrowserUI.toolbarH;
     return height;
   },
 
   _isKeyboardOpened: true,
   get isKeyboardOpened() {
     return this._isKeyboardOpened;
   },
 
--- a/mobile/chrome/content/browser.xul
+++ b/mobile/chrome/content/browser.xul
@@ -193,32 +193,32 @@
     <key id="key_newTab" key="t" modifiers="accel" command="cmd_newTab"/>
     <key id="key_closeTab" key="w" modifiers="accel" command="cmd_closeTab"/>
     <key id="key_undoCloseTab" key="t" modifiers="accel,shift" command="cmd_undoCloseTab"/>
   </keyset>
 
   <stack flex="1" id="stack">
     <scrollbox id="controls-scrollbox" style="overflow: hidden; -moz-box-orient: horizontal; position: relative;" flex="1" observes="bcast_urlbarState">
       <vbox id="tabs-sidebar" class="sidebar" observes="bcast_uidiscovery">
-        <spacer class="toolbar-height"/>
+        <spacer class="toolbar-height" id="tabs-spacer" observes="bcast_urlbarState"/>
         <!-- Left toolbar -->
-        <vbox id="tabs-container" class="panel-dark" flex="1">
-          <vbox id="tabs" flex="1"
+        <vbox id="tabs-container" class="panel-dark" flex="1" observes="bcast_urlbarState">
+          <vbox id="tabs" flex="1" observes="bcast_urlbarState"
                 onselect="BrowserUI.selectTab(this);"
                 onreloadtab="BrowserUI.undoCloseTab()"
                 onclosetab="BrowserUI.closeTab(this)"
                 onclosereloadtab="this._container.removeTab(this)"/>
           <hbox id="tabs-controls">
-            <toolbarbutton id="newtab-button" class="button-control" command="cmd_newTab"/>
+            <toolbarbutton id="newtab-button" class="button-control" command="cmd_newTab" observes="bcast_urlbarState"/>
           </hbox>
         </vbox>
       </vbox>
 
       <!-- Page Area -->
-      <stack>
+      <stack id="page-stack" observes="bcast_urlbarState">
         <scrollbox id="page-scrollbox">
           <vbox>
             <!-- Main Toolbar -->
             <box id="toolbar-container" class="panel-dark toolbar-height">
               <box id="toolbar-moveable-container" observes="bcast_uidiscovery">
                 <toolbar id="toolbar-main" class="panel-dark viewable-width" observes="bcast_urlbarState">
                   <toolbarbutton id="tool-back2" class="tool-back button-actionbar" command="cmd_back"/>
                   <toolbarbutton id="tool-forward2" class="tool-forward button-actionbar" command="cmd_forward"/>
--- a/mobile/chrome/content/tabs.xml
+++ b/mobile/chrome/content/tabs.xml
@@ -2,31 +2,71 @@
 
 <bindings
     xmlns="http://www.mozilla.org/xbl"
     xmlns:xbl="http://www.mozilla.org/xbl"
     xmlns:html="http://www.w3.org/1999/xhtml"
     xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
   <binding id="documenttab">
-    <content>
+    <content observes="bcast_urlbarState">
       <xul:stack anonid="page" class="documenttab-container" flex="1">
-        <html:canvas anonid="thumbnail" class="documenttab-thumbnail" left="0" width="104" height="65" moz-opaque="true" empty="true"
-          onclick="document.getBindingParent(this)._onClick()"/>
-        <xul:hbox class="documenttab-reload" left="0" top="0" width="104" height="65" onclick="document.getBindingParent(this)._onUndo();"/>
-        <xul:hbox class="documenttab-close-container" start="-16" top="0" height="65" width="55" align="center" onclick="document.getBindingParent(this)._onClose()">
-          <xul:image anonid="close" class="documenttab-close" mousethrough="always"/>
+        <html:canvas anonid="thumbnail" class="documenttab-thumbnail" left="0" moz-opaque="true" empty="true"
+          onclick="document.getBindingParent(this)._onClick()" observes="bcast_urlbarState"/>
+        <xul:hbox anonid="reload" class="documenttab-reload" left="0" top="0" onclick="document.getBindingParent(this)._onUndo();" observes="bcast_urlbarState"/>
+        <xul:hbox anonid="close-container" class="documenttab-close-container" top="0" align="center" onclick="document.getBindingParent(this)._onClose()" observes="bcast_urlbarState">
+          <xul:image anonid="close" class="documenttab-close" mousethrough="always" observes="bcast_urlbarState"/>
         </xul:hbox>
       </xul:stack>
     </content>
 
     <implementation>
       <field name="ignoreUndo">false</field>
-      <field name="thumbnail">document.getAnonymousElementByAttribute(this, "anonid", "thumbnail");</field>
-      <field name="_container">this.parentNode.parentNode;</field>
+      <field name="thumbnail" readonly="true">document.getAnonymousElementByAttribute(this, "anonid", "thumbnail");</field>
+      <field name="_reload" readonly="true">document.getAnonymousElementByAttribute(this, "anonid", "reload");</field>
+      <field name="_closeContainer" readonly="true">document.getAnonymousElementByAttribute(this, "anonid", "close-container");</field>
+      <field name="_container" readonly="true">this.parentNode.parentNode;</field>
+
+      <constructor>
+        <![CDATA[
+          this.updateTabletLayout(this.thumbnail);
+        ]]>
+      </constructor>
+
+      <method name="updateTabletLayout">
+        <parameter name="thumbnail"/>
+        <body>
+          <![CDATA[
+            let tabWidth, tabHeight, closeWidth, closeHeight;
+
+            if (Util.isTablet()) {
+              tabWidth = 176;
+              tabHeight = 110;
+              closeWidth = 41;
+              closeHeight = 117;
+            } else {
+              tabWidth = 104;
+              tabHeight = 65;
+              closeWidth = 55;
+              closeHeight = 65;
+            }
+
+            if (tabWidth != thumbnail.width) {
+              let reload = this._reload;
+              let closeContainer = this._closeContainer;
+
+              thumbnail.width = reload.width = tabWidth;
+              thumbnail.height = reload.height = tabHeight;
+              closeContainer.width = closeWidth;
+              closeContainer.height = closeHeight;
+            }
+          ]]>
+        </body>
+      </method>
+
       <method name="_onClick">
         <body>
           <![CDATA[
             this._container.selectedTab = this;
 
             let selectFn = new Function("event", this._container.parentNode.getAttribute("onselect"));
             selectFn.call(this);
           ]]>
@@ -56,24 +96,28 @@
 
       <method name="updateThumbnail">
         <parameter name="browser"/>
         <parameter name="width"/>
         <parameter name="height"/>
         <body>
           <![CDATA[
             let thumbnail = this.thumbnail;
+            // Ensure the thumbnail will have the correct
+            // dimensions for tablet and phone modes
+            this.updateTabletLayout(thumbnail);
+
             if (browser.currentURI.spec == "about:blank") {
               thumbnail.setAttribute("empty", "true");
               return;
             }
             thumbnail.removeAttribute("empty");
 
-            const tabWidth = 104;
-            const tabHeight = 65;
+            const tabWidth = thumbnail.width;
+            const tabHeight = thumbnail.height;
 
             let ratio = tabHeight / tabWidth;
             if (browser.contentDocumentWidth > 0)
               width = Math.min(width, browser.contentDocumentWidth);
 
             if (browser.contentDocumentHeight > 0)
               height = Math.min(height, browser.contentDocumentHeight);
 
--- a/mobile/themes/core/browser.css
+++ b/mobile/themes/core/browser.css
@@ -981,16 +981,17 @@ documenttab[selected="true"] {
 documenttab:hover:active > stack > .documenttab-thumbnail,
 documenttab[selected="true"] > stack > .documenttab-thumbnail {
   opacity: 1.0;
 }
 
 .documenttab-close-container {
   position: relative;
   left: -16px;
+  -moz-margin-start: -16px;
   -moz-margin-end: 49px;
 }
 
 .documenttab-close {
   width: 40px;
   height: 40px;
   list-style-image: url("chrome://browser/skin/images/close-inactive-tab-hdpi.png");
 }
@@ -1570,56 +1571,16 @@ setting {
   from { -moz-transform: translateX(0); }
   10% { -moz-transform: translateX(-moz-calc(-121px - @border_width_large@ - 2*@padding_normal@)); }
   45% { -moz-transform: translateX(-moz-calc(-121px - @border_width_large@ - 2*@padding_normal@)); }
   55% { -moz-transform: translateX(@sidebar_width_minimum@); }
   90% { -moz-transform: translateX(@sidebar_width_minimum@); }
   to { -moz-transform: translateX(0); }
 }
 
-/* Tablet mode */
-
-.spacer-actionbar,
-.button-actionbar {
-  visibility: collapse;
-}
-
-.button-actionbar[disabled="true"] {
-  opacity: 0.5;
-}
-
-.button-actionbar:hover:active {
-  background-color: #8db8d8;
-}
-
-#toolbar-main[tablet="true"] > .spacer-actionbar,
-#toolbar-main[tablet="true"] > .button-actionbar {
-  visibility: visible;
-}
-
-#controls-scrollbox[tablet="true"] > #controls-sidebar {
-  visibility: collapse;
-}
-
-#controls-scrollbox[tablet="true"] > #tabs-sidebar {
-  border: none;
-  position: fixed;
-  top: -moz-calc(@touch_button_xlarge@ + @margin_normal@);
-  visibility: collapse;
-}
-#controls-scrollbox[tablet="true"] > #tabs-sidebar:-moz-locale-dir(ltr) {
-  right: 0;
-}
-#controls-scrollbox[tablet="true"] > #tabs-sidebar:-moz-locale-dir(rtl) {
-  left: 0;
-}
-#controls-scrollbox[tablet="true"] > #tabs-sidebar[open] {
-  visibility: visible;
-}
-
 /* Text selection handles */
 
 #selectionhandle-start,
 #selectionhandle-end {
   min-width: 35px !important;
   width: 35px !important;
   padding: 0 !important;
   margin: 0 !important;
@@ -1635,9 +1596,11 @@ setting {
 
 @media (min-width: @tablet_panel_minwidth@) {
   #awesome-panels {
     -moz-box-shadow: 0px 0px @shadow_width_small@ black;
   }
   #search-engines-popup {
     max-width: -moz-calc(@tablet_panel_minwidth@);
   }
-}
\ No newline at end of file
+}
+
+%include tablet.css
--- a/mobile/themes/core/gingerbread/browser.css
+++ b/mobile/themes/core/gingerbread/browser.css
@@ -930,16 +930,17 @@ documenttab[selected="true"] {
 documenttab:hover:active > stack > .documenttab-thumbnail,
 documenttab[selected="true"] > stack > .documenttab-thumbnail {
   opacity: 1.0;
 }
 
 .documenttab-close-container {
   position: relative;
   left: -16px;
+  -moz-margin-start: -16px;
   -moz-margin-end: 49px;
 }
 
 .documenttab-close {
   width: 40px;
   height: 40px;
   list-style-image: url("chrome://browser/skin/images/close-inactive-tab-hdpi.png");
 }
@@ -1540,56 +1541,16 @@ setting {
   from { -moz-transform: translateX(0); }
   10% { -moz-transform: translateX(-moz-calc(-121px - @border_width_large@ - 2*@padding_normal@)); }
   45% { -moz-transform: translateX(-moz-calc(-121px - @border_width_large@ - 2*@padding_normal@)); }
   55% { -moz-transform: translateX(@sidebar_width_minimum@); }
   90% { -moz-transform: translateX(@sidebar_width_minimum@); }
   to { -moz-transform: translateX(0); }
 }
 
-/* Tablet mode */
-
-.spacer-actionbar,
-.button-actionbar {
-  visibility: collapse;
-}
-
-.button-actionbar[disabled="true"] {
-  opacity: 0.5;
-}
-
-.button-actionbar:hover:active {
-  background-color: #8db8d8;
-}
-
-#toolbar-main[tablet="true"] > .spacer-actionbar,
-#toolbar-main[tablet="true"] > .button-actionbar {
-  visibility: visible;
-}
-
-#controls-scrollbox[tablet="true"] > #controls-sidebar {
-  visibility: collapse;
-}
-
-#controls-scrollbox[tablet="true"] > #tabs-sidebar {
-  border: none;
-  position: fixed;
-  top: -moz-calc(@touch_button_xlarge@ + @margin_normal@);
-  visibility: collapse;
-}
-#controls-scrollbox[tablet="true"] > #tabs-sidebar:-moz-locale-dir(ltr) {
-  right: 0;
-}
-#controls-scrollbox[tablet="true"] > #tabs-sidebar:-moz-locale-dir(rtl) {
-  left: 0;
-}
-#controls-scrollbox[tablet="true"] > #tabs-sidebar[open] {
-  visibility: visible;
-}
-
 /* Text selection handles */
 
 #selectionhandle-start,
 #selectionhandle-end {
   min-width: 35px !important;
   width: 35px !important;
   padding: 0 !important;
   margin: 0 !important;
@@ -1598,16 +1559,9 @@ setting {
 #selectionhandle-start {
   list-style-image: url("chrome://browser/skin/images/handle-start.png");
 }
 
 #selectionhandle-end {
   list-style-image: url("chrome://browser/skin/images/handle-end.png");
 }
 
-@media (min-width: @tablet_panel_minwidth@) {
-  #awesome-panels {
-    -moz-box-shadow: 0px 0px @shadow_width_small@ black;
-  }
-  #search-engines-popup {
-    max-width: -moz-calc(@tablet_panel_minwidth@);
-  }
-}
+%include ../tablet.css
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1e616b6698a5fc77fbf709cf62af43e7aeb949df
GIT binary patch
literal 626
zc$@)p0*(ENP)<h;3K|Lk000e1NJLTq0015U001lq1^@s6a)Jm10000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!6iGxuRCwC#mcdKHa1_V2Hj5-78pD={
zu!D4vAS08gLxiB-Iz}L<;3fSB^c>|Su(NjQU+`YtyJ_KZ5D^sw#lq6C_u&0tjNF!k
z?C|@+2Y%bWd*8kHd%tb&e!uS;#TavqXmDe0%#FD*H~#;|f(^|$FiG<c@MWPBNcZ8y
z7_TdUkB(n~7vRmH^8kL*iKM$TGq)<W1jyxbc@Kg491sAe4W{^Te$?c0xgyMGiNOPZ
z1WZ@}wnL$i77PaaiA3TOj-$X5FbzzQX01>tR8fP#*a3oOv8^)3wR(-m<25{Jx7%CE
zWU@jf4G?m%Sln+k8U@s(QmIoab;n7@BFm^$Djoiic{H2Np0P|ZYt+&`9<$hP8~<Fa
zapZcvzFw(Rj=SCN6g<Qgs{+fkTCJYL^bxoRKAmLD5C8>Ot<`D=Ec0P9wY$b_^k@rd
znM~$dQIuPD!Rz%t=kxgs+B)x+nf~(4B~c^!pt+7zRgH+E_>O3rCZ*HqlUA#>NZU=e
z712gnWMCQC#HPa1VyUs@NH`pR!gG;GL~S;kyQGz^;#!%`0AUP>f%T@i-oT3fn!#Lh
zVmt?I#A30VA50Zi4Wl_$2M9PZ#+x@W7-BFL^h?3a@!{}oM;$)&KE|e+H+&?XXs`Bk
zI++^F_>p)R6xhxSL^6C9pDlEPPS<l{%zu5jF*oMM+?X5x?f4d804qkI*d{1O6951J
M07*qoM6N<$f_zRRW&i*H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..478e9c85e270e51428f181c423d04d5aa448eadb
GIT binary patch
literal 1572
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
WE)xgo3A0520000<MNUMnLSTY9jN{n=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1e616b6698a5fc77fbf709cf62af43e7aeb949df
GIT binary patch
literal 626
zc$@)p0*(ENP)<h;3K|Lk000e1NJLTq0015U001lq1^@s6a)Jm10000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!6iGxuRCwC#mcdKHa1_V2Hj5-78pD={
zu!D4vAS08gLxiB-Iz}L<;3fSB^c>|Su(NjQU+`YtyJ_KZ5D^sw#lq6C_u&0tjNF!k
z?C|@+2Y%bWd*8kHd%tb&e!uS;#TavqXmDe0%#FD*H~#;|f(^|$FiG<c@MWPBNcZ8y
z7_TdUkB(n~7vRmH^8kL*iKM$TGq)<W1jyxbc@Kg491sAe4W{^Te$?c0xgyMGiNOPZ
z1WZ@}wnL$i77PaaiA3TOj-$X5FbzzQX01>tR8fP#*a3oOv8^)3wR(-m<25{Jx7%CE
zWU@jf4G?m%Sln+k8U@s(QmIoab;n7@BFm^$Djoiic{H2Np0P|ZYt+&`9<$hP8~<Fa
zapZcvzFw(Rj=SCN6g<Qgs{+fkTCJYL^bxoRKAmLD5C8>Ot<`D=Ec0P9wY$b_^k@rd
znM~$dQIuPD!Rz%t=kxgs+B)x+nf~(4B~c^!pt+7zRgH+E_>O3rCZ*HqlUA#>NZU=e
z712gnWMCQC#HPa1VyUs@NH`pR!gG;GL~S;kyQGz^;#!%`0AUP>f%T@i-oT3fn!#Lh
zVmt?I#A30VA50Zi4Wl_$2M9PZ#+x@W7-BFL^h?3a@!{}oM;$)&KE|e+H+&?XXs`Bk
zI++^F_>p)R6xhxSL^6C9pDlEPPS<l{%zu5jF*oMM+?X5x?f4d804qkI*d{1O6951J
M07*qoM6N<$f_zRRW&i*H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fd8e46b0c15e533f5c6360a659fbddc5a386b7fa
GIT binary patch
literal 546
zc$@(u0^R+IP)<h;3K|Lk000e1NJLTq0015U001lq1^@s6a)Jm10000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz#7RU!RCwC#mN84iKp2Kwn^sX2gb-}(
zAUZjSprV54ApQX9>`$nJlm9@}MW}<5xcCSB2kPYFYA1(^sI&#a(pn`F-@`X}grvDP
zU>)w@fnM*;_ws%B-6cuabrZc9eTg0oZLE#8u{PGm|KHe9)TO`xf49I_gwCMuBaX4q
z*kFY7H}DGTK3xWkQJ1FfG0a@W*aQ~HbAADa7_=^#+SF}=EI0x0;3+Vw_z;L-0<43E
z`!lY<5|{?Vpr4vWP;`IC2AB+stI}L8mhF`DHE_t1=7`923v5$!%x7AmQ57;yOBwA2
zWG*<9GA&Xop2>v8O)7qKd5t47TLuSU5L`=D@G?CI74Ge4oQypTV1orvkTUNm(@yr-
z8xFg;0d7G_TC0Ie9-U^}OuM+bOg55es(mm|lP1@Wz!Z;?6&X#j%odmht86Nlr7n;v
z|0{z$wN|^BDyE}gh5^eyQ?cK3zBSq0jANVyE8s4`)RwB@Hy72(#c8e-dqG^24`3JE
z@VHdSGq?vk)R?@lL$73&b1Z_4`(6@N8ak5BVq^JV5-;5vd*<?Mu@<2-B%Kq-SbzFx
kV{NRBwXrt-yYVf+01?=dN6%R1uK)l507*qoM6N<$f(;q;0ssI2
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1d9d1ae2308f8adcb70fddb823b04e25b12d456a
GIT binary patch
literal 263
zc%17D@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%k|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*A(MJzX3_DsH_AG3076;8`Pd<mAbVC-;B3`tRt)lP6d1xDwIi
zvGPmHB~5mB&)Z)(GS_{)CoLdbobpY``q?>~i77@Fc@sM=J!($unkx3nHD%(BeXC9{
zGM&1>Nh>72LrD0)c=0nE3l3GaeM?R}R+uuQLgdBY2MVFpPnOvH-YoRx-`{P@8>^V>
z+IFaGPxxHZCcNd>`eW-~@n|i1$E#d6!TDPk_fft_an+GAOgs#;BNY2GFZ%8RI-0@L
L)z4*}Q$iB}x3+FW
--- a/mobile/themes/core/honeycomb/browser.css
+++ b/mobile/themes/core/honeycomb/browser.css
@@ -32,16 +32,17 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 %filter substitution
 %include defines.inc
+%define honeycomb 1
 
 /* main toolbar (URL bar) -------------------------------------------------- */
 #toolbar-main {
   -moz-appearance: none;
   -moz-box-align: center;
   padding: 0;
   background: @color_toolbar_background@;
   border: none;
@@ -1013,16 +1014,17 @@ documenttab[selected="true"] {
 documenttab:hover:active > stack > .documenttab-thumbnail,
 documenttab[selected="true"] > stack > .documenttab-thumbnail {
   opacity: 1.0;
 }
 
 .documenttab-close-container {
   position: relative;
   left: -16px;
+  -moz-margin-start: -16px;
   -moz-margin-end: 49px;
 }
 
 .documenttab-close {
   width: 40px;
   height: 40px;
   list-style-image: url("chrome://browser/skin/images/close-inactive-tab-hdpi.png");
 }
@@ -1689,52 +1691,16 @@ setting {
   from { -moz-transform: translateX(0); }
   10% { -moz-transform: translateX(-moz-calc(-121px - @border_width_large@ - 2*@padding_normal@)); }
   45% { -moz-transform: translateX(-moz-calc(-121px - @border_width_large@ - 2*@padding_normal@)); }
   55% { -moz-transform: translateX(@sidebar_width_minimum@); }
   90% { -moz-transform: translateX(@sidebar_width_minimum@); }
   to { -moz-transform: translateX(0); }
 }
 
-/* Tablet mode */
-
-.spacer-actionbar,
-.button-actionbar {
-  visibility: collapse;
-}
-
-.button-actionbar[disabled="true"] {
-  opacity: 0.5;
-}
-
-#toolbar-main[tablet="true"] > .spacer-actionbar,
-#toolbar-main[tablet="true"] > .button-actionbar {
-  visibility: visible;
-}
-
-#controls-scrollbox[tablet="true"] > #controls-sidebar {
-  visibility: collapse;
-}
-
-#controls-scrollbox[tablet="true"] > #tabs-sidebar {
-  border: none;
-  position: fixed;
-  top: @touch_button_xlarge@;
-  visibility: collapse;
-}
-#controls-scrollbox[tablet="true"] > #tabs-sidebar:-moz-locale-dir(ltr) {
-  left: 0;
-}
-#controls-scrollbox[tablet="true"] > #tabs-sidebar:-moz-locale-dir(rtl) {
-  right: 0;
-}
-#controls-scrollbox[tablet="true"] > #tabs-sidebar[open] {
-  visibility: visible;
-}
-
 /* Text selection handles */
 
 #selectionhandle-start,
 #selectionhandle-end {
   min-width: 35px !important;
   width: 35px !important;
   padding: 0 !important;
   margin: 0 !important;
@@ -1809,8 +1775,10 @@ setting {
   }
   
   #search-engines-list > .action-button > .button-box > .button-text {
     text-align: start;
     font-size: @font_tiny@ !important;
   }
 
 }
+
+%include ../tablet.css
index 935b7555e4d8aceb67a15f9eb137b6ddade69522..1f19cd10638b54797e21db629ef041bcedc54f17
GIT binary patch
literal 1202
zc$@*U1Wo&iP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T70000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$R7pfZRCwCVm`P|9K@^5-dX~(h&V;BW
z;t~Y)pu~6;k?28i0moYu!5jnyAvx;BC3?}5C<qFI5k$Sk;07Kvh=?bNq8A01-~thy
znIyAszQ3&+I^A8pO$>QZ=_K9n{a?STdev3FdcDr(vngzz+q?%1;Kx><ubCL#)DqNs
zbpIcvmZmo5HSlv9egO}DfJsu@%dav!t@-^PwGn<zyAktYlJqTDYWv`)?5|EPn&gnG
zg_HpEQxAmwp&8E?swGyX*ri%U`|mV|99$h+^2JVbXnMj~1_|yAT?PQA5KPS9!lHqY
zdX-u*+W0kFEwWstglnQ!ulM04Ddr`DJkwMLDF`w(jPVul`B`fyszNCq$1K6Au&Gjx
zRq9p7$LBTzP0KQ<SY!=@|1;oPLov2I(#jSF!k*#Ol0m+Rfmn#iC)j7M<-E*rhi4Qp
z(GgCtR_ZRLxtVSNMNEJ~16ndjMb@n}_!BE5Z7kvs{<j*32?h;lL6d9SX7C0%bS|UJ
z&1TlDvI#9{LfaCM-XKX1$@cJ~If2tca!t(cq*VqlE@@fFFk@x5vTFm|a<JDm1bpBt
zUD8Ms+F&p&bv%20R6;tfY8wPjJRWAzcwGJa#jU%J;SOKD%yO9wJHK-u8-M%G^f_pQ
z0W4H{hV&U6XlsdCifG{==p>T@4hG+|FP~caafX2zU5sUn>QlE>*P6XGgoU`79k_7L
za35KeWl(fASoqS~$Y4)A7_rO*f}(pMAj^;*e#fyR1~{uO7RFh68h}B?zZo^j&Jg(2
z=IsUnJ)~Lpix;$m6ZH{HjkS1JF#Kj|%c3r)GZJG7<552=#iWtJ>9cQT6UE85kIIFO
zD&XEw>;tWhYuuC#8Kl#pVP~mQ_Txw?yH@SufZ~t1t!qxklUFz`Q&W2q2w&cRNO~Xl
zyucY&l1i<b_u`Ch?!R+WdLQ>h-E?b$Nd>I3`g<>Mc4JV#^0+a<qyiSJmC@ON!z|V>
ze_kO4(?7skc|^Clk=o)_E2MDOkM^rg25C3rg@FZ34M6O$rYePTJ4Xm$EtSCuYZekL
zV%OK0#hG&cG~dX$8c%vSE##9c*IbWVFo4DIJ&4bnKc(!1Ro9w9n869Vef*^9eJemP
zh)*p;9h|Ndk6>G9X0Pu*o>6qoy3x$E85YG|<_B#sSni9z=6*lu2*-EJJ|6J)Xih&?
zwI38%S!62@y7qfM{cu&ZZI5<eYyia0Dy#%wwTI*D=4xMp4gJqT`bV)=S+Cv1n{M3k
zK%rLdC5Nfn92{<PxG93$ZFa(7x)#%eW8|=PJpVhBua^HC9O@l3pao4=2bgf6x9g<0
z8%>pSY&NrrScv&8pHeksaJFAFNIA7_^ldiyJ)fGS0@@TPd=Ue&5R+nWk{uj*J|Cos
zvyZlhaogiJUHRb0ZyACdc5^=H7*Kb1(>P&uc!1eBVYSPcDd2oQqy8(v04{5M+MdAo
QYybcN07*qoM6N<$f?N<W0ssI2
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1e616b6698a5fc77fbf709cf62af43e7aeb949df
GIT binary patch
literal 626
zc$@)p0*(ENP)<h;3K|Lk000e1NJLTq0015U001lq1^@s6a)Jm10000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!6iGxuRCwC#mcdKHa1_V2Hj5-78pD={
zu!D4vAS08gLxiB-Iz}L<;3fSB^c>|Su(NjQU+`YtyJ_KZ5D^sw#lq6C_u&0tjNF!k
z?C|@+2Y%bWd*8kHd%tb&e!uS;#TavqXmDe0%#FD*H~#;|f(^|$FiG<c@MWPBNcZ8y
z7_TdUkB(n~7vRmH^8kL*iKM$TGq)<W1jyxbc@Kg491sAe4W{^Te$?c0xgyMGiNOPZ
z1WZ@}wnL$i77PaaiA3TOj-$X5FbzzQX01>tR8fP#*a3oOv8^)3wR(-m<25{Jx7%CE
zWU@jf4G?m%Sln+k8U@s(QmIoab;n7@BFm^$Djoiic{H2Np0P|ZYt+&`9<$hP8~<Fa
zapZcvzFw(Rj=SCN6g<Qgs{+fkTCJYL^bxoRKAmLD5C8>Ot<`D=Ec0P9wY$b_^k@rd
znM~$dQIuPD!Rz%t=kxgs+B)x+nf~(4B~c^!pt+7zRgH+E_>O3rCZ*HqlUA#>NZU=e
z712gnWMCQC#HPa1VyUs@NH`pR!gG;GL~S;kyQGz^;#!%`0AUP>f%T@i-oT3fn!#Lh
zVmt?I#A30VA50Zi4Wl_$2M9PZ#+x@W7-BFL^h?3a@!{}oM;$)&KE|e+H+&?XXs`Bk
zI++^F_>p)R6xhxSL^6C9pDlEPPS<l{%zu5jF*oMM+?X5x?f4d804qkI*d{1O6951J
M07*qoM6N<$f_zRRW&i*H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..478e9c85e270e51428f181c423d04d5aa448eadb
GIT binary patch
literal 1572
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
WE)xgo3A0520000<MNUMnLSTY9jN{n=
index 3961ad1baaa1e26175cdf58f16e54b1801996206..7e4b9f7d8d82e74551c48a938a16606d2d041901
GIT binary patch
literal 1087
zc$@)01i<@=P)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T70000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#;Ymb6RCwCFnN3JlK@`X5`IJCJ-zFE8
z@S--A;0s!0P+058C$$J#WUFYCxM~rh5iMGYZK9R72wD_sMJ)<5f)o;bg4xDUup)Hx
zeE9jkZu7sMvGIP)ojdP64-BKuJ?H%HoVjOajuFeU*xSaVtOQB$7UQkW@%J&_(!8Zi
z4PRWEW7P(FfJyS!PQ9P>NIwtrHbQ+mjI*i`&&GKh;BB7zWC-1)LpNS-z+T>_c<ZDY
zG?f_Hm?E1c1H#}Z3Rfv$UUqv3G-e8zppdk&%8Bri2n(2?nTxT?i-=M}7Z3_VdjuEg
z(+e=vS5`(5Swabz3`!sM&Bs{N)ytv1LkGGV>1daKXQJ*4f@>Xm&T1O!?cWz)ywZki
zdHjgwRx)h7;~LA%{7^mKM+x0EgPp3-!ifwAhdMJU;2_XFH~J<>FHS5jz%G^6%FL|m
zZ*VM}d&!9hcU|L{MK4<p>2d<bRk;X)upm5e;5S1~_`^4ExZpHGEYe(D2GmN%F#P4h
zC6@yyq*wUG3u?eInMr&kExKCki@$6~Sda2oDFgYzIcGmWY^Dg#gCmVc#-l89I*c|J
zyc06a(g>0QvnJY?ezw{n&RSOJT|;L*nZn6THelXjbtb7Fjwi3*@*T&R37pKd4ah7b
zK!o|!vnRge7!!FjG$1imF+<T=gU+4DL~OuJvA9|eIBb2+?avfaFxh}B#ez0qZPOuN
zxar$>?B)llaaj1ja}kpb__vtXx@p0|+0oa&a6-xfDVRivC(^}2Ae>jIoNzMa{L=xW
z+zA#i$sft|Ts|8ZS}zDMI3eHfJ@g!JXg;p=MJ&@Y;MhVw$JVT(|CGP~uq)|$h0#mo
z85YT1r3VJEP-S9!t3&DI<$7l7K(sn>W?yY!s4)Y&hgErh#xX1Cu<&(jo&71~Q&(#1
zPdZB<{d{16H^xDg+gFGa$*!3U68J^~i|fG3i3fSN@GZN+f<Bl^2to_rU?3LHOH+4_
zhkP=-$<XhWz}NWJhVa?#d#mH*xU39g20!z)uosZ<0bdlgVPa6;i*Zg*LE+uzDqG%O
z6BQBRgWwj(xBBAF-yls7rp4RM=C;Z@o3I6&A2-*8UHI%E-@&yR{vfKN=S8tm7(;$4
z1r)ll0b8&sCKA5Lr%NKL5-`t=qGqylsj7)Y*g>9#4n%8|>ByZva_l$n9WR(7IM1^H
z@?b=#M$JKc>8|R!8pNuiHuQep%d*VZ6<~Z)7J&LWn6iku1K3&Ds9W6Wq1uUQ<tt5P
zjr;UbC}nVUDHNbwD$^;V%VJbSHwE;n0#xMR5CHrqzyS6nJ3M6*QC$E4002ovPDHLk
FV1hM@1Hb?P
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1e616b6698a5fc77fbf709cf62af43e7aeb949df
GIT binary patch
literal 626
zc$@)p0*(ENP)<h;3K|Lk000e1NJLTq0015U001lq1^@s6a)Jm10000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!6iGxuRCwC#mcdKHa1_V2Hj5-78pD={
zu!D4vAS08gLxiB-Iz}L<;3fSB^c>|Su(NjQU+`YtyJ_KZ5D^sw#lq6C_u&0tjNF!k
z?C|@+2Y%bWd*8kHd%tb&e!uS;#TavqXmDe0%#FD*H~#;|f(^|$FiG<c@MWPBNcZ8y
z7_TdUkB(n~7vRmH^8kL*iKM$TGq)<W1jyxbc@Kg491sAe4W{^Te$?c0xgyMGiNOPZ
z1WZ@}wnL$i77PaaiA3TOj-$X5FbzzQX01>tR8fP#*a3oOv8^)3wR(-m<25{Jx7%CE
zWU@jf4G?m%Sln+k8U@s(QmIoab;n7@BFm^$Djoiic{H2Np0P|ZYt+&`9<$hP8~<Fa
zapZcvzFw(Rj=SCN6g<Qgs{+fkTCJYL^bxoRKAmLD5C8>Ot<`D=Ec0P9wY$b_^k@rd
znM~$dQIuPD!Rz%t=kxgs+B)x+nf~(4B~c^!pt+7zRgH+E_>O3rCZ*HqlUA#>NZU=e
z712gnWMCQC#HPa1VyUs@NH`pR!gG;GL~S;kyQGz^;#!%`0AUP>f%T@i-oT3fn!#Lh
zVmt?I#A30VA50Zi4Wl_$2M9PZ#+x@W7-BFL^h?3a@!{}oM;$)&KE|e+H+&?XXs`Bk
zI++^F_>p)R6xhxSL^6C9pDlEPPS<l{%zu5jF*oMM+?X5x?f4d804qkI*d{1O6951J
M07*qoM6N<$f_zRRW&i*H
index 105d7852eddc5783d5936d836efcc94d08a38450..77d71107fa1bc1016d6119bcbea054e9765fd36b
GIT binary patch
literal 1150
zc$@)#1cCdBP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T70000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$AW1|)RCwCFnN4UDK@`VllQd1*DygCs
zFQ$6*U@Crs2a5+Uq7gq%wp2wyFQw>BF|FuLDZS`H)S{k5F^U%tejEhr2c`uJo-~SR
zt6-yTt=2a2{ns~PlkCUrCh3D=m)&{q{dQjF&6|mq%jLvrO%r8Ej9P@+=A!3MsAZ@P
zdNq8C*a9B(028OSgRfSSFx)4p-Q{b>jWeH%zENsdslDfG+=XtuNH<z(z;0?OY8^a+
zUM0ddQf#wqKp1??;VK8r%x;1~BVGYx9FonVdLn(q+ycgU<RYT_BBK;j1%$$#If8Ta
zX$I(OmQ_$>maqkkJEe~$%T|imu6^!*Y@`ESg>+Qlzc^9%I>EKSekwu>C=$DAiMV}3
z8E*Tn>*DwKjJURXlNk9hY}dV)6MD%AcG!g$PV#UhaHukp5)K00!|69pdQoO60qnHX
z8hMo}c?QSZFI=|N*?Q(&9!?5I(actnbQS|f?Q)S0NMS*E;GkfHjvO$B#IyA$j+MYE
zgjlAzs1Z;p8N=|U=t?pAGGz;idpt7=bQIx)kx5RHRjOKJ<DbQ~b(=){i>IP#ZA$^9
z*?k_4bf&~FHxplH(ohffXufBf$Zc?=9Ts&ZkY?f$PUM6(kjP~>>LH%hG}o&J9KvyN
zxGMo?WYPh1n%3YY^~3SaE!!;L<DC~cBa;r872W_5=DiQ^TfWCT^zkB+$tOID%5M<w
z(8nue9&p+hn5YEY;KeI?s|2KE3b+MqoVQdDof+J{qX$h>jfA|rr%gEzN+x{-fBAz-
zJ1rCohtk82aJV-eNm|PlDjH#A(gFYa`~yVn2xlx7tl*50&(EGOcm`b+NU(s(I7x<n
z)P(Iz-WAQI5WCw<;iNn`d0g*P^08~|lRL8v83CV+2SQ>-^IIyteRRK|Sb$@ddJugi
zq%0Qf^uPcXKAHHx)ZyskUHzg|{p_Du)9;^-p~eWP7OTd(5M`FrBpD6O7nA<l!R3?R
zT8fW8`sl?~YJxy*D;gISNx?`u34Ei0rKDgb;(ofMztzqYP7|gYg3!V@7?{O$)6|uv
zaDSza+44@j+%0S5YlK3}KD#V;bwrNMN)jXZITV=_Ncey+j#`o#Z1=_c@sokV$M8Zi
z<*%t4ob<tPY4&Zuai=fHaK{Y3?hAe0SWR6;M-#SS^HaD{+J(=Z?A!TlhC1R@v{fE9
zjs@#=W5`eCfI=5GU<)=`;G>m&s-JGLLbFVma+V<^xN<sB67)6d8WsfIhZUUJ$%0w9
zTPcZm^IkO~M}f1w2xe!5pAu?lcDitj=?|i8w@O*C+eh{t4>9$Xq@!W6>fug;&rZCa
zd}a7pqlYJjt@KZPbyZQzS=P+gqzm0-k#1U5G2n3&`nkzdfU5ir0r@Au0H<ui;K+$Q
QAOHXW07*qoM6N<$f&xb#MF0Q*
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fd8e46b0c15e533f5c6360a659fbddc5a386b7fa
GIT binary patch
literal 546
zc$@(u0^R+IP)<h;3K|Lk000e1NJLTq0015U001lq1^@s6a)Jm10000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz#7RU!RCwC#mN84iKp2Kwn^sX2gb-}(
zAUZjSprV54ApQX9>`$nJlm9@}MW}<5xcCSB2kPYFYA1(^sI&#a(pn`F-@`X}grvDP
zU>)w@fnM*;_ws%B-6cuabrZc9eTg0oZLE#8u{PGm|KHe9)TO`xf49I_gwCMuBaX4q
z*kFY7H}DGTK3xWkQJ1FfG0a@W*aQ~HbAADa7_=^#+SF}=EI0x0;3+Vw_z;L-0<43E
z`!lY<5|{?Vpr4vWP;`IC2AB+stI}L8mhF`DHE_t1=7`923v5$!%x7AmQ57;yOBwA2
zWG*<9GA&Xop2>v8O)7qKd5t47TLuSU5L`=D@G?CI74Ge4oQypTV1orvkTUNm(@yr-
z8xFg;0d7G_TC0Ie9-U^}OuM+bOg55es(mm|lP1@Wz!Z;?6&X#j%odmht86Nlr7n;v
z|0{z$wN|^BDyE}gh5^eyQ?cK3zBSq0jANVyE8s4`)RwB@Hy72(#c8e-dqG^24`3JE
z@VHdSGq?vk)R?@lL$73&b1Z_4`(6@N8ak5BVq^JV5-;5vd*<?Mu@<2-B%Kq-SbzFx
kV{NRBwXrt-yYVf+01?=dN6%R1uK)l507*qoM6N<$f(;q;0ssI2
index aacf3b927b0da779ef18c830863e3109604c3b9f..e71e89cd79b51c9a0ba31ecafd73760dff9adc8f
GIT binary patch
literal 208
zc%17D@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5XiacE$Ln>~)x#q}qK!L|4FxX~w`=?Eh_ccvOO3kRh<|wCT
z*tX=6Ot>L`b%O7+{WtkPc1q`T-|^#TGMVv6U0BnLr{Jpg$@5J{(Fw;Tzh00!eduxd
z`JRe2hFNQ^0+SjT7@1f&1QZVZF4x}S*ud~yf{BOW?mvN0wrr-$K-(ESUHx3vIVCg!
E0J9BAjsO4v
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1d9d1ae2308f8adcb70fddb823b04e25b12d456a
GIT binary patch
literal 263
zc%17D@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%k|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*A(MJzX3_DsH_AG3076;8`Pd<mAbVC-;B3`tRt)lP6d1xDwIi
zvGPmHB~5mB&)Z)(GS_{)CoLdbobpY``q?>~i77@Fc@sM=J!($unkx3nHD%(BeXC9{
zGM&1>Nh>72LrD0)c=0nE3l3GaeM?R}R+uuQLgdBY2MVFpPnOvH-YoRx-`{P@8>^V>
z+IFaGPxxHZCcNd>`eW-~@n|i1$E#d6!TDPk_fft_an+GAOgs#;BNY2GFZ%8RI-0@L
L)z4*}Q$iB}x3+FW
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1e616b6698a5fc77fbf709cf62af43e7aeb949df
GIT binary patch
literal 626
zc$@)p0*(ENP)<h;3K|Lk000e1NJLTq0015U001lq1^@s6a)Jm10000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!6iGxuRCwC#mcdKHa1_V2Hj5-78pD={
zu!D4vAS08gLxiB-Iz}L<;3fSB^c>|Su(NjQU+`YtyJ_KZ5D^sw#lq6C_u&0tjNF!k
z?C|@+2Y%bWd*8kHd%tb&e!uS;#TavqXmDe0%#FD*H~#;|f(^|$FiG<c@MWPBNcZ8y
z7_TdUkB(n~7vRmH^8kL*iKM$TGq)<W1jyxbc@Kg491sAe4W{^Te$?c0xgyMGiNOPZ
z1WZ@}wnL$i77PaaiA3TOj-$X5FbzzQX01>tR8fP#*a3oOv8^)3wR(-m<25{Jx7%CE
zWU@jf4G?m%Sln+k8U@s(QmIoab;n7@BFm^$Djoiic{H2Np0P|ZYt+&`9<$hP8~<Fa
zapZcvzFw(Rj=SCN6g<Qgs{+fkTCJYL^bxoRKAmLD5C8>Ot<`D=Ec0P9wY$b_^k@rd
znM~$dQIuPD!Rz%t=kxgs+B)x+nf~(4B~c^!pt+7zRgH+E_>O3rCZ*HqlUA#>NZU=e
z712gnWMCQC#HPa1VyUs@NH`pR!gG;GL~S;kyQGz^;#!%`0AUP>f%T@i-oT3fn!#Lh
zVmt?I#A30VA50Zi4Wl_$2M9PZ#+x@W7-BFL^h?3a@!{}oM;$)&KE|e+H+&?XXs`Bk
zI++^F_>p)R6xhxSL^6C9pDlEPPS<l{%zu5jF*oMM+?X5x?f4d804qkI*d{1O6951J
M07*qoM6N<$f_zRRW&i*H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..478e9c85e270e51428f181c423d04d5aa448eadb
GIT binary patch
literal 1572
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
WE)xgo3A0520000<MNUMnLSTY9jN{n=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1e616b6698a5fc77fbf709cf62af43e7aeb949df
GIT binary patch
literal 626
zc$@)p0*(ENP)<h;3K|Lk000e1NJLTq0015U001lq1^@s6a)Jm10000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!6iGxuRCwC#mcdKHa1_V2Hj5-78pD={
zu!D4vAS08gLxiB-Iz}L<;3fSB^c>|Su(NjQU+`YtyJ_KZ5D^sw#lq6C_u&0tjNF!k
z?C|@+2Y%bWd*8kHd%tb&e!uS;#TavqXmDe0%#FD*H~#;|f(^|$FiG<c@MWPBNcZ8y
z7_TdUkB(n~7vRmH^8kL*iKM$TGq)<W1jyxbc@Kg491sAe4W{^Te$?c0xgyMGiNOPZ
z1WZ@}wnL$i77PaaiA3TOj-$X5FbzzQX01>tR8fP#*a3oOv8^)3wR(-m<25{Jx7%CE
zWU@jf4G?m%Sln+k8U@s(QmIoab;n7@BFm^$Djoiic{H2Np0P|ZYt+&`9<$hP8~<Fa
zapZcvzFw(Rj=SCN6g<Qgs{+fkTCJYL^bxoRKAmLD5C8>Ot<`D=Ec0P9wY$b_^k@rd
znM~$dQIuPD!Rz%t=kxgs+B)x+nf~(4B~c^!pt+7zRgH+E_>O3rCZ*HqlUA#>NZU=e
z712gnWMCQC#HPa1VyUs@NH`pR!gG;GL~S;kyQGz^;#!%`0AUP>f%T@i-oT3fn!#Lh
zVmt?I#A30VA50Zi4Wl_$2M9PZ#+x@W7-BFL^h?3a@!{}oM;$)&KE|e+H+&?XXs`Bk
zI++^F_>p)R6xhxSL^6C9pDlEPPS<l{%zu5jF*oMM+?X5x?f4d804qkI*d{1O6951J
M07*qoM6N<$f_zRRW&i*H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fd8e46b0c15e533f5c6360a659fbddc5a386b7fa
GIT binary patch
literal 546
zc$@(u0^R+IP)<h;3K|Lk000e1NJLTq0015U001lq1^@s6a)Jm10000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz#7RU!RCwC#mN84iKp2Kwn^sX2gb-}(
zAUZjSprV54ApQX9>`$nJlm9@}MW}<5xcCSB2kPYFYA1(^sI&#a(pn`F-@`X}grvDP
zU>)w@fnM*;_ws%B-6cuabrZc9eTg0oZLE#8u{PGm|KHe9)TO`xf49I_gwCMuBaX4q
z*kFY7H}DGTK3xWkQJ1FfG0a@W*aQ~HbAADa7_=^#+SF}=EI0x0;3+Vw_z;L-0<43E
z`!lY<5|{?Vpr4vWP;`IC2AB+stI}L8mhF`DHE_t1=7`923v5$!%x7AmQ57;yOBwA2
zWG*<9GA&Xop2>v8O)7qKd5t47TLuSU5L`=D@G?CI74Ge4oQypTV1orvkTUNm(@yr-
z8xFg;0d7G_TC0Ie9-U^}OuM+bOg55es(mm|lP1@Wz!Z;?6&X#j%odmht86Nlr7n;v
z|0{z$wN|^BDyE}gh5^eyQ?cK3zBSq0jANVyE8s4`)RwB@Hy72(#c8e-dqG^24`3JE
z@VHdSGq?vk)R?@lL$73&b1Z_4`(6@N8ak5BVq^JV5-;5vd*<?Mu@<2-B%Kq-SbzFx
kV{NRBwXrt-yYVf+01?=dN6%R1uK)l507*qoM6N<$f(;q;0ssI2
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1d9d1ae2308f8adcb70fddb823b04e25b12d456a
GIT binary patch
literal 263
zc%17D@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%k|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*A(MJzX3_DsH_AG3076;8`Pd<mAbVC-;B3`tRt)lP6d1xDwIi
zvGPmHB~5mB&)Z)(GS_{)CoLdbobpY``q?>~i77@Fc@sM=J!($unkx3nHD%(BeXC9{
zGM&1>Nh>72LrD0)c=0nE3l3GaeM?R}R+uuQLgdBY2MVFpPnOvH-YoRx-`{P@8>^V>
z+IFaGPxxHZCcNd>`eW-~@n|i1$E#d6!TDPk_fft_an+GAOgs#;BNY2GFZ%8RI-0@L
L)z4*}Q$iB}x3+FW
--- a/mobile/themes/core/jar.mn
+++ b/mobile/themes/core/jar.mn
@@ -85,16 +85,17 @@ chrome.jar:
   skin/images/panelrow-selected-hdpi.png    (images/panelrow-selected-hdpi.png)
   skin/images/forward-default-hdpi.png        (images/forward-default-hdpi.png)
   skin/images/downloads-default-hdpi.png      (images/downloads-default-hdpi.png)
   skin/images/settings-default-hdpi.png       (images/settings-default-hdpi.png)
   skin/images/preferences-default-hdpi.png    (images/preferences-default-hdpi.png)
   skin/images/row-header-bg.png             (images/row-header-bg.png)
   skin/images/console-default-hdpi.png        (images/console-default-hdpi.png)
   skin/images/newtab-default-hdpi.png         (images/newtab-default-hdpi.png)
+  skin/images/newtab-default-tablet-hdpi.png (images/newtab-default-tablet-hdpi.png)
   skin/images/tab-active-hdpi.png           (images/tab-active-hdpi.png)
   skin/images/tab-inactive-hdpi.png         (images/tab-inactive-hdpi.png)
   skin/images/tab-closed-hdpi.png           (images/tab-closed-hdpi.png)
   skin/images/tab-reopen-hdpi.png           (images/tab-reopen-hdpi.png)
   skin/images/remotetabs-48.png             (images/remotetabs-48.png)
   skin/images/remotetabs-32.png             (images/remotetabs-32.png)
   skin/images/mozilla-32.png                (images/mozilla-32.png)
   skin/images/toggle-on.png                 (images/toggle-on.png)
@@ -105,18 +106,22 @@ chrome.jar:
   skin/images/next-hdpi.png                 (images/next-hdpi.png)
   skin/images/next-disabled-hdpi.png        (images/next-disabled-hdpi.png)
   skin/images/identity-default-hdpi.png     (images/identity-default-hdpi.png)
   skin/images/identity-ssl-hdpi.png         (images/identity-ssl-hdpi.png)
   skin/images/identity-ev-hdpi.png          (images/identity-ev-hdpi.png)
   skin/images/unlocked-hdpi.png             (images/unlocked-hdpi.png)
   skin/images/locked-hdpi.png               (images/locked-hdpi.png)
   skin/images/close-default-hdpi.png        (images/close-default-hdpi.png)
+  skin/images/close-default-tablet-hdpi.png (images/close-default-tablet-hdpi.png)
   skin/images/close-active-hdpi.png         (images/close-active-hdpi.png)
+  skin/images/close-active-tablet-hdpi.png  (images/close-active-tablet-hdpi.png)
   skin/images/close-inactive-tab-hdpi.png   (images/close-inactive-tab-hdpi.png)
+  skin/images/close-inactive-tab-tablet-hdpi.png   (images/close-inactive-tab-tablet-hdpi.png)
+  skin/images/close-background-hdpi.png     (images/close-background-hdpi.png)
   skin/images/check-30.png                  (images/check-30.png)
   skin/images/search-glass-30.png           (images/search-glass-30.png)
   skin/images/search-clear-30.png           (images/search-clear-30.png)
   skin/images/section-expanded-16.png       (images/section-expanded-16.png)
   skin/images/section-collapsed-16.png      (images/section-collapsed-16.png)
   skin/images/task-switch-hdpi.png          (images/task-switch-hdpi.png)
   skin/images/task-close-hdpi.png           (images/task-close-hdpi.png)
   skin/images/task-back-hdpi.png            (images/task-back-hdpi.png)
@@ -209,16 +214,17 @@ chrome.jar:
   skin/gingerbread/images/bookmark-starred-hdpi.png     (gingerbread/images/bookmark-starred-hdpi.png)
   skin/gingerbread/images/forward-default-hdpi.png        (gingerbread/images/forward-default-hdpi.png)
   skin/gingerbread/images/downloads-default-hdpi.png      (gingerbread/images/downloads-default-hdpi.png)
   skin/gingerbread/images/settings-default-hdpi.png       (gingerbread/images/settings-default-hdpi.png)
   skin/gingerbread/images/preferences-default-hdpi.png    (gingerbread/images/preferences-default-hdpi.png)
   skin/gingerbread/images/row-header-bg.png             (gingerbread/images/row-header-bg.png)
   skin/gingerbread/images/console-default-hdpi.png        (gingerbread/images/console-default-hdpi.png)
   skin/gingerbread/images/newtab-default-hdpi.png         (gingerbread/images/newtab-default-hdpi.png)
+  skin/gingerbread/images/newtab-default-tablet-hdpi.png (gingerbread/images/newtab-default-tablet-hdpi.png)
   skin/gingerbread/images/tab-active-hdpi.png           (gingerbread/images/tab-active-hdpi.png)
   skin/gingerbread/images/tab-inactive-hdpi.png         (gingerbread/images/tab-inactive-hdpi.png)
   skin/gingerbread/images/tab-closed-hdpi.png           (gingerbread/images/tab-closed-hdpi.png)
   skin/gingerbread/images/tab-reopen-hdpi.png           (gingerbread/images/tab-reopen-hdpi.png)
   skin/gingerbread/images/remotetabs-48.png             (gingerbread/images/remotetabs-48.png)
   skin/gingerbread/images/remotetabs-32.png             (gingerbread/images/remotetabs-32.png)
   skin/gingerbread/images/mozilla-32.png                (images/mozilla-32.png)
   skin/gingerbread/images/toggle-on.png                 (gingerbread/images/toggle-on.png)
@@ -228,18 +234,22 @@ chrome.jar:
   skin/gingerbread/images/next-hdpi.png                 (gingerbread/images/next-hdpi.png)
   skin/gingerbread/images/next-disabled-hdpi.png        (gingerbread/images/next-disabled-hdpi.png)
   skin/gingerbread/images/identity-default-hdpi.png     (gingerbread/images/identity-default-hdpi.png)
   skin/gingerbread/images/identity-ssl-hdpi.png         (gingerbread/images/identity-ssl-hdpi.png)
   skin/gingerbread/images/identity-ev-hdpi.png          (gingerbread/images/identity-ev-hdpi.png)
   skin/gingerbread/images/unlocked-hdpi.png             (gingerbread/images/unlocked-hdpi.png)
   skin/gingerbread/images/locked-hdpi.png               (gingerbread/images/locked-hdpi.png)
   skin/gingerbread/images/close-default-hdpi.png        (gingerbread/images/close-default-hdpi.png)
+  skin/gingerbread/images/close-default-tablet-hdpi.png (gingerbread/images/close-default-tablet-hdpi.png)
   skin/gingerbread/images/close-active-hdpi.png         (gingerbread/images/close-active-hdpi.png)
+  skin/gingerbread/images/close-active-tablet-hdpi.png  (gingerbread/images/close-active-tablet-hdpi.png)
+  skin/gingerbread/images/close-background-hdpi.png     (gingerbread/images/close-background-hdpi.png)
   skin/gingerbread/images/close-inactive-tab-hdpi.png   (gingerbread/images/close-inactive-tab-hdpi.png)
+  skin/gingerbread/images/close-inactive-tab-tablet-hdpi.png   (gingerbread/images/close-inactive-tab-tablet-hdpi.png)
   skin/gingerbread/images/check-30.png                  (gingerbread/images/check-30.png)
   skin/gingerbread/images/search-glass-30.png           (gingerbread/images/search-glass-30.png)
   skin/gingerbread/images/search-clear-30.png           (gingerbread/images/search-clear-30.png)
   skin/gingerbread/images/section-expanded-16.png       (images/section-expanded-16.png)
   skin/gingerbread/images/section-collapsed-16.png      (images/section-collapsed-16.png)
   skin/gingerbread/images/task-switch-hdpi.png          (gingerbread/images/task-switch-hdpi.png)
   skin/gingerbread/images/task-close-hdpi.png           (gingerbread/images/task-close-hdpi.png)
   skin/gingerbread/images/task-back-hdpi.png            (gingerbread/images/task-back-hdpi.png)
@@ -334,16 +344,17 @@ chrome.jar:
   skin/honeycomb/images/panelrow-selected-hdpi.png    (honeycomb/images/panelrow-selected-hdpi.png)
   skin/honeycomb/images/forward-default-hdpi.png        (honeycomb/images/forward-default-hdpi.png)
   skin/honeycomb/images/downloads-default-hdpi.png      (honeycomb/images/downloads-default-hdpi.png)
   skin/honeycomb/images/settings-default-hdpi.png       (honeycomb/images/settings-default-hdpi.png)
   skin/honeycomb/images/preferences-default-hdpi.png    (honeycomb/images/preferences-default-hdpi.png)
   skin/honeycomb/images/row-header-bg.png             (honeycomb/images/row-header-bg.png)
   skin/honeycomb/images/console-default-hdpi.png        (honeycomb/images/console-default-hdpi.png)
   skin/honeycomb/images/newtab-default-hdpi.png         (honeycomb/images/newtab-default-hdpi.png)
+  skin/honeycomb/images/newtab-default-tablet-hdpi.png (honeycomb/images/newtab-default-tablet-hdpi.png)
   skin/honeycomb/images/tab-active-hdpi.png           (honeycomb/images/tab-active-hdpi.png)
   skin/honeycomb/images/tab-inactive-hdpi.png         (honeycomb/images/tab-inactive-hdpi.png)
   skin/honeycomb/images/tab-closed-hdpi.png           (honeycomb/images/tab-closed-hdpi.png)
   skin/honeycomb/images/tab-reopen-hdpi.png           (honeycomb/images/tab-reopen-hdpi.png)
   skin/honeycomb/images/remotetabs-48.png             (honeycomb/images/remotetabs-48.png)
   skin/honeycomb/images/remotetabs-32.png             (honeycomb/images/remotetabs-32.png)
   skin/honeycomb/images/mozilla-32.png                (images/mozilla-32.png)
   skin/honeycomb/images/toggle-on.png                 (honeycomb/images/toggle-on.png)
@@ -354,18 +365,22 @@ chrome.jar:
   skin/honeycomb/images/next-hdpi.png                 (honeycomb/images/next-hdpi.png)
   skin/honeycomb/images/next-disabled-hdpi.png        (honeycomb/images/next-disabled-hdpi.png)
   skin/honeycomb/images/identity-default-hdpi.png     (honeycomb/images/identity-default-hdpi.png)
   skin/honeycomb/images/identity-ssl-hdpi.png         (honeycomb/images/identity-ssl-hdpi.png)
   skin/honeycomb/images/identity-ev-hdpi.png          (honeycomb/images/identity-ev-hdpi.png)
   skin/honeycomb/images/unlocked-hdpi.png             (honeycomb/images/unlocked-hdpi.png)
   skin/honeycomb/images/locked-hdpi.png               (honeycomb/images/locked-hdpi.png)
   skin/honeycomb/images/close-default-hdpi.png        (honeycomb/images/close-default-hdpi.png)
+  skin/honeycomb/images/close-default-tablet-hdpi.png (honeycomb/images/close-default-tablet-hdpi.png)
   skin/honeycomb/images/close-active-hdpi.png         (honeycomb/images/close-active-hdpi.png)
+  skin/honeycomb/images/close-active-tablet-hdpi.png  (honeycomb/images/close-active-tablet-hdpi.png)
+  skin/honeycomb/images/close-background-hdpi.png     (honeycomb/images/close-background-hdpi.png)
   skin/honeycomb/images/close-inactive-tab-hdpi.png   (honeycomb/images/close-inactive-tab-hdpi.png)
+  skin/honeycomb/images/close-inactive-tab-tablet-hdpi.png   (honeycomb/images/close-inactive-tab-tablet-hdpi.png)
   skin/honeycomb/images/check-30.png                  (images/check-30.png)
   skin/honeycomb/images/check-selected-hdpi.png       (honeycomb/images/check-selected-hdpi.png)
   skin/honeycomb/images/check-unselected-hdpi.png     (honeycomb/images/check-unselected-hdpi.png)
   skin/honeycomb/images/search-glass-30.png           (honeycomb/images/search-glass-30.png)
   skin/honeycomb/images/search-clear-30.png           (honeycomb/images/search-clear-30.png)
   skin/honeycomb/images/section-expanded-16.png       (images/section-expanded-16.png)
   skin/honeycomb/images/section-collapsed-16.png      (images/section-collapsed-16.png)
   skin/honeycomb/images/task-switch-hdpi.png          (honeycomb/images/task-switch-hdpi.png)
new file mode 100644
--- /dev/null
+++ b/mobile/themes/core/tablet.css
@@ -0,0 +1,134 @@
+
+.spacer-actionbar,
+.button-actionbar {
+  visibility: collapse;
+}
+
+.button-actionbar[disabled="true"] {
+  opacity: 0.5;
+}
+
+%ifndef honeycomb
+.button-actionbar:hover:active {
+  background-color: #8db8d8;
+}
+%endif
+
+#toolbar-main[tablet="true"] > .spacer-actionbar,
+#toolbar-main[tablet="true"] > .button-actionbar {
+  visibility: visible;
+}
+#toolbar-main[tablet="true"] > #tool-tabs {
+  visibility: collapse;
+}
+
+#controls-scrollbox[tablet="true"] > #controls-sidebar {
+  visibility: collapse;
+}
+
+#tabs-spacer[tablet="true"]  {
+  visibility: collapse;
+}
+
+#tabs-container[tablet="true"] {
+  -moz-border-end: 0px;
+  background: #000;
+}
+
+#tabs[tablet="true"] > scrollbox {
+  max-width: 200px;
+}
+
+#tabs[tablet="true"] .tabs-list {
+  -moz-column-width: 200px;
+  -moz-padding-end: 0px;
+  -moz-padding-start: 0px;
+}
+
+documenttab[tablet="true"] {
+  width: 200px;
+  padding: @padding_xxnormal@;
+  -moz-margin-start: 0px;
+  background: none;
+}
+
+documenttab[tablet="true"][selected="true"] {
+  background: none;
+}
+
+.documenttab-thumbnail[tablet="true"] {
+  border-radius: @border_radius_tiny@;
+}
+
+.documenttab-close-container[tablet="true"] {
+  left: 0px;
+  -moz-margin-end: 0px;
+  -moz-margin-start: 135px;
+  -moz-box-pack: end;
+  -moz-box-align: center;
+}
+
+documenttab[selected="true"] > stack > .documenttab-close-container[tablet="true"] {
+  background: url("chrome://browser/skin/images/close-background-hdpi.png");
+  background-repeat: no-repeat;
+  background-position: right;
+  -moz-margin-end: -@padding_xxnormal@;
+  padding-right: 2px;
+}
+
+.documenttab-close[tablet="true"] {
+  width: 30px;
+  height: 44px;
+  list-style-image: url("chrome://browser/skin/images/close-inactive-tab-tablet-hdpi.png");
+}
+
+documenttab[selected="true"] > stack > hbox > .documenttab-close[tablet="true"] {
+  list-style-image: url("chrome://browser/skin/images/close-default-tablet-hdpi.png");
+}
+
+.documenttab-close-container:hover:active > .documenttab-close[tablet="true"] {
+  list-style-image: url("chrome://browser/skin/images/close-active-tablet-hdpi.png");
+}
+
+#newtab-button[tablet="true"] {
+  list-style-image: url("images/newtab-default-tablet-hdpi.png");
+}
+
+@media (@orientation@: portrait) {
+  #toolbar-main[tablet="true"] > #tool-tabs {
+    visibility: visible;
+  }
+
+  #controls-scrollbox[tablet="true"] > #tabs-sidebar {
+    border: none;
+%ifdef honeycomb
+    top: @touch_button_xlarge@;
+%else
+    top: -moz-calc(@touch_button_xlarge@ + @margin_normal@);
+%endif
+    visibility: collapse;
+  }
+
+  #controls-scrollbox[tablet="true"] > #tabs-sidebar:-moz-locale-dir(ltr) {
+    left: 0;
+  }
+  #controls-scrollbox[tablet="true"] > #tabs-sidebar:-moz-locale-dir(rtl) {
+    right: 0;
+  }
+
+  #controls-scrollbox[tablet="true"] > #tabs-sidebar[open] {
+    position: fixed;
+    visibility: visible;
+  }
+}
+
+%ifndef honeycomb
+@media (min-width: @tablet_panel_minwidth@) {
+  #awesome-panels {
+    -moz-box-shadow: 0px 0px @shadow_width_small@ black;
+  }
+  #search-engines-popup {
+    max-width: -moz-calc(@tablet_panel_minwidth@);
+  }
+}
+%endif