diff --git a/res/layout/bookmarkthumbnailwidget.xml b/res/layout/bookmarkthumbnailwidget.xml
index 967e4c1..0bff98e 100644
--- a/res/layout/bookmarkthumbnailwidget.xml
+++ b/res/layout/bookmarkthumbnailwidget.xml
@@ -16,38 +16,28 @@
 <RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="0dip"
-    android:paddingBottom="3dip"
-    android:paddingLeft="0dip"
-    android:paddingRight="0dip">
+    android:layout_height="match_parent">
     <GridView
         android:id="@+id/bookmarks_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:numColumns="auto_fit"
         android:columnWidth="@dimen/widgetColumnWidth"
-        android:paddingTop="6dip"
-        android:paddingRight="7dip"
-        android:paddingLeft="7dip"
         android:stretchMode="columnWidth"
         android:horizontalSpacing="@dimen/widgetHorizontalSpacing"
         android:verticalSpacing="@dimen/widgetVerticalSpacing"
         android:drawSelectorOnTop="true"
         android:listSelector="@drawable/bookmark_widget_thumb_selector"
-        android:fadingEdgeLength="24dp"
-        android:scrollbarStyle="outsideOverlay"
         android:background="@drawable/bg_bookmarks_widget_holo" />
 
     <ImageButton
         android:id="@+id/app_shortcut"
-        android:layout_width="56dip"
-        android:layout_height="56dip"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
         android:layout_alignParentRight="true"
         android:layout_marginRight="4dip"
-        android:layout_marginBottom="6dip"
-        android:scaleType="centerInside"
+        android:layout_marginBottom="4dip"
         android:src="@mipmap/ic_launcher_browser"
         android:background="@drawable/bookmark_widget_thumb_selector"
         android:padding="4dip" />
diff --git a/res/layout/nav_screen.xml b/res/layout/nav_screen.xml
index baabcc7..0ea332f 100644
--- a/res/layout/nav_screen.xml
+++ b/res/layout/nav_screen.xml
@@ -19,7 +19,6 @@
     android:id="@+id/nav_screen"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
     android:background="@drawable/browser_background_holo">
     <com.android.browser.NavTabGallery
         android:id="@+id/scroller"
@@ -30,7 +29,8 @@
         android:id="@+id/tabbar"
         android:orientation="horizontal"
         android:layout_width="match_parent"
-        android:layout_height="44dip"
+        android:layout_height="@dimen/toolbar_height"
+        android:layout_gravity="top"
         android:gravity="right"
         android:background="#C0404040">
         <ImageButton
diff --git a/res/menu/browser.xml b/res/menu/browser.xml
index 7d288c1..2b651c3 100644
--- a/res/menu/browser.xml
+++ b/res/menu/browser.xml
@@ -50,21 +50,30 @@
             android:icon="@drawable/ic_bookmarks_history_holo_dark"
             android:alphabeticShortcut="b"
             android:visible="@bool/menu_show_bookmarks" />
-        <item
-            android:id="@+id/share_page_menu_id"
-            android:title="@string/share_page"
-            android:icon="@drawable/ic_share_holo_dark"
-            android:alphabeticShortcut="s" />
-        <item
-            android:id="@+id/find_menu_id"
-            android:title="@*android:string/find_on_page"/>
-        <item
-            android:id="@+id/ua_desktop_menu_id"
-            android:checkable="true"
-            android:title="@string/ua_switcher_desktop" />
-        <item
-            android:id="@+id/save_snapshot_menu_id"
-            android:title="@string/menu_save_snapshot" />
+        <group
+            android:id="@+id/LIVE_MENU">
+            <item
+                android:id="@+id/share_page_menu_id"
+                android:title="@string/share_page"
+                android:icon="@drawable/ic_share_holo_dark"
+                android:alphabeticShortcut="s" />
+            <item
+                android:id="@+id/find_menu_id"
+                android:title="@*android:string/find_on_page"/>
+            <item
+                android:id="@+id/ua_desktop_menu_id"
+                android:checkable="true"
+                android:title="@string/ua_switcher_desktop" />
+            <item
+                android:id="@+id/save_snapshot_menu_id"
+                android:title="@string/menu_save_snapshot" />
+        </group>
+        <group
+            android:id="@+id/SNAPSHOT_MENU">
+            <item
+                android:id="@+id/snapshot_go_live"
+                android:title="@string/snapshot_go_live" />
+        </group>
         <item
             android:id="@+id/page_info_menu_id"
             android:title="@string/page_info" />
