new iteration of the navigation UI

    use live webviews

Change-Id: Ie787c76470e445548d358374f83f33a1b0b0b5cf
diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java
index a1d8c2d..6cdc063 100644
--- a/src/com/android/browser/BrowserWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -22,6 +22,7 @@
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewConfiguration;
 import android.webkit.WebView;
 
 import java.util.Map;
@@ -38,6 +39,10 @@
     private TitleBarBase mTitleBar;
     private int mCaptureSize;
     private Bitmap mCapture;
+    private boolean mNavMode;
+    private boolean mTracking;
+    private int mSlop;
+    float mDownX, mDownY;
 
     /**
      * @param context
@@ -79,11 +84,17 @@
     }
 
     private void init() {
+        mNavMode = false;
+        mSlop = ViewConfiguration.get(mContext).getScaledTouchSlop();
         mCaptureSize = mContext.getResources().getDimensionPixelSize(R.dimen.tab_capture_size);
         mCapture = Bitmap.createBitmap(mCaptureSize, mCaptureSize,
                 Bitmap.Config.RGB_565);
     }
 
+    protected void setNavMode(boolean enabled) {
+        mNavMode = enabled;
+    }
+
     @Override
     protected int getTitleHeight() {
         return (mTitleBar != null) ? mTitleBar.getEmbeddedHeight() : 0;
@@ -116,13 +127,36 @@
 
     @Override
     public boolean onTouchEvent(MotionEvent evt) {
-        if (MotionEvent.ACTION_DOWN == evt.getActionMasked()) {
-            mUserInitiated = true;
-        } else if (MotionEvent.ACTION_UP == evt.getActionMasked()
-                || (MotionEvent.ACTION_CANCEL == evt.getActionMasked())) {
-            mUserInitiated = false;
+        if (mNavMode) {
+            if (MotionEvent.ACTION_DOWN == evt.getActionMasked()) {
+                mDownX = evt.getX();
+                mDownY = evt.getY();
+                mTracking = true;
+                return true;
+            } else if (mTracking && MotionEvent.ACTION_MOVE == evt.getActionMasked()) {
+                if (mSlop < Math.abs(evt.getX() - mDownX)
+                        || mSlop < Math.abs(evt.getY() - mDownY)) {
+                    mTracking = false;
+                }
+                return mTracking;
+            } else if (mTracking && MotionEvent.ACTION_UP == evt.getActionMasked()) {
+                performClick();
+                mTracking = false;
+                return true;
+            } else if (mTracking && MotionEvent.ACTION_CANCEL == evt.getActionMasked()) {
+                mTracking = false;
+                return true;
+            }
+            return super.onTouchEvent(evt);
+        } else {
+            if (MotionEvent.ACTION_DOWN == evt.getActionMasked()) {
+                mUserInitiated = true;
+            } else if (MotionEvent.ACTION_UP == evt.getActionMasked()
+                    || (MotionEvent.ACTION_CANCEL == evt.getActionMasked())) {
+                mUserInitiated = false;
+            }
+            return super.onTouchEvent(evt);
         }
-        return super.onTouchEvent(evt);
     }
 
     @Override