Merge "Remove pre-login on every tab." into honeycomb-mr1
diff --git a/res/values/integers.xml b/res/values/integers.xml
index e936ed8..ad0ed90 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -24,6 +24,7 @@
     <!-- The maximum number of most visited URLs in the history tab -->
     <integer name="most_visits_limit">10</integer>
     <!-- Animation durations -->
+    <integer name="comboViewFadeInDuration">400</integer>
     <!--  fade between tabs duration -->
     <integer name="tabFadeDuration">300</integer>
 </resources>
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 5898680..71346ae 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -17,8 +17,11 @@
 package com.android.browser;
 
 import com.android.browser.Tab.LockIcon;
+import com.android.browser.UI.DropdownChangeListener;
 
-import android.animation.LayoutTransition;
+import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
+import android.animation.ObjectAnimator;
 import android.app.Activity;
 import android.content.res.Configuration;
 import android.content.res.Resources;
@@ -111,7 +114,6 @@
                 .inflate(R.layout.custom_screen, null);
         mContentView = (FrameLayout) mBrowserFrameLayout.findViewById(
                 R.id.main_content);
-        mContentView.setLayoutTransition(new LayoutTransition());
         mErrorConsoleContainer = (LinearLayout) mBrowserFrameLayout
                 .findViewById(R.id.error_console);
         mCustomViewContainer = (FrameLayout) mBrowserFrameLayout
@@ -459,6 +461,11 @@
             WebView web = mActiveTab.getWebView();
             mActiveTab.putInBackground();
         }
+        mComboView.setAlpha(0f);
+        ObjectAnimator anim = ObjectAnimator.ofFloat(mComboView, "alpha", 0f, 1f);
+        Resources res = mActivity.getResources();
+        anim.setDuration(res.getInteger(R.integer.comboViewFadeInDuration));
+        anim.start();
         mContentView.addView(mComboView, COVER_SCREEN_PARAMS);
     }
 
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 7bb9ff0..02533b0 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -51,6 +51,7 @@
 
     private TitleBarXLarge mTitleBar;
     private Animator mTitleBarAnimator;
+    private boolean mSkipTitleBarAnimations;
 
     private boolean mUseQuickControls;
     private PieControl mPieControl;
@@ -224,6 +225,8 @@
 
     @Override
     public void setActiveTab(final Tab tab) {
+        cancelTitleBarAnimation(true);
+        mSkipTitleBarAnimations = true;
         if (mUseQuickControls) {
             if (mActiveTab != null) {
                 captureTab(mActiveTab);
@@ -231,6 +234,7 @@
         }
         super.setActiveTab(tab, true);
         setActiveTab(tab, true);
+        mSkipTitleBarAnimations = false;
     }
 
     @Override
@@ -281,8 +285,11 @@
 
     @Override
     public void removeTab(Tab tab) {
+        cancelTitleBarAnimation(true);
+        mSkipTitleBarAnimations = true;
         super.removeTab(tab);
         mTabBar.onRemoveTab(tab);
+        mSkipTitleBarAnimations = false;
     }
 
     protected void onRemoveTabCompleted(Tab tab) {
@@ -321,18 +328,18 @@
             if (mUseQuickControls) {
                 mContentView.addView(mTitleBar);
             } else {
-                if (mTitleBarAnimator != null) {
-                    mTitleBarAnimator.cancel();
+                if (!mSkipTitleBarAnimations) {
+                    cancelTitleBarAnimation(false);
+                    int visibleHeight = getVisibleTitleHeight();
+                    float startPos = (-mTitleBar.getEmbeddedHeight() + visibleHeight);
+                    if (mTitleBar.getTranslationY() != 0) {
+                        startPos = Math.max(startPos, mTitleBar.getTranslationY());
+                    }
+                    mTitleBarAnimator = ObjectAnimator.ofFloat(mTitleBar,
+                            "translationY",
+                            startPos, 0);
+                    mTitleBarAnimator.start();
                 }
-                int visibleHeight = getVisibleTitleHeight();
-                float startPos = (-mTitleBar.getEmbeddedHeight() + visibleHeight);
-                if (mTitleBar.getTranslationY() != 0) {
-                    startPos = Math.max(startPos, mTitleBar.getTranslationY());
-                }
-                mTitleBarAnimator = ObjectAnimator.ofFloat(mTitleBar,
-                        "translationY",
-                        startPos, 0);
-                mTitleBarAnimator.start();
                 setTitleGravity(Gravity.TOP);
             }
             super.showTitleBar();
@@ -347,20 +354,32 @@
             if (mUseQuickControls) {
                 mContentView.removeView(mTitleBar);
             } else {
-                if (mTitleBarAnimator != null) {
-                    mTitleBarAnimator.cancel();
+                if (!mSkipTitleBarAnimations) {
+                    cancelTitleBarAnimation(false);
+                    int visibleHeight = getVisibleTitleHeight();
+                    mTitleBarAnimator = ObjectAnimator.ofFloat(mTitleBar,
+                            "translationY", mTitleBar.getTranslationY(),
+                            (-mTitleBar.getEmbeddedHeight() + visibleHeight));
+                    mTitleBarAnimator.addListener(mHideTileBarAnimatorListener);
+                    mTitleBarAnimator.start();
+                } else {
+                    setTitleGravity(Gravity.NO_GRAVITY);
                 }
-                int visibleHeight = getVisibleTitleHeight();
-                mTitleBarAnimator = ObjectAnimator.ofFloat(mTitleBar,
-                        "translationY", mTitleBar.getTranslationY(),
-                        (-mTitleBar.getEmbeddedHeight() + visibleHeight));
-                mTitleBarAnimator.addListener(mHideTileBarAnimatorListener);
-                mTitleBarAnimator.start();
             }
             super.hideTitleBar();
         }
     }
 
+    private void cancelTitleBarAnimation(boolean reset) {
+        if (mTitleBarAnimator != null) {
+            mTitleBarAnimator.cancel();
+            mTitleBarAnimator = null;
+        }
+        if (reset) {
+            mTitleBar.setTranslationY(0);
+        }
+    }
+
     private int getVisibleTitleHeight() {
         WebView webview = mActiveTab != null ? mActiveTab.getWebView() : null;
         return webview != null ? webview.getVisibleTitleHeight() : 0;
@@ -382,8 +401,8 @@
         public void onAnimationEnd(Animator animation) {
             if (!mWasCanceled) {
                 mTitleBar.setTranslationY(0);
-                setTitleGravity(Gravity.NO_GRAVITY);
             }
+            setTitleGravity(Gravity.NO_GRAVITY);
         }
 
         @Override