diff --git a/res/menu/snapshot_go_live.xml b/res/menu/snapshot_go_live.xml
deleted file mode 100644
index aa6b38e..0000000
--- a/res/menu/snapshot_go_live.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/snapshot_go_live"
-        android:title="@string/snapshot_go_live" />
-</menu>
-
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index e442691..24f8bb0 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -402,7 +402,7 @@
     <string name="accessibility_button_forward" msgid="1236827218480658168">"Maju"</string>
     <string name="accessibility_button_refresh" msgid="1023441396241841313">"Menyegarkan laman"</string>
     <string name="accessibility_button_stop" msgid="6793644120043222148">"Menghentikan pemuatan laman"</string>
-    <string name="accessibility_button_addbookmark" msgid="4787844912630006181">"Bookmark laman"</string>
+    <string name="accessibility_button_addbookmark" msgid="4787844912630006181">"Mem-bookmark laman"</string>
     <string name="accessibility_button_search" msgid="5357014102136055376">"Penelusuran"</string>
     <string name="accessibility_button_voice" msgid="152016375096083337">"Memulai penelusuran suara"</string>
     <string name="accessibility_button_bookmarks" msgid="7435055677299151649">"Mem-bookmark"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index fe1e151..a5d1720 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -146,7 +146,7 @@
     <item msgid="844041670142910837">"Ukurasa uliopo"</item>
     <item msgid="4430498748295169195">"Ukurasa mtupu"</item>
     <item msgid="5747608191946904074">"Ukurasa chaguo-msingi"</item>
-    <item msgid="6092441301001006473">"Tovuti zilizotembelewa zaidi"</item>
+    <item msgid="6092441301001006473">"Wavuti uliotembelewa zaidi"</item>
     <item msgid="5021822752506507426">"Nyinginezo…"</item>
   </string-array>
     <string name="pref_content_autofit" msgid="8260474534053660809">"Kuweka kiotomatiki kurasa"</string>
@@ -226,7 +226,7 @@
     <item msgid="5043128215356351184">"Kubwa"</item>
     <item msgid="7201512237890458902">"Kubwa mno"</item>
   </string-array>
-    <string name="pref_min_font_size" msgid="8811125835817449131">"Ukubwa wa chini wa fonti"</string>
+    <string name="pref_min_font_size" msgid="8811125835817449131">"Wastani wa ukubwa wa fonti"</string>
     <string name="pref_min_font_size_value" msgid="2924708480509060209">"pt <xliff:g id="FONT_SIZE">%d</xliff:g>"</string>
     <string name="pref_text_zoom" msgid="8387229123479610157">"Kuza maandishi"</string>
     <string name="pref_force_userscalable" msgid="5641500562399892621">"Lazimishakuwezesha kukuza"</string>
@@ -273,9 +273,9 @@
     <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Moja kwa moja"</string>
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Tumia Google Moja kwa moja unapotumia Google Search, ili kuonyesha matokeo unapokiwaukichapisha (hii inaweza kuongeza kuongeza data inayotumika)"</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Skrini nzima"</string>
-    <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Tumia hali ya skrini nzima ili kuficha mwamba hali."</string>
+    <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Tumia modi ya skrini nzima ili kuficha mwamba hali."</string>
     <string name="pref_data_title" msgid="750316606686075162">"Udhibitii wa Kipimo-Data"</string>
-    <string name="pref_data_preload_title" msgid="4479320472980292873">"Matokeo ya utafutaji yanapakia awali"</string>
+    <string name="pref_data_preload_title" msgid="4479320472980292873">"Matokeo ya utafutaji yanapakia kabla"</string>
   <string-array name="pref_data_preload_choices">
     <item msgid="5180466923190095508">"kamwe"</item>
     <item msgid="1791664748778640002">"kwenye Wi-Fi tu"</item>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 14ee991..5f7e273 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -101,7 +101,7 @@
     <string name="history" msgid="2451240511251410032">"Umlando"</string>
     <string name="menu_view_download" msgid="2124570321712995120">"Okulayishiwe"</string>
     <string name="copy_page_url" msgid="7635062169011319208">"Kopisha i-url yekhasi"</string>
-    <string name="share_page" msgid="593756995297268343">"Yabelana ngekhasi"</string>
+    <string name="share_page" msgid="593756995297268343">"Yabelana nekhasi"</string>
     <string name="menu_save_snapshot" msgid="6935080344031126139">"Gcina ukufunda ungaxhumekile kwi-inthanethi"</string>
     <string name="snapshot_failed" msgid="4584580873565876033">"Angikwazanga ukulondolozela ukufunda ngaphandle kwe-inthanethi."</string>
     <string name="contextheader_folder_bookmarkcount" msgid="353987136645619089">"<xliff:g id="BOOKMARK_COUNT">%d</xliff:g> amabhukimakhi"</string>
