URL bar pull down tweaks

 Bug: 5222990

Change-Id: If5c4154dca892410f6884cae8d39fb25fbb0575f
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 7d7fda1..17ba4d7 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -804,10 +804,14 @@
         }
     }
 
-    protected void showTitleBarForDuration() {
+    protected final void showTitleBarForDuration() {
+        showTitleBarForDuration(HIDE_TITLEBAR_DELAY);
+    }
+
+    protected final void showTitleBarForDuration(long duration) {
         showTitleBar();
         Message msg = Message.obtain(mHandler, MSG_HIDE_TITLEBAR);
-        mHandler.sendMessageDelayed(msg, HIDE_TITLEBAR_DELAY);
+        mHandler.sendMessageDelayed(msg, duration);
     }
 
     private Handler mHandler = new Handler() {
diff --git a/src/com/android/browser/UrlBarAutoShowManager.java b/src/com/android/browser/UrlBarAutoShowManager.java
index 25192ca..0db31ff 100644
--- a/src/com/android/browser/UrlBarAutoShowManager.java
+++ b/src/com/android/browser/UrlBarAutoShowManager.java
@@ -31,6 +31,8 @@
         OnScrollChangedListener {
 
     private static float V_TRIGGER_ANGLE = .9f;
+    private static long SCROLL_TIMEOUT_DURATION = 150;
+    private static long IGNORE_INTERVAL = 250;
 
     private BrowserWebView mTarget;
     private BaseUi mUi;
@@ -39,10 +41,10 @@
 
     private float mStartTouchX;
     private float mStartTouchY;
-    private float mLastTouchX;
-    private float mLastTouchY;
     private boolean mIsTracking;
     private boolean mHasTriggered;
+    private long mLastScrollTime;
+    private long mTriggeredTime;
 
     public UrlBarAutoShowManager(BaseUi ui) {
         mUi = ui;
@@ -66,11 +68,15 @@
 
     @Override
     public void onScrollChanged(int l, int t, int oldl, int oldt) {
+        mLastScrollTime = System.currentTimeMillis();
         if (t != oldt) {
             if (t != 0) {
                 // If it is showing, extend it
                 if (mUi.isTitleBarShowing()) {
-                    mUi.showTitleBarForDuration();
+                    long remaining = mLastScrollTime - mTriggeredTime;
+                    remaining = Math.max(BaseUi.HIDE_TITLEBAR_DELAY - remaining,
+                            SCROLL_TIMEOUT_DURATION);
+                    mUi.showTitleBarForDuration(remaining);
                 }
             } else {
                 mUi.suggestHideTitleBar();
@@ -95,6 +101,11 @@
         switch (event.getAction()) {
         case MotionEvent.ACTION_DOWN:
             if (!mIsTracking && event.getPointerCount() == 1) {
+                long sinceLastScroll =
+                        System.currentTimeMillis() - mLastScrollTime;
+                if (sinceLastScroll < IGNORE_INTERVAL) {
+                    break;
+                }
                 mStartTouchY = event.getY();
                 mStartTouchX = event.getX();
                 mIsTracking = true;
@@ -113,6 +124,7 @@
                     if (dy > mSlop && angle > V_TRIGGER_ANGLE
                             && !mUi.isTitleBarShowing()
                             && web.getVisibleTitleHeight() == 0) {
+                        mTriggeredTime = System.currentTimeMillis();
                         mUi.showTitleBar();
                     }
                 }