Auto hide URL bar.

- Implement URLbar hide on onOffsetsForFullscreenChanged
  notiication from the engine.

  -Reverted
   "Fix for disappearing title bar caused by copy/paste control"
   Change-Id: I19860bd9356b2dc392539aa1e16819545e32de6d"

Change-Id: Ie8547e9a7ca7dfc892a94c5632a7fddddef58cc3
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index ddc5ad2..4648de7 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -830,17 +830,43 @@
         setFullscreen(enabled);
         FrameLayout main = (FrameLayout) mActivity.getWindow()
             .getDecorView().findViewById(android.R.id.content);
-
+        boolean hide_title_on_scroll =
+            mActivity.getResources().getBoolean(R.bool.hide_title_on_scroll);
         LinearLayout titleBarParent = (LinearLayout) main.findViewById(R.id.vertical_layout);
         if (titleBarParent != null) {
             if (enabled) {
-                titleBarParent.removeView(mFixedTitlebarContainer);
+                if (!hide_title_on_scroll) {
+                    titleBarParent.removeView(mFixedTitlebarContainer);
+                }
+                else {
+                    mContentView.removeView(mTitleBar);
+                }
             } else {
-                titleBarParent.addView(mFixedTitlebarContainer, 1);
+                if (!hide_title_on_scroll) {
+                    titleBarParent.addView(mFixedTitlebarContainer, 1);
+                }
+                else {
+                    mContentView.addView(mTitleBar,
+                        new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
+                        LayoutParams.WRAP_CONTENT));
+                }
             }
         }
     }
 
+    public void transalateTitleBar(float topControlsOffsetYPix) {
+        if (mTitleBar != null) {
+            mTitleBar.bringToFront();
+            if (topControlsOffsetYPix != 0.0) {
+                mTitleBar.setEnabled(false);
+            } else {
+                mTitleBar.setEnabled(true);
+            }
+            mTitleBar.setTranslationY(topControlsOffsetYPix);
+
+        }
+    }
+
     public Drawable getFaviconDrawable(Bitmap icon) {
         Drawable[] array = new Drawable[3];
         array[0] = new PaintDrawable(Color.BLACK);
@@ -944,14 +970,22 @@
 
     @Override
     public void onActionModeStarted(ActionMode mode) {
-        int fixedTbarHeight = mTitleBar.isFixed() ? mTitleBar.calculateEmbeddedHeight() : 0;
-        mFixedTitlebarContainer.setY(fixedTbarHeight);
-        setContentViewMarginTop(fixedTbarHeight);
+        boolean hide_title_on_scroll =
+            mActivity.getResources().getBoolean(R.bool.hide_title_on_scroll);
+        if (!hide_title_on_scroll) {
+            int fixedTbarHeight = mTitleBar.isFixed() ? mTitleBar.calculateEmbeddedHeight() : 0;
+            mFixedTitlebarContainer.setY(fixedTbarHeight);
+            setContentViewMarginTop(fixedTbarHeight);
+        }
     }
 
     @Override
     public void onActionModeFinished(boolean inLoad) {
-        mFixedTitlebarContainer.setY(0);
-        setContentViewMarginTop(0);
+        boolean hide_title_on_scroll =
+            mActivity.getResources().getBoolean(R.bool.hide_title_on_scroll);
+        if (!hide_title_on_scroll) {
+            mFixedTitlebarContainer.setY(0);
+            setContentViewMarginTop(0);
+        }
     }
 }
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 7ae9bf7..898acf5 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -25,7 +25,6 @@
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Matrix;
-import android.os.Handler;
 import android.os.Message;
 import android.util.Log;
 import android.util.TypedValue;
@@ -58,8 +57,6 @@
     boolean mAnimating;
     boolean mShowNav = false;
 
