Merge "Use a fixed title bar if accessibility is enabled" into jb-mr1-dev
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 385d494..e84e397 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -512,8 +512,8 @@
                             case R.id.save_link_context_menu_id:
                             case R.id.download_context_menu_id:
                                 DownloadHandler.onDownloadStartNoStream(
-                                        mActivity, url, null, null, null, null,
-                                        view.isPrivateBrowsingEnabled());
+                                        mActivity, url, view.getSettings().getUserAgentString(),
+                                        null, null, null, view.isPrivateBrowsingEnabled());
                                 break;
                         }
                         break;
@@ -860,11 +860,6 @@
     public void onPageFinished(Tab tab) {
         mCrashRecoveryHandler.backupState();
         mUi.onTabDataChanged(tab);
-        // pause the WebView timer and release the wake lock if it is finished
-        // while BrowserActivity is in pause state.
-        if (mActivityPaused && pauseWebViewTimers(tab)) {
-            releaseWakeLock();
-        }
 
         // Performance probe
         if (false) {
@@ -889,6 +884,10 @@
             // onPageFinished has executed)
             if (tab.inPageLoad()) {
                 updateInLoadMenuItems(mCachedMenu, tab);
+            } else if (mActivityPaused && pauseWebViewTimers(tab)) {
+                // pause the WebView timer and release the wake lock if it is
+                // finished while BrowserActivity is in pause state.
+                releaseWakeLock();
             }
             if (!tab.isPrivateBrowsingEnabled()
                     && !TextUtils.isEmpty(tab.getUrl())
@@ -1434,9 +1433,9 @@
                         return false;
                     }
                 });
-                menu.findItem(R.id.download_context_menu_id).
-                        setOnMenuItemClickListener(
-                                new Download(mActivity, extra, webview.isPrivateBrowsingEnabled()));
+                menu.findItem(R.id.download_context_menu_id).setOnMenuItemClickListener(
+                        new Download(mActivity, extra, webview.isPrivateBrowsingEnabled(),
+                                webview.getSettings().getUserAgentString()));
                 menu.findItem(R.id.set_wallpaper_context_menu_id).
                         setOnMenuItemClickListener(new WallpaperHandler(mActivity,
                                 extra));
@@ -2166,6 +2165,7 @@
         private Activity mActivity;
         private String mText;
         private boolean mPrivateBrowsing;
+        private String mUserAgent;
         private static final String FALLBACK_EXTENSION = "dat";
         private static final String IMAGE_BASE_FORMAT = "yyyy-MM-dd-HH-mm-ss-";
 
@@ -2174,16 +2174,18 @@
             if (DataUri.isDataUri(mText)) {
                 saveDataUri();
             } else {
-                DownloadHandler.onDownloadStartNoStream(mActivity, mText, null,
+                DownloadHandler.onDownloadStartNoStream(mActivity, mText, mUserAgent,
                         null, null, null, mPrivateBrowsing);
             }
             return true;
         }
 
-        public Download(Activity activity, String toDownload, boolean privateBrowsing) {
+        public Download(Activity activity, String toDownload, boolean privateBrowsing,
+                String userAgent) {
             mActivity = activity;
             mText = toDownload;
             mPrivateBrowsing = privateBrowsing;
+            mUserAgent = userAgent;
         }
 
         /**
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index e3c22bd..89eae70 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -54,6 +54,7 @@
     private int mActionBarHeight;
 
     boolean mAnimating;
+    boolean mShowNav = false;
 
     /**
      * @param browser
@@ -80,6 +81,8 @@
         if (mUseQuickControls) {
             mTitleBar.setShowProgressOnly(false);
         }
+        //Do nothing while at Nav show screen.
+        if (mShowNav) return;
         super.editUrl(clearInput, forceIME);
     }
 
@@ -131,6 +134,12 @@
         mTitleBar.cancelTitleBarAnimation(true);
         mTitleBar.setSkipTitleBarAnimations(true);
         super.setActiveTab(tab);
+
+        //if at Nav screen show, detach tab like what showNavScreen() do.
+        if (mShowNav) {
+            detachTab(mActiveTab);
+        }
+
         BrowserWebView view = (BrowserWebView) tab.getWebView();
         // TabControl.setCurrentTab has been called before this,
         // so the tab is guaranteed to have a webview
@@ -254,6 +263,7 @@
     }
 
     void showNavScreen() {
+        mShowNav = true;
         mUiController.setBlockEvents(true);
         if (mNavScreen == null) {
             mNavScreen = new NavScreen(mActivity, mUiController, this);
@@ -334,6 +344,7 @@
     }
 
     void hideNavScreen(int position, boolean animate) {
+        mShowNav = false;
         if (!showingNavScreen()) return;
         final Tab tab = mUiController.getTabControl().getTab(position);
         if ((tab == null) || !animate) {