summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/app/KeyguardManager.java16
-rw-r--r--core/java/android/webkit/HTML5Audio.java28
-rw-r--r--core/java/android/webkit/WebViewCore.java16
-rw-r--r--core/java/android/webkit/WebViewInputDispatcher.java12
-rw-r--r--core/java/com/android/internal/widget/SizeAdaptiveLayout.java2
-rw-r--r--core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java20
6 files changed, 49 insertions, 45 deletions
diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java
index 0fe7b5c..a79a8fc 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/HTML5Audio.java b/core/java/android/webkit/HTML5Audio.java
index 689884f..fc5df2d 100644
--- a/core/java/android/webkit/HTML5Audio.java
+++ b/core/java/android/webkit/HTML5Audio.java
@@ -67,6 +67,8 @@ class HTML5Audio extends Handler
private String mUrl;
private boolean mAskToPlay = false;
+ private boolean mLoopEnabled = false;
+ private boolean mProcessingOnEnd = false;
private Context mContext;
// Timer thread -> UI thread
@@ -143,7 +145,13 @@ class HTML5Audio extends Handler
// MediaPlayer.OnCompletionListener;
public void onCompletion(MediaPlayer mp) {
mState = COMPLETE;
+ mProcessingOnEnd = true;
nativeOnEnded(mNativePointer);
+ mProcessingOnEnd = false;
+ if (mLoopEnabled == true) {
+ nativeOnRequestPlay(mNativePointer);
+ mLoopEnabled = false;
+ }
}
// MediaPlayer.OnErrorListener
@@ -264,14 +272,10 @@ class HTML5Audio extends Handler
private void play() {
- if (mState == COMPLETE) {
+ if (mState == COMPLETE && mLoopEnabled == true) {
// Play it again, Sam
- mTimer.cancel();
- mTimer = new Timer();
- mAskToPlay = true;
- mMediaPlayer.stop();
- mState = STOPPED;
- mMediaPlayer.prepareAsync();
+ mMediaPlayer.start();
+ mState = STARTED;
return;
}
@@ -304,14 +308,11 @@ class HTML5Audio extends Handler
}
private void seek(int msec) {
+ if (mProcessingOnEnd == true && mState == COMPLETE && msec == 0) {
+ mLoopEnabled = true;
+ }
if (mState >= PREPARED) {
mMediaPlayer.seekTo(msec);
- if (mState == COMPLETE) {
- // Seeking after the stream had completed will
- // cause us to start playing again. This is to
- // support audio tags that specify loop=true.
- play();
- }
}
}
@@ -336,6 +337,7 @@ class HTML5Audio extends Handler
private native void nativeOnBuffering(int percent, int nativePointer);
private native void nativeOnEnded(int nativePointer);
+ private native void nativeOnRequestPlay(int nativePointer);
private native void nativeOnPrepared(int duration, int width, int height, int nativePointer);
private native void nativeOnTimeupdate(int position, int nativePointer);
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index ba42ff5..1164649 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 feff16e..d8065e9 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.
diff --git a/core/java/com/android/internal/widget/SizeAdaptiveLayout.java b/core/java/com/android/internal/widget/SizeAdaptiveLayout.java
index bbf5509..7687ad1 100644
--- a/core/java/com/android/internal/widget/SizeAdaptiveLayout.java
+++ b/core/java/com/android/internal/widget/SizeAdaptiveLayout.java
@@ -175,7 +175,7 @@ public class SizeAdaptiveLayout extends ViewGroup {
height = Math.min(height, lp.maxHeight);
}
- if (heightIn != height) {
+ if (DEBUG && heightIn != height) {
Log.d(TAG, this + "child view " + child + " " +
"measured out of bounds at " + heightIn +"px " +
"clamped to " + height + "px");
diff --git a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
index d6fb847..8cd63ef 100644
--- a/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
+++ b/core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java
@@ -476,19 +476,12 @@ public class MultiWaveView extends View {
/**
* Dispatches a trigger event to listener. Ignored if a listener is not set.
- * @param whichHandle the handle that triggered the event.
+ * @param whichTarget the target that was triggered.
*/
- private void dispatchTriggerEvent(int whichHandle) {
+ private void dispatchTriggerEvent(int whichTarget) {
vibrate();
if (mOnTriggerListener != null) {
- mOnTriggerListener.onTrigger(this, whichHandle);
- }
- }
-
- private void dispatchGrabbedEvent(int whichHandler) {
- vibrate();
- if (mOnTriggerListener != null) {
- mOnTriggerListener.onGrabbed(this, whichHandler);
+ mOnTriggerListener.onTrigger(this, whichTarget);
}
}
@@ -514,7 +507,7 @@ public class MultiWaveView extends View {
// Inform listener of any active targets. Typically only one will be active.
if (DEBUG) Log.v(TAG, "Finish with target hit = " + targetHit);
- dispatchTriggerEvent(mActiveTarget);
+ dispatchTriggerEvent(activeTarget);
}
// Animate handle back to the center based on current state.
@@ -791,7 +784,7 @@ public class MultiWaveView extends View {
}
private void handleDown(MotionEvent event) {
- if (!trySwitchToFirstTouchState(event.getX(), event.getY())) {
+ if (!trySwitchToFirstTouchState(event.getX(), event.getY())) {
mDragging = false;
mTargetAnimations.cancel();
ping();
@@ -903,7 +896,6 @@ public class MultiWaveView extends View {
if (target.hasState(TargetDrawable.STATE_FOCUSED)) {
target.setState(TargetDrawable.STATE_FOCUSED);
}
- dispatchGrabbedEvent(activeTarget);
if (AccessibilityManager.getInstance(mContext).isEnabled()) {
String targetContentDescription = getTargetDescription(activeTarget);
announceText(targetContentDescription);
@@ -950,7 +942,7 @@ public class MultiWaveView extends View {
} else {
mOnTriggerListener.onGrabbed(this, OnTriggerListener.CENTER_HANDLE);
}
- mOnTriggerListener.onGrabbedStateChange(this, mGrabbedState);
+ mOnTriggerListener.onGrabbedStateChange(this, newState);
}
}
}