-    static final int POST_DELAY = 300;
-
     /**
      * @param browser
      * @param controller
@@ -240,20 +237,15 @@
         super.onActionModeStarted(mode);
         if (!isEditingUrl()) {
             hideTitleBar();
+        } else {
+            mTitleBar.setTranslationY(mActionBarHeight);
         }
     }
 
     @Override
     public void onActionModeFinished(boolean inLoad) {
         super.onActionModeFinished(inLoad);
-        mTitleBar.animate().translationY(0);
-        stopEditingUrl();
-        Handler handler = new Handler();
-        handler.postDelayed(new Runnable() {
-            public void run() {
-                mNavigationBar.onStateChanged(StateListener.STATE_NORMAL);
-            }}, POST_DELAY);
-
+        mTitleBar.setTranslationY(0);
         if (inLoad) {
             if (mUseQuickControls) {
                 mTitleBar.setShowProgressOnly(true);
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 2b91c96..d0a27b9 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -754,6 +754,18 @@
         }
 
         @Override
+        public void onOffsetsForFullscreenChanged(
+            float topControlsOffsetYPix, float contentOffsetYPix, float overdrawBottomHeightPix) {
+            boolean hide_title_on_scroll =
+                mContext.getResources().getBoolean(R.bool.hide_title_on_scroll);
+            if (mWebViewController instanceof Controller && hide_title_on_scroll) {
+                Controller controller = (Controller)mWebViewController;
+                mMainView.setTranslationY(contentOffsetYPix);
+                controller.getUi().transalateTitleBar(topControlsOffsetYPix);
+            }
+        }
+
+        @Override
         public boolean isTabFullScreen() {
             if (mWebViewController instanceof Controller) {
                 Controller controller = (Controller)mWebViewController;
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java
index 7438d26..9963bc4 100644
--- a/src/com/android/browser/TitleBar.java
+++ b/src/com/android/browser/TitleBar.java
@@ -102,7 +102,9 @@
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        if (mIsFixedTitleBar) {
+        boolean hide_title_on_scroll =
+          getContext().getResources().getBoolean(R.bool.hide_title_on_scroll);
+        if (mIsFixedTitleBar && !hide_title_on_scroll) {
             int margin = getMeasuredHeight() - calculateEmbeddedHeight();
             if (!isEditingUrl())
                 mBaseUi.setContentViewMarginTop(-margin);
@@ -114,6 +116,8 @@
     private void setFixedTitleBar() {
         boolean isFixed = !mUseQuickControls
                 && !getContext().getResources().getBoolean(R.bool.hide_title);
+        boolean hide_title_on_scroll =
+            getContext().getResources().getBoolean(R.bool.hide_title_on_scroll);
         isFixed |= mAccessibilityManager.isEnabled();
         // If getParent() returns null, we are initializing
         ViewGroup parent = (ViewGroup)getParent();
@@ -125,7 +129,7 @@
         if (parent != null) {
             parent.removeView(this);
         }
-        if (mIsFixedTitleBar) {
+        if (mIsFixedTitleBar && !hide_title_on_scroll) {
             mBaseUi.addFixedTitleBar(this);
         } else {
             mContentView.addView(this, makeLayoutParams());
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index 342fbdc..eb7d023 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -144,6 +144,8 @@
 
     void setUseQuickControls(boolean enabled);
 
+    void transalateTitleBar(float topControlsOffsetYPix);
+
     public boolean shouldCaptureThumbnails();
 
     boolean blockFocusAnimations();
diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java
index f0037a1..c8f2d40 100644
--- a/src/com/android/browser/UrlInputView.java
+++ b/src/com/android/browser/UrlInputView.java
@@ -71,7 +71,6 @@
 
     static final int POST_DELAY = 100;
     static final int URL_MAX_LENGTH = 2048;
-    static final int POST_DELAY_FOCUS = 300;
 
     static interface StateListener {
         static final int STATE_NORMAL = 0;
@@ -182,11 +181,11 @@
             state = StateListener.STATE_NORMAL;
         }
         final int s = state;
-        postDelayed(new Runnable() {
+        post(new Runnable() {
             public void run() {
                 changeState(s);
             }
-        }, POST_DELAY_FOCUS);
+        });
     }
 
     @Override