@@ -110,7 +110,7 @@
     <string name="contextmenu_openlink_newwindow" msgid="1205313604181761403">"Vula kwisithikithana esitsha"</string>
     <string name="contextmenu_openlink_newwindow_background" msgid="4690381019116746687">"Vula kwisithikithana sangemuva"</string>
     <string name="contextmenu_savelink" msgid="5508554930832538184">"Londoloza isihlanganisi"</string>
-    <string name="contextmenu_sharelink" msgid="5392275392280130331">"Yabelana ngesihlanganisi"</string>
+    <string name="contextmenu_sharelink" msgid="5392275392280130331">"Yabelana nesihlanganisi"</string>
     <string name="contextmenu_copy" msgid="398860586635404030">"Kopisha"</string>
     <string name="contextmenu_copylink" msgid="5153657160294534270">"Kopisha isihlanganisi se-URL"</string>
     <string name="contextmenu_download_image" msgid="4243829645180686912">"Londoloza isithombe"</string>
@@ -270,7 +270,7 @@
     <string name="pref_lab_title" msgid="5571091610359629423">"Amalebhu"</string>
     <string name="pref_lab_quick_controls" msgid="3267606522082281367">"Izilawuli ezisheshayo"</string>
     <string name="pref_lab_quick_controls_summary" msgid="1564546156544675707">"Swayipha isithupha kusuka ekucupheleni okwesobunxele kuya kokwesokudla ukuze ufinyelele izimpathi ngokushesha bese ufihla izinhlelo zokusebenza namabha e-URL."</string>
-    <string name="pref_use_instant_search" msgid="1119176077760723740">"Google Instant"</string>
+    <string name="pref_use_instant_search" msgid="1119176077760723740">"I-Google Instant"</string>
     <string name="pref_use_instant_search_summary" msgid="839320474961917522">"Sebenzisa i-Google Instant uma usebenzisa Usesho lwe-Google, ukubonisa imiphumelo njengoba uthayipha (lokhu kungakhuphula ukusetshenziswa kwedatha)."</string>
     <string name="pref_lab_fullscreen" msgid="8173609016657987973">"Isikrini esigcwele"</string>
     <string name="pref_lab_fullscreen_summary" msgid="6853711692160711419">"Sebenzisa imodi yesikrini esiphelele ukuze ufihle umudwa ochaza ngesimo."</string>
diff --git a/res/values/dimensions.xml b/res/values/dimensions.xml
index 3a25e4e..5652451 100644
--- a/res/values/dimensions.xml
+++ b/res/values/dimensions.xml
@@ -50,7 +50,7 @@
     <dimen name="widgetThumbnailHeight">94dip</dimen>
     <dimen name="widgetHorizontalSpacing">6dip</dimen>
     <dimen name="widgetVerticalSpacing">6dip</dimen>
-    <dimen name="widgetColumnWidth">90dip</dimen>
+    <dimen name="widgetColumnWidth">80dip</dimen>
     <!-- For the combined Bookmarks History view -->
     <dimen name="combo_paddingTop">0dip</dimen>
     <dimen name="combo_horizontalSpacing">6dip</dimen>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index c9cb170..361702e 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -21,9 +21,9 @@
     <style name="BrowserTheme" parent="@android:Theme.Holo">
         <item name="android:windowBackground">@color/white</item>
         <item name="android:colorBackground">#FFFFFFFF</item>
-        <item name="android:windowActionBar">true</item>
-        <item name="android:windowNoTitle">false</item>
-        <item name="android:windowActionBarOverlay">false</item>
+        <item name="android:windowActionBar">false</item>
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowActionModeOverlay">true</item>
         <item name="android:actionBarStyle">@style/ActionBarStyle</item>
     </style>
     <style name="DialogWhenLarge" parent="@android:style/Theme.Holo.DialogWhenLarge" >
diff --git a/res/xml-sw600dp/bookmarkthumbnailwidget_info.xml b/res/xml-sw600dp/bookmarkthumbnailwidget_info.xml
index 99afda7..7fdcbef 100644
--- a/res/xml-sw600dp/bookmarkthumbnailwidget_info.xml
+++ b/res/xml-sw600dp/bookmarkthumbnailwidget_info.xml
@@ -17,10 +17,10 @@
 <!-- 3x3 Widget displaying the user's bookmarks as a list with favicons. -->
 <appwidget-provider
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:minWidth="219dip"
-    android:minHeight="219dip"
-    android:minResizeHeight="72dip"
-    android:minResizeWidth="146dip"
+    android:minWidth="180dip"
+    android:minHeight="180dip"
+    android:minResizeHeight="40dip"
+    android:minResizeWidth="110dip"
     android:updatePeriodMillis="0"
     android:previewImage="@drawable/browser_widget_preview"
     android:initialLayout="@layout/bookmarkthumbnailwidget"
