diff options
Diffstat (limited to 'core')
12 files changed, 98 insertions, 88 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); } } } diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml index ff65c61..8d5d404 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_password_landscape.xml @@ -35,18 +35,6 @@ android:layout_height="wrap_content" android:layout_marginBottom="24dip"> - <!-- Music transport control underneath --> - <include android:id="@+id/transport" - layout="@layout/keyguard_transport_control" - android:layout_row="0" - android:layout_column="0" - android:layout_rowSpan="3" - android:layout_columnSpan="1" - android:layout_gravity="fill" - android:layout_width="match_parent" - android:layout_height="512dip" - /> - <!-- Status --> <include layout="@layout/keyguard_screen_status_land" android:layout_width="match_parent" @@ -58,6 +46,18 @@ android:layout_alignParentTop="true" android:layout_alignParentLeft="true"/> + <!-- Music transport control --> + <include android:id="@+id/transport" + layout="@layout/keyguard_transport_control" + android:layout_row="0" + android:layout_column="0" + android:layout_rowSpan="3" + android:layout_columnSpan="1" + android:layout_gravity="fill" + android:layout_width="match_parent" + android:layout_height="512dip" + /> + </RelativeLayout> </RelativeLayout> diff --git a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml index 60401c9..95c15e5 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_password_portrait.xml @@ -25,7 +25,7 @@ <!-- top: status and emergency/forgot pattern buttons --> <RelativeLayout android:layout_height="0dip" - android:layout_weight="1" + android:layout_weight="0.40" android:layout_width="match_parent" android:gravity="center"> @@ -34,6 +34,16 @@ android:layout_height="wrap_content" android:gravity="center"> + <!-- Status --> + <include layout="@layout/keyguard_screen_status_port" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="50dip" + android:layout_marginTop="50dip" + android:layout_marginRight="64dip" + android:layout_alignParentTop="true" + android:layout_alignParentLeft="true"/> + <!-- Music transport control --> <include android:id="@+id/transport" layout="@layout/keyguard_transport_control" @@ -46,16 +56,6 @@ android:layout_height="512dip" /> - <include layout="@layout/keyguard_screen_status_port" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginLeft="50dip" - android:layout_marginTop="50dip" - android:layout_marginBottom="100dip" - android:layout_marginRight="64dip" - android:layout_alignParentTop="true" - android:layout_alignParentLeft="true"/> - </RelativeLayout> </RelativeLayout> @@ -64,7 +64,7 @@ <RelativeLayout android:layout_width="match_parent" android:layout_height="0dip" - android:layout_weight="1" + android:layout_weight="0.60" android:gravity="center"> <LinearLayout diff --git a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml index e6829a9..a666077 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock.xml @@ -40,6 +40,15 @@ android:layout_height="wrap_content" android:gravity="center"> + <!-- Status --> + <include layout="@layout/keyguard_screen_status_port" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="50dip" + android:layout_marginTop="50dip" + android:layout_alignParentTop="true" + android:layout_alignParentLeft="true"/> + <!-- Music transport control --> <include android:id="@+id/transport" layout="@layout/keyguard_transport_control" @@ -52,14 +61,6 @@ android:layout_height="512dip" /> - <include layout="@layout/keyguard_screen_status_port" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="50dip" - android:layout_marginTop="50dip" - android:layout_alignParentTop="true" - android:layout_alignParentLeft="true"/> - </RelativeLayout> </RelativeLayout> diff --git a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml index de64a51..17a3c84 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_tab_unlock_land.xml @@ -38,7 +38,17 @@ android:layout_width="512dip" android:layout_height="wrap_content"> - <!-- Music transport control underneath --> + <!-- Status --> + <include layout="@layout/keyguard_screen_status_land" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="50dip" + android:layout_marginTop="50dip" + android:layout_marginRight="64dip" + android:layout_alignParentTop="true" + android:layout_alignParentLeft="true"/> + + <!-- Music transport control --> <include android:id="@+id/transport" layout="@layout/keyguard_transport_control" android:layout_row="0" @@ -50,16 +60,6 @@ android:layout_height="512dip" /> - <include layout="@layout/keyguard_screen_status_land" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginLeft="50dip" - android:layout_marginTop="50dip" - android:layout_marginBottom="82dip" - android:layout_marginRight="64dip" - android:layout_alignParentTop="true" - android:layout_alignParentLeft="true"/> - </RelativeLayout> </RelativeLayout> diff --git a/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml b/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml index 3bdc7b6..0153a2e 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_unlock_landscape.xml @@ -39,6 +39,7 @@ android:layout_height="wrap_content" android:layout_marginBottom="24dip"> + <!-- Status --> <include layout="@layout/keyguard_screen_status_land" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -49,6 +50,7 @@ android:layout_alignParentTop="true" android:layout_alignParentLeft="true"/> + <!-- Music transport control --> <include android:id="@+id/transport" layout="@layout/keyguard_transport_control" android:layout_row="0" diff --git a/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml b/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml index bd9de20..78a01dd 100644 --- a/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml +++ b/core/res/res/layout-sw600dp/keyguard_screen_unlock_portrait.xml @@ -35,11 +35,14 @@ android:layout_height="wrap_content" android:gravity="center"> + <!-- Status --> <include layout="@layout/keyguard_screen_status_land" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dip" android:layout_marginTop="50dip" + android:layout_marginBottom="100dip" + android:layout_marginRight="64dip" android:layout_alignParentTop="true" android:layout_alignParentLeft="true"/> |
