summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/16.txt2
-rw-r--r--api/current.txt2
-rw-r--r--core/java/android/app/KeyguardManager.java16
-rw-r--r--core/java/android/webkit/WebViewCore.java16
-rw-r--r--core/java/android/webkit/WebViewInputDispatcher.java12
5 files changed, 31 insertions, 17 deletions
diff --git a/api/16.txt b/api/16.txt
index 7e9794f01150..b8aeb392ae83 100644
--- a/api/16.txt
+++ b/api/16.txt
@@ -3595,6 +3595,8 @@ package android.app {
public class KeyguardManager {
method public deprecated void exitKeyguardSecurely(android.app.KeyguardManager.OnKeyguardExitResult);
method public boolean inKeyguardRestrictedInputMode();
+ method public boolean isKeyguardLocked();
+ method public boolean isKeyguardSecure();
method public deprecated android.app.KeyguardManager.KeyguardLock newKeyguardLock(java.lang.String);
}
diff --git a/api/current.txt b/api/current.txt
index 7e9794f01150..b8aeb392ae83 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -3595,6 +3595,8 @@ package android.app {
public class KeyguardManager {
method public deprecated void exitKeyguardSecurely(android.app.KeyguardManager.OnKeyguardExitResult);
method public boolean inKeyguardRestrictedInputMode();
+ method public boolean isKeyguardLocked();
+ method public boolean isKeyguardSecure();
method public deprecated android.app.KeyguardManager.KeyguardLock newKeyguardLock(java.lang.String);
}
diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java
index 0fe7b5c3b0eb..a79a8fc939fe 100644
--- a/core/java/android/app/KeyguardManager.java
+++ b/core/java/android/app/KeyguardManager.java
@@ -28,7 +28,7 @@ import android.view.IOnKeyguardExitResult;
* Class that can be used to lock and unlock the keyboard. Get an instance of this
* class by calling {@link android.content.Context#getSystemService(java.lang.String)}
* with argument {@link android.content.Context#KEYGUARD_SERVICE}. The
- * Actual class to control the keyboard locking is
+ * actual class to control the keyboard locking is
* {@link android.app.KeyguardManager.KeyguardLock}.
*/
public class KeyguardManager {
@@ -73,7 +73,7 @@ public class KeyguardManager {
/**
* Reenable the keyguard. The keyguard will reappear if the previous
- * call to {@link #disableKeyguard()} caused it it to be hidden.
+ * call to {@link #disableKeyguard()} caused it to be hidden.
*
* A good place to call this is from {@link android.app.Activity#onPause()}
*
@@ -130,13 +130,9 @@ public class KeyguardManager {
}
/**
- * isKeyguardLocked
- *
* Return whether the keyguard is currently locked.
*
- * @return true if in keyguard is locked.
- *
- * @hide
+ * @return true if keyguard is locked.
*/
public boolean isKeyguardLocked() {
try {
@@ -147,13 +143,9 @@ public class KeyguardManager {
}
/**
- * isKeyguardSecure
- *
* Return whether the keyguard requires a password to unlock.
*
- * @return true if in keyguard is secure.
- *
- * @hide
+ * @return true if keyguard is secure.
*/
public boolean isKeyguardSecure() {
try {
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index ba42ff5181bd..1164649a3f5e 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -669,7 +669,7 @@ public final class WebViewCore {
int x, int y);
private native boolean nativeMouseClick(int nativeClass);
- private native boolean nativeHandleTouchEvent(int nativeClass, int action,
+ private native int nativeHandleTouchEvent(int nativeClass, int action,
int[] idArray, int[] xArray, int[] yArray, int count,
int actionIndex, int metaState);
@@ -968,6 +968,9 @@ public final class WebViewCore {
static final int ACTION_LONGPRESS = 0x100;
static final int ACTION_DOUBLETAP = 0x200;
+ private static final int TOUCH_FLAG_HIT_HANDLER = 0x1;
+ private static final int TOUCH_FLAG_PREVENT_DEFAULT = 0x2;
+
static class TouchEventData {
int mAction;
int[] mIds; // Ids of the touch points
@@ -1784,7 +1787,8 @@ public final class WebViewCore {
}
@Override
- public boolean dispatchWebKitEvent(MotionEvent event, int eventType, int flags) {
+ public boolean dispatchWebKitEvent(WebViewInputDispatcher dispatcher,
+ MotionEvent event, int eventType, int flags) {
if (mNativeClass == 0) {
return false;
}
@@ -1811,10 +1815,16 @@ public final class WebViewCore {
xArray[i] = (int) event.getX(i);
yArray[i] = (int) event.getY(i);
}
- return nativeHandleTouchEvent(mNativeClass,
+ int touchFlags = nativeHandleTouchEvent(mNativeClass,
event.getActionMasked(),
idArray, xArray, yArray, count,
event.getActionIndex(), event.getMetaState());
+ if (touchFlags == 0
+ && event.getActionMasked() != MotionEvent.ACTION_CANCEL
+ && (flags & WebViewInputDispatcher.FLAG_PRIVATE) == 0) {
+ dispatcher.skipWebkitForRemainingTouchStream();
+ }
+ return (touchFlags & TOUCH_FLAG_PREVENT_DEFAULT) > 0;
}
default:
diff --git a/core/java/android/webkit/WebViewInputDispatcher.java b/core/java/android/webkit/WebViewInputDispatcher.java
index feff16ec0443..d8065e951681 100644
--- a/core/java/android/webkit/WebViewInputDispatcher.java
+++ b/core/java/android/webkit/WebViewInputDispatcher.java
@@ -686,7 +686,7 @@ final class WebViewInputDispatcher {
+ ", eventType=" + eventType + ", flags=" + flags);
}
boolean preventDefault = mWebKitCallbacks.dispatchWebKitEvent(
- event, eventType, flags);
+ this, event, eventType, flags);
if (DEBUG) {
Log.d(TAG, "dispatchWebKitEvent: preventDefault=" + preventDefault);
}
@@ -710,6 +710,12 @@ final class WebViewInputDispatcher {
mWebKitDispatchEventQueue.mHead = d;
}
+ // Called by WebKit when it doesn't care about the rest of the touch stream
+ public void skipWebkitForRemainingTouchStream() {
+ // Just treat this like a timeout
+ handleWebKitTimeout();
+ }
+
// Runs on UI thread in response to the web kit thread appearing to be unresponsive.
private void handleWebKitTimeout() {
synchronized (mLock) {
@@ -1081,12 +1087,14 @@ final class WebViewInputDispatcher {
/**
* Dispatches an event to web kit.
+ * @param dispatcher The WebViewInputDispatcher sending the event
* @param event The event.
* @param eventType The event type.
* @param flags The event's dispatch flags.
* @return True if web kit wants to prevent default event handling.
*/
- public boolean dispatchWebKitEvent(MotionEvent event, int eventType, int flags);
+ public boolean dispatchWebKitEvent(WebViewInputDispatcher dispatcher,
+ MotionEvent event, int eventType, int flags);
}
// Runs on UI thread.