diff --git a/res/xml/bookmarkthumbnailwidget_info.xml b/res/xml/bookmarkthumbnailwidget_info.xml
index bf2e612..f8ca797 100644
--- a/res/xml/bookmarkthumbnailwidget_info.xml
+++ b/res/xml/bookmarkthumbnailwidget_info.xml
@@ -17,10 +17,10 @@
 <!-- 3x2 Widget displaying the user's bookmarks as a list with favicons. -->
 <appwidget-provider
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:minWidth="219dip"
-    android:minHeight="146dip"
-    android:minResizeHeight="72dip"
-    android:minResizeWidth="146dip"
+    android:minWidth="180dip"
+    android:minHeight="110dip"
+    android:minResizeHeight="40dip"
+    android:minResizeWidth="110dip"
     android:updatePeriodMillis="0"
     android:previewImage="@drawable/browser_widget_preview"
     android:initialLayout="@layout/bookmarkthumbnailwidget"
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 27f6ef8..da60fda 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -422,7 +422,6 @@
             return true;
         }
 
-        // TODO: Folder stuff
         if (isFolder) {
             String title = cursor.getString(BookmarksLoader.COLUMN_INDEX_TITLE);
             Uri uri = ContentUris.withAppendedId(
@@ -431,6 +430,7 @@
             if (crumbs != null) {
                 // update crumbs
                 crumbs.pushView(title, uri);
+                crumbs.setVisibility(View.VISIBLE);
             }
             loadFolder(groupPosition, uri);
         }
@@ -563,6 +563,11 @@
             uri = BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER;
         }
         loadFolder(groupPosition, uri);
