Merge "Clear back stack after submitted query into preloaded page."
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();
}
}
diff --git a/tests/assets/bindings_test.html b/tests/assets/bindings_test.html
index 71f3438..2d20ada 100755
--- a/tests/assets/bindings_test.html
+++ b/tests/assets/bindings_test.html
@@ -7,7 +7,7 @@
}
function testObjectTypes() {
- return JNIBindingsTest.testObjectTypes("Foo", "", {"foo":"bar"}, {});
+ return JNIBindingsTest.testObjectTypes("Foo", "", null, {"foo":"bar"}, {});
}
function testArray() {
@@ -104,6 +104,12 @@
return false;
}
+ returned = JNIBindingsTest.returnNullString();
+ if (returned !== undefined) {
+ appendLog("returnNullString() failed: expected undefined, got " + returned);
+ return false;
+ }
+
returned = JNIBindingsTest.returnObject();
if (returned == null) {
appendLog("returnObject() failed: expected non-null, got " + returned);
diff --git a/tests/src/com/android/browser/JNIBindingsTest.java b/tests/src/com/android/browser/JNIBindingsTest.java
index 94dc985..8c25a80 100644
--- a/tests/src/com/android/browser/JNIBindingsTest.java
+++ b/tests/src/com/android/browser/JNIBindingsTest.java
@@ -82,8 +82,8 @@
return true;
}
- public boolean testObjectTypes(String stringParam, String emptyString, Object objectParam,
- Object emptyObject) {
+ public boolean testObjectTypes(String stringParam, String emptyString, String nullString,
+ Object objectParam, Object emptyObject) {
String expectedString = "Foo";
String expectedEmptyString = "";
@@ -92,6 +92,7 @@
assertNotNull(emptyString);
assertEquals(expectedString, stringParam);
assertEquals(expectedEmptyString, emptyString);
+ assertNull(nullString);
assertNull(objectParam);
assertNull(emptyObject);
} catch (AssertionFailedError e) {
@@ -267,6 +268,7 @@
public long returnLong() { return 1234L; }
public short returnShort() { return 12345; }
public String returnString() { return "Hello World!"; }
+ public String returnNullString() { return null; }
public class TestObject {
public int x = 123;