+        if (level <= 1) {
+            view.setVisibility(View.GONE);
+        } else {
+            view.setVisibility(View.VISIBLE);
+        }
     }
 
     /**
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 6b8daec..cfaa18a 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -25,6 +25,7 @@
 import android.os.Message;
 import android.preference.PreferenceManager;
 import android.provider.Browser;
+import android.util.DisplayMetrics;
 import android.webkit.CookieManager;
 import android.webkit.GeolocationPermissions;
 import android.webkit.WebIconDatabase;
@@ -104,6 +105,7 @@
     private WeakHashMap<WebSettings, String> mCustomUserAgents;
     private static boolean sInitialized = false;
     private boolean mNeedsSharedSync = true;
+    private float mFontSizeMult = 1.0f;
 
     // Cached values
     private int mPageCacheCapacity = 1;
@@ -158,6 +160,8 @@
 
         @Override
         public void run() {
+            DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
+            mFontSizeMult = metrics.scaledDensity / metrics.density;
             // the cost of one cached page is ~3M (measured using nytimes.com). For
             // low end devices, we only cache one page. For high end devices, we try
             // to cache more pages, currently choose 5.
@@ -522,9 +526,9 @@
         return rawValue;
     }
 
-    public static int getAdjustedTextZoom(int rawValue) {
+    public int getAdjustedTextZoom(int rawValue) {
         rawValue = (rawValue - TEXT_ZOOM_START_VAL) * TEXT_ZOOM_STEP;
-        return rawValue + 100;
+        return (int) ((rawValue + 100) * mFontSizeMult);
     }
 
     static int getRawTextZoom(int percent) {
diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java
index 2042ccf..b763cf1 100644
--- a/src/com/android/browser/BrowserWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -121,4 +121,9 @@
         mOnScrollChangedListener = listener;
     }
 
+    @Override
+    public boolean showContextMenuForChild(View originalView) {
+        return false;
+    }
+
 }
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 3533bf1..aa7ecd9 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -211,8 +211,6 @@
     private ContentObserver mBookmarksObserver;
     private CrashRecoveryHandler mCrashRecoveryHandler;
 
-    private boolean mSimulateActionBarOverlayMode;
-
     private boolean mBlockEvents;
 
     public Controller(Activity browser, boolean preloadCrashState) {
@@ -251,7 +249,6 @@
         mSystemAllowGeolocationOrigins.start();
 
         openIconDatabase();
-        mSimulateActionBarOverlayMode = !BrowserActivity.isTablet(mActivity);
     }
 
     void start(final Bundle icicle, final Intent intent) {
@@ -803,9 +800,6 @@
             resumeWebViewTimers(tab);
         }
         mLoadStopped = false;
-        if (!mNetworkHandler.isNetworkUp()) {
-            mNetworkHandler.createAndShowNetworkDialog();
-        }
         endActionMode();
 
         mUi.onTabDataChanged(tab);
@@ -1245,10 +1239,6 @@
         }
         MenuInflater inflater = mActivity.getMenuInflater();
         inflater.inflate(R.menu.browser, menu);
-        updateInLoadMenuItems(menu);
-        // hold on to the menu reference here; it is used by the page callbacks
-        // to update the menu based on loading state
-        mCachedMenu = menu;
         return true;
     }
 
@@ -1432,6 +1422,10 @@
     }
 
     boolean onPrepareOptionsMenu(Menu menu) {
+        updateInLoadMenuItems(menu);
+        // hold on to the menu reference here; it is used by the page callbacks
+        // to update the menu based on loading state
+        mCachedMenu = menu;
         // Note: setVisible will decide whether an item is visible; while
         // setEnabled() will decide whether an item is enabled, which also means
         // whether the matching shortcut key will function.
@@ -1462,11 +1456,13 @@
         boolean canGoForward = false;
         boolean isHome = false;
         boolean isDesktopUa = false;
+        boolean isLive = false;
         if (tab != null) {
             canGoBack = tab.canGoBack();
             canGoForward = tab.canGoForward();
             isHome = mSettings.getHomePage().equals(tab.getUrl());
             isDesktopUa = mSettings.hasDesktopUseragent(tab.getWebView());
+            isLive = !tab.isSnapshot();
         }
         final MenuItem back = menu.findItem(R.id.back_menu_id);
         back.setEnabled(canGoBack);
@@ -1483,6 +1479,7 @@
             dest.setTitle(source.getTitle());
             dest.setIcon(source.getIcon());
         }
+        menu.setGroupVisible(R.id.NAV_MENU, isLive);
 
         // decide whether to show the share link option
         PackageManager pm = mActivity.getPackageManager();
@@ -1503,6 +1500,8 @@
         counter.setEnabled(showDebugSettings);
         final MenuItem uaSwitcher = menu.findItem(R.id.ua_desktop_menu_id);
         uaSwitcher.setChecked(isDesktopUa);
+        menu.setGroupVisible(R.id.LIVE_MENU, isLive);
+        menu.setGroupVisible(R.id.SNAPSHOT_MENU, !isLive);
 
         mUi.updateMenuState(tab, menu);
     }
@@ -1620,6 +1619,10 @@
                 mPageDialogsHandler.showPageInfo(mTabControl.getCurrentTab(), false, null);
                 break;
 
+            case R.id.snapshot_go_live:
+                goLive();
+                return true;
+
             case R.id.classic_history_menu_id:
                 bookmarksOrHistoryPicker(true);
                 break;
@@ -1687,6 +1690,11 @@
         return true;
     }
 
+    private void goLive() {
+        Tab t = getCurrentTab();
+        t.loadUrl(t.getUrl(), null);
+    }
+
     public boolean onContextItemSelected(MenuItem item) {
         // Let the History and Bookmark fragments handle menus they created.
         if (item.getGroupId() == R.id.CONTEXT_MENU) {
@@ -1805,15 +1813,6 @@
     void onActionModeStarted(ActionMode mode) {
         mUi.onActionModeStarted(mode);
         mActionMode = mode;
-        if (mSimulateActionBarOverlayMode && !mUi.isEditingUrl()) {
-            WebView web = getCurrentWebView();
-            // Simulate overlay mode by scrolling the webview the amount it will be
-            // pushed down. Actual overlay mode doesn't work for us as otherwise
-            // the CAB will, well, overlay the content, which breaks things like
-            // find on page.
-            int scrollBy = getActionModeHeight();
-            web.scrollBy(0, scrollBy);
-        }
     }
 
     /*
@@ -1842,11 +1841,6 @@
         if (!isInCustomActionMode()) return;
         mUi.onActionModeFinished(mInLoad);
         mActionMode = null;
-        if (mSimulateActionBarOverlayMode) {
-            WebView web = getCurrentWebView();
-            int scrollBy = getActionModeHeight();
-            web.scrollBy(0, -scrollBy);
-        }
     }
 
     boolean isInLoad() {
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index 7e8695b..a1e778d 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -15,6 +15,7 @@
  */
 package com.android.browser;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
@@ -174,14 +175,21 @@
     }
 
     void showMenu(View anchor) {
-        mOverflowMenuShowing = true;
-        mPopupMenu = new PopupMenu(mContext, anchor);
+        Activity activity = mUiController.getActivity();
+        if (mPopupMenu == null) {
+            mPopupMenu = new PopupMenu(mContext, anchor);
+            mPopupMenu.setOnMenuItemClickListener(this);
+            mPopupMenu.setOnDismissListener(this);
+            if (!activity.onCreateOptionsMenu(mPopupMenu.getMenu())) {
+                mPopupMenu = null;
+                return;
+            }
+        }
         Menu menu = mPopupMenu.getMenu();
-        mPopupMenu.getMenuInflater().inflate(R.menu.browser, menu);
-        mUiController.updateMenuState(mBaseUi.getActiveTab(), menu);
-        mPopupMenu.setOnMenuItemClickListener(this);
-        mPopupMenu.setOnDismissListener(this);
-        mPopupMenu.show();
+        if (activity.onPrepareOptionsMenu(menu)) {
+            mOverflowMenuShowing = true;
+            mPopupMenu.show();
+        }
     }
 
     @Override
@@ -193,7 +201,6 @@
 
     private void onMenuHidden() {
         mOverflowMenuShowing = false;
-        mPopupMenu = null;
         mBaseUi.showTitleBarForDuration();
     }
 
diff --git a/src/com/android/browser/NetworkStateHandler.java b/src/com/android/browser/NetworkStateHandler.java
index 37f4a2f..2fbd035 100644
--- a/src/com/android/browser/NetworkStateHandler.java
+++ b/src/com/android/browser/NetworkStateHandler.java
@@ -17,7 +17,6 @@
 package com.android.browser;
 
 import android.app.Activity;
-import android.app.AlertDialog;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -39,9 +38,6 @@
     private BroadcastReceiver mNetworkStateIntentReceiver;
     private boolean mIsNetworkUp;
 
-    /* hold a ref so we can auto-cancel if necessary */
-    private AlertDialog mAlertDialog;
-
     public NetworkStateHandler(Activity activity, Controller controller) {
         mActivity = activity;
         mController = controller;
@@ -99,18 +95,8 @@
     void onNetworkToggle(boolean up) {
         if (up == mIsNetworkUp) {
             return;
-        } else if (up) {
-            mIsNetworkUp = true;
-            if (mAlertDialog != null) {
-                mAlertDialog.cancel();
-                mAlertDialog = null;
-            }
-        } else {
-            mIsNetworkUp = false;
-            if (mController.isInLoad()) {
-                createAndShowNetworkDialog();
-           }
         }
+        mIsNetworkUp = up;
         WebView w = mController.getCurrentWebView();
         if (w != null) {
             w.setNetworkAvailable(up);
@@ -121,18 +107,6 @@
         return mIsNetworkUp;
     }
 
-    // This method shows the network dialog alerting the user that the net is
-    // down. It will only show the dialog if mAlertDialog is null.
-    void createAndShowNetworkDialog() {
-        if (mAlertDialog == null) {
-            mAlertDialog = new AlertDialog.Builder(mActivity)
-                    .setTitle(R.string.loadSuspendedTitle)
-                    .setMessage(R.string.loadSuspended)
-                    .setPositiveButton(R.string.ok, null)
-                    .show();
-        }
-    }
-
     private void sendNetworkType(String type, String subtype) {
         WebView w = mController.getCurrentWebView();
         if (w != null) {
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index f5a76b9..61acef5 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -26,6 +26,7 @@
 import android.graphics.Canvas;
 import android.graphics.Matrix;
 import android.util.Log;
+import android.util.TypedValue;
 import android.view.ActionMode;
 import android.view.Gravity;
 import android.view.KeyEvent;
@@ -52,6 +53,7 @@
     private PieControlPhone mPieControl;
     private NavScreen mNavScreen;
     private NavigationBarPhone mNavigationBar;
+    private int mActionBarHeight;
 
     boolean mExtendedMenuOpen;
     boolean mOptionsMenuOpen;
@@ -63,9 +65,13 @@
      */
     public PhoneUi(Activity browser, UiController controller) {
         super(browser, controller);
-        mActivity.getActionBar().hide();
         setUseQuickControls(BrowserSettings.getInstance().useQuickControls());
         mNavigationBar = (NavigationBarPhone) mTitleBar.getNavigationBar();
+        TypedValue heightValue = new TypedValue();
+        browser.getTheme().resolveAttribute(
+                com.android.internal.R.attr.actionBarSize, heightValue, true);
+        mActionBarHeight = TypedValue.complexToDimensionPixelSize(heightValue.data,
+                browser.getResources().getDisplayMetrics());
     }
 
     @Override
@@ -162,7 +168,6 @@
 
     @Override
     public void updateMenuState(Tab tab, Menu menu) {
-        menu.setGroupVisible(R.id.NAV_MENU, (mNavScreen == null));
         MenuItem bm = menu.findItem(R.id.bookmarks_menu_id);
         if (bm != null) {
             bm.setVisible(mNavScreen == null);
@@ -173,7 +178,13 @@
         }
         MenuItem abm = menu.findItem(R.id.add_bookmark_menu_id);
         if (abm != null) {
-            abm.setVisible((tab != null) && !tab.isSnapshot());
+            abm.setVisible((tab != null) && !tab.isSnapshot() && mNavScreen == null);
+        }
+        if (mNavScreen != null) {
+            menu.setGroupVisible(R.id.LIVE_MENU, false);
+            menu.setGroupVisible(R.id.SNAPSHOT_MENU, false);
+            menu.findItem(R.id.page_info_menu_id).setVisible(false);
+            menu.setGroupVisible(R.id.NAV_MENU, false);
         }
     }
 
@@ -203,18 +214,20 @@
     public void onActionModeStarted(ActionMode mode) {
         if (!isEditingUrl()) {
             hideTitleBar();
+        } else {
+            mTitleBar.animate().translationY(mActionBarHeight);
         }
     }
 
     @Override
     public void onActionModeFinished(boolean inLoad) {
+        mTitleBar.animate().translationY(0);
         if (inLoad) {
             if (mUseQuickControls) {
                 mTitleBar.setShowProgressOnly(true);
             }
             showTitleBar();
         }
-        mActivity.getActionBar().hide();
     }
 
     @Override
diff --git a/src/com/android/browser/SnapshotBar.java b/src/com/android/browser/SnapshotBar.java
index 039afcf..2fb90d2 100644
--- a/src/com/android/browser/SnapshotBar.java
+++ b/src/com/android/browser/SnapshotBar.java
@@ -21,7 +21,6 @@
 import android.os.Message;
 import android.text.TextUtils;
 import android.util.AttributeSet;
-import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -29,21 +28,18 @@
 import android.view.ViewPropertyAnimator;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.PopupMenu;
 import android.widget.PopupMenu.OnMenuItemClickListener;
 import android.widget.TextView;
 
 import java.text.DateFormat;
 import java.util.Date;
 
-public class SnapshotBar extends LinearLayout implements OnClickListener,
-        OnMenuItemClickListener {
+public class SnapshotBar extends LinearLayout implements OnClickListener {
 
     private static final int MSG_SHOW_TITLE = 1;
     private static final long DURATION_SHOW_DATE = BaseUi.HIDE_TITLEBAR_DELAY;
 
     private ImageView mFavicon;
-    private View mGoLive;
     private TextView mDate;
     private TextView mTitle;
     private View mBookmarks;
@@ -86,10 +82,7 @@
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
-        mGoLive = mFavicon = (ImageView) findViewById(R.id.favicon);
-        if (mGoLive == null) {
-            mGoLive = findViewById(R.id.date_icon);
-        }
+        mFavicon = (ImageView) findViewById(R.id.favicon);
         mDate = (TextView) findViewById(R.id.date);
         mTitle = (TextView) findViewById(R.id.title);
         mBookmarks = findViewById(R.id.all_btn);
@@ -113,7 +106,6 @@
             mToggleContainer.setOnClickListener(this);
             resetAnimation();
         }
-        mGoLive.setOnClickListener(this);
     }
 
     @Override
@@ -173,12 +165,6 @@
     public void onClick(View v) {
         if (mBookmarks == v) {
             mTitleBar.getUiController().bookmarksOrHistoryPicker(false);
-        } else if (mGoLive == v) {
-            PopupMenu popup = new PopupMenu(mContext, mGoLive);
-            Menu menu = popup.getMenu();
-            popup.getMenuInflater().inflate(R.menu.snapshot_go_live, menu);
-            popup.setOnMenuItemClickListener(this);
-            popup.show();
         } else if (mTabSwitcher == v) {
             ((PhoneUi) mTitleBar.getUi()).toggleNavScreen();
         } else if (mOverflowMenu == v) {
@@ -195,21 +181,6 @@
         }
     }
 
-    @Override
-    public boolean onMenuItemClick(MenuItem item) {
-        switch (item.getItemId()) {
-        case R.id.snapshot_go_live:
-            goLive();
-            return true;
-        }
-        return false;
-    }
-
-    private void goLive() {
-        Tab t = mTitleBar.getUi().getActiveTab();
-        t.loadUrl(t.getUrl(), null);
-    }
-
     public void onTabDataChanged(Tab tab) {
         if (!tab.isSnapshot()) return;
         SnapshotTab snapshot = (SnapshotTab) tab;
diff --git a/src/com/android/browser/UiController.java b/src/com/android/browser/UiController.java
index 0da523a..97e99a9 100644
--- a/src/com/android/browser/UiController.java
+++ b/src/com/android/browser/UiController.java
@@ -16,6 +16,7 @@
 
 package com.android.browser;
 
+import android.app.Activity;
 import android.content.Intent;
 import android.view.Menu;
 import android.view.MenuItem;
@@ -100,4 +101,6 @@
 
     void setBlockEvents(boolean block);
 
+    Activity getActivity();
+
 }
diff --git a/src/com/android/browser/UrlBarAutoShowManager.java b/src/com/android/browser/UrlBarAutoShowManager.java
index b491e0b..f1bbe7f 100644
--- a/src/com/android/browser/UrlBarAutoShowManager.java
+++ b/src/com/android/browser/UrlBarAutoShowManager.java
@@ -103,7 +103,7 @@
         case MotionEvent.ACTION_DOWN:
             if (!mIsTracking && event.getPointerCount() == 1) {
                 long sinceLastScroll =
-                        System.currentTimeMillis() - mLastScrollTime;
+                        SystemClock.uptimeMillis() - mLastScrollTime;
                 if (sinceLastScroll < IGNORE_INTERVAL) {
                     break;
                 }
diff --git a/src/com/android/browser/WebStorageSizeManager.java b/src/com/android/browser/WebStorageSizeManager.java
index 109a02b..73a3bfb 100644
--- a/src/com/android/browser/WebStorageSizeManager.java
+++ b/src/com/android/browser/WebStorageSizeManager.java
@@ -392,10 +392,6 @@
         if(LOGV_ENABLED) {
             Log.v(LOGTAG, "scheduleOutOfSpaceNotification called.");
         }
-        if (mContext == null) {
-            // mContext can be null if we're running unit tests.
-            return;
-        }
         if ((mLastOutOfSpaceNotificationTime == -1) ||
             (System.currentTimeMillis() - mLastOutOfSpaceNotificationTime > NOTIFICATION_INTERVAL)) {
             // setup the notification boilerplate.
diff --git a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
index 312a61e..6adfd23 100644
--- a/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AccessibilityPreferencesFragment.java
@@ -76,7 +76,8 @@
                     .getAdjustedMinimumFontSize((Integer) objValue));
         }
         if (PreferenceKeys.PREF_TEXT_ZOOM.equals(pref.getKey())) {
-            updateTextZoomSummary(pref, BrowserSettings
+            BrowserSettings settings = BrowserSettings.getInstance();
+            updateTextZoomSummary(pref, settings
                     .getAdjustedTextZoom((Integer) objValue));
         }
         if (PreferenceKeys.PREF_INVERTED_CONTRAST.equals(pref.getKey())) {
diff --git a/src/com/android/browser/view/BookmarkExpandableView.java b/src/com/android/browser/view/BookmarkExpandableView.java
index 0bc6e62..0283448 100644
--- a/src/com/android/browser/view/BookmarkExpandableView.java
+++ b/src/com/android/browser/view/BookmarkExpandableView.java
@@ -502,6 +502,7 @@
                 crumbs.pushView(bookmarks, false,
                         BrowserContract.Bookmarks.CONTENT_URI_DEFAULT_FOLDER);
                 crumbs.setTag(R.id.group_position, groupPosition);
+                crumbs.setVisibility(View.GONE);
                 mBreadcrumbs.put(groupPosition, crumbs);
             }
             return crumbs;
diff --git a/tests/src/com/android/browser/WebStorageSizeManagerUnitTests.java b/tests/src/com/android/browser/WebStorageSizeManagerUnitTests.java
index 354c4da..2beedf8 100644
--- a/tests/src/com/android/browser/WebStorageSizeManagerUnitTests.java
+++ b/tests/src/com/android/browser/WebStorageSizeManagerUnitTests.java
@@ -90,7 +90,8 @@
         // We have an appcache file size of 0 MB.
         mAppCacheInfo.setAppCacheSizeBytes(0);
         // Create the manager.
-        WebStorageSizeManager manager = new WebStorageSizeManager(null, mDiskInfo, mAppCacheInfo);
+        WebStorageSizeManager manager = new WebStorageSizeManager(getContext(), mDiskInfo,
+                mAppCacheInfo);
         // We add origin 1.
         long origin1Quota = 0;
         long origin1EstimatedSize = bytes(3.5);
@@ -247,7 +248,8 @@
         mAppCacheInfo.setAppCacheSizeBytes(0);
 
         // Create the manager.
-        WebStorageSizeManager manager = new WebStorageSizeManager(null, mDiskInfo, mAppCacheInfo);
+        WebStorageSizeManager manager = new WebStorageSizeManager(getContext(), mDiskInfo,
+                mAppCacheInfo);
 
         // We add an origin.
         long originQuota = 0;
