diff options
Diffstat (limited to 'policy')
8 files changed, 84 insertions, 95 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index c94c6c4..93f2aa5 100755 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -730,14 +730,15 @@ public class PhoneWindowManager implements WindowManagerPolicy { public void run() { // The context isn't read if (mLongPressOnPowerBehavior < 0) { - if (FactoryTest.isLongPressOnPowerOffEnabled()) { - mLongPressOnPowerBehavior = LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM; - } else { - mLongPressOnPowerBehavior = mContext.getResources().getInteger( - com.android.internal.R.integer.config_longPressOnPowerBehavior); - } + mLongPressOnPowerBehavior = mContext.getResources().getInteger( + com.android.internal.R.integer.config_longPressOnPowerBehavior); + } + int resolvedBehavior = mLongPressOnPowerBehavior; + if (FactoryTest.isLongPressOnPowerOffEnabled()) { + resolvedBehavior = LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM; } - switch (mLongPressOnPowerBehavior) { + + switch (resolvedBehavior) { case LONG_PRESS_POWER_NOTHING: break; case LONG_PRESS_POWER_GLOBAL_ACTIONS: @@ -753,8 +754,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { mPowerKeyHandled = true; performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS); - mWindowManagerFuncs.shutdown( - mLongPressOnPowerBehavior == LONG_PRESS_POWER_SHUT_OFF); + mWindowManagerFuncs.shutdown(resolvedBehavior == LONG_PRESS_POWER_SHUT_OFF); break; } } @@ -775,7 +775,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (keyguardShowing) { // since it took two seconds of long press to bring this up, // poke the wake lock so they have some time to see the dialog. - mKeyguardMediator.pokeWakelock(); + mKeyguardMediator.userActivity(); } } @@ -1140,6 +1140,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; + if (ActivityManager.isHighEndGfx()) { + lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; + lp.privateFlags |= + WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_HARDWARE_ACCELERATED; + } lp.format = PixelFormat.TRANSLUCENT; lp.setTitle("PointerLocation"); WindowManager wm = (WindowManager) diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java index 14633c4..a7fc1a1 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java @@ -166,6 +166,7 @@ public class KeyguardHostView extends KeyguardViewBase { // from AudioManager KeyguardHostView.this.addView(mTransportControl); mTransportControl.setVisibility(View.GONE); + showAppropriateWidgetPage(); } } @@ -178,6 +179,7 @@ public class KeyguardHostView extends KeyguardViewBase { mTransportControl.setVisibility(View.VISIBLE); // Once shown, leave it showing mSticky = true; + showAppropriateWidgetPage(); } } }); @@ -234,7 +236,7 @@ public class KeyguardHostView extends KeyguardViewBase { public void userActivity(long timeout) { if (mViewMediatorCallback != null) { - mViewMediatorCallback.pokeWakelock(timeout); + mViewMediatorCallback.userActivity(timeout); } } @@ -638,7 +640,7 @@ public class KeyguardHostView extends KeyguardViewBase { if (DEBUG) Log.d(TAG, "poking wake lock immediately"); } if (mViewMediatorCallback != null) { - mViewMediatorCallback.pokeWakelock(); + mViewMediatorCallback.wakeUp(); } } @@ -736,6 +738,15 @@ public class KeyguardHostView extends KeyguardViewBase { addWidget(widgets[i]); } } + showAppropriateWidgetPage(); + } + + private void showAppropriateWidgetPage() { + int page = mAppWidgetContainer.indexOfChild(findViewById(R.id.keyguard_status_view)); + if (mAppWidgetContainer.indexOfChild(mTransportControl) != -1) { + page = mAppWidgetContainer.indexOfChild(mTransportControl); + } + mAppWidgetContainer.setCurrentPage(page); } private void inflateAndAddUserSelectorWidgetIfNecessary() { diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java index 6de65b0..4003754 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java @@ -80,6 +80,7 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri case com.android.internal.R.drawable.ic_lockscreen_unlock_phantom: case com.android.internal.R.drawable.ic_lockscreen_unlock: + mCallback.userActivity(0); mCallback.dismiss(false); break; } @@ -90,6 +91,7 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri } public void onGrabbed(View v, int handle) { + mCallback.userActivity(0); doTransition(mFadeView, 0.0f); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java index 1abcc10..a3a9c5f 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java @@ -155,6 +155,8 @@ public class KeyguardViewManager { WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_HARDWARE_ACCELERATED; } lp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_SET_NEEDS_MENU_KEY; + lp.inputFeatures |= WindowManager.LayoutParams.INPUT_FEATURE_DISABLE_USER_ACTIVITY; + lp.userActivityTimeout = KeyguardViewMediator.AWAKE_INTERVAL_DEFAULT_MS; lp.setTitle(isActivity ? "KeyguardMock" : "Keyguard"); mWindowLayoutParams = lp; mViewManager.addView(mKeyguardHost, lp); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java index e4c1214..59aed24 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java @@ -104,7 +104,6 @@ public class KeyguardViewMediator { "com.android.internal.policy.impl.PhoneWindowManager.DELAYED_KEYGUARD"; // used for handler messages - private static final int TIMEOUT = 1; private static final int SHOW = 2; private static final int HIDE = 3; private static final int RESET = 4; @@ -167,12 +166,6 @@ public class KeyguardViewMediator { private UserManager mUserManager; /** - * Used to keep the device awake while the keyguard is showing, i.e for - * calls to {@link #pokeWakelock()} - */ - private PowerManager.WakeLock mWakeLock; - - /** * Used to keep the device awake while to ensure the keyguard finishes opening before * we sleep. */ @@ -215,8 +208,6 @@ public class KeyguardViewMediator { */ private int mDelayedShowingSequence; - private int mWakelockSequence; - /** * If the user has disabled the keyguard, then requests to exit, this is * how we'll ultimately let them know whether it was successful. We use this @@ -262,15 +253,16 @@ public class KeyguardViewMediator { public interface ViewMediatorCallback { /** - * Request the wakelock to be poked for the default amount of time. + * Wake the device immediately. */ - void pokeWakelock(); + void wakeUp(); /** - * Request the wakelock to be poked for a specific amount of time. + * Reports user activity and requests that the screen stay on for the specified + * amount of time. * @param millis The amount of time in millis. */ - void pokeWakelock(long millis); + void userActivity(long millis); /** * Report that the keyguard is done. @@ -402,12 +394,12 @@ public class KeyguardViewMediator { }; ViewMediatorCallback mViewMediatorCallback = new ViewMediatorCallback() { - public void pokeWakelock() { - KeyguardViewMediator.this.pokeWakelock(); + public void wakeUp() { + KeyguardViewMediator.this.wakeUp(); } - public void pokeWakelock(long holdMs) { - KeyguardViewMediator.this.pokeWakelock(holdMs); + public void userActivity(long holdMs) { + KeyguardViewMediator.this.userActivity(holdMs); } public void keyguardDone(boolean authenticated) { @@ -424,19 +416,18 @@ public class KeyguardViewMediator { } }; - public void pokeWakelock() { - pokeWakelock(AWAKE_INTERVAL_DEFAULT_MS); + public void wakeUp() { + mPM.wakeUp(SystemClock.uptimeMillis()); } - public void pokeWakelock(long holdMs) { - synchronized (this) { - if (DBG_WAKE) Log.d(TAG, "pokeWakelock(" + holdMs + ")"); - mWakeLock.acquire(); - mHandler.removeMessages(TIMEOUT); - mWakelockSequence++; - Message msg = mHandler.obtainMessage(TIMEOUT, mWakelockSequence, 0); - mHandler.sendMessageDelayed(msg, holdMs); - } + public void userActivity() { + userActivity(AWAKE_INTERVAL_DEFAULT_MS); + } + + public void userActivity(long holdMs) { + // We ignore the hold time. Eventually we should remove it. + // Instead, the keyguard window has an explicit user activity timeout set on it. + mPM.userActivity(SystemClock.uptimeMillis(), false); } /** @@ -448,9 +439,6 @@ public class KeyguardViewMediator { mContext = context; mPM = (PowerManager) context.getSystemService(Context.POWER_SERVICE); mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); - mWakeLock = mPM.newWakeLock( - PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "keyguard"); - mWakeLock.setReferenceCounted(false); mShowKeyguardWakeLock = mPM.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "show keyguard"); mShowKeyguardWakeLock.setReferenceCounted(false); @@ -482,19 +470,19 @@ public class KeyguardViewMediator { mScreenOn = mPM.isScreenOn(); mLockSounds = new SoundPool(1, AudioManager.STREAM_SYSTEM, 0); - String soundPath = Settings.System.getString(cr, Settings.System.LOCK_SOUND); + String soundPath = Settings.Global.getString(cr, Settings.Global.LOCK_SOUND); if (soundPath != null) { mLockSoundId = mLockSounds.load(soundPath, 1); } if (soundPath == null || mLockSoundId == 0) { - if (DEBUG) Log.d(TAG, "failed to load sound from " + soundPath); + Log.w(TAG, "failed to load lock sound from " + soundPath); } - soundPath = Settings.System.getString(cr, Settings.System.UNLOCK_SOUND); + soundPath = Settings.Global.getString(cr, Settings.Global.UNLOCK_SOUND); if (soundPath != null) { mUnlockSoundId = mLockSounds.load(soundPath, 1); } if (soundPath == null || mUnlockSoundId == 0) { - if (DEBUG) Log.d(TAG, "failed to load sound from " + soundPath); + Log.w(TAG, "failed to load unlock sound from " + soundPath); } int lockSoundDefaultAttenuation = context.getResources().getInteger( com.android.internal.R.integer.config_lockSoundVolumeDb); @@ -737,7 +725,6 @@ public class KeyguardViewMediator { if (mHidden != isHidden) { mHidden = isHidden; updateActivityLockScreenState(); - adjustUserActivityLocked(); adjustStatusBarLocked(); } } @@ -1052,9 +1039,6 @@ public class KeyguardViewMediator { @Override public void handleMessage(Message msg) { switch (msg.what) { - case TIMEOUT: - handleTimeout(msg.arg1); - return ; case SHOW: handleShow(); return ; @@ -1105,9 +1089,8 @@ public class KeyguardViewMediator { if (DEBUG) Log.d(TAG, "handleKeyguardDone"); handleHide(); if (wakeup) { - mPM.wakeUp(SystemClock.uptimeMillis()); + wakeUp(); } - mWakeLock.release(); sendUserPresentBroadcast(); } @@ -1139,21 +1122,6 @@ public class KeyguardViewMediator { } } - /** - * Handles the message sent by {@link #pokeWakelock} - * @param seq used to determine if anything has changed since the message - * was sent. - * @see #TIMEOUT - */ - private void handleTimeout(int seq) { - synchronized (KeyguardViewMediator.this) { - if (DEBUG) Log.d(TAG, "handleTimeout"); - if (seq == mWakelockSequence) { - mWakeLock.release(); - } - } - } - private void playSounds(boolean locked) { // User feedback for keyguard. @@ -1202,8 +1170,8 @@ public class KeyguardViewMediator { mKeyguardViewManager.show(); mShowing = true; updateActivityLockScreenState(); - adjustUserActivityLocked(); adjustStatusBarLocked(); + userActivity(); try { ActivityManagerNative.getDefault().closeSystemDialogs("lock"); } catch (RemoteException e) { @@ -1237,23 +1205,10 @@ public class KeyguardViewMediator { mKeyguardViewManager.hide(); mShowing = false; updateActivityLockScreenState(); - adjustUserActivityLocked(); adjustStatusBarLocked(); } } - private void adjustUserActivityLocked() { - // disable user activity if we are shown and not hidden - if (DEBUG) Log.d(TAG, "adjustUserActivityLocked mShowing: " + mShowing + " mHidden: " + mHidden); - boolean enabled = !mShowing || mHidden; - // FIXME: Replace this with a new timeout control mechanism. - //mRealPowerManager.enableUserActivity(enabled); - if (!enabled && mScreenOn) { - // reinstate our short screen timeout policy - pokeWakelock(); - } - } - private void adjustStatusBarLocked() { if (mStatusBarManager == null) { mStatusBarManager = (StatusBarManager) @@ -1322,7 +1277,7 @@ public class KeyguardViewMediator { if (!mKeyguardViewManager.wakeWhenReadyTq(keyCode)) { // poke wakelock ourselves if keyguard is no longer active Log.w(TAG, "mKeyguardViewManager.wakeWhenReadyTq did not poke wake lock, so poke it ourselves"); - pokeWakelock(); + userActivity(); } /** @@ -1330,10 +1285,6 @@ public class KeyguardViewMediator { * release the handoff wakelock */ mWakeAndHandOff.release(); - - if (!mWakeLock.isHeld()) { - Log.w(TAG, "mWakeLock not held in mKeyguardViewManager.wakeWhenReadyTq"); - } } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java index 70a6ffa..d17c128 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java @@ -33,7 +33,6 @@ import com.android.internal.R; public class KeyguardWidgetFrame extends FrameLayout { private final static PorterDuffXfermode sAddBlendMode = new PorterDuffXfermode(PorterDuff.Mode.ADD); - private static int sWidgetPagePadding; private static Drawable sLeftOverscrollDrawable; private static Drawable sRightOverscrollDrawable; @@ -52,13 +51,16 @@ public class KeyguardWidgetFrame extends FrameLayout { public KeyguardWidgetFrame(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + Resources res = context.getResources(); if (sLeftOverscrollDrawable == null) { - Resources res = context.getResources(); sLeftOverscrollDrawable = res.getDrawable(R.drawable.kg_widget_overscroll_layer_left); sRightOverscrollDrawable = res.getDrawable(R.drawable.kg_widget_overscroll_layer_right); - sWidgetPagePadding = res.getDimensionPixelSize(R.dimen.kg_widget_page_padding); } - setPadding(sWidgetPagePadding, sWidgetPagePadding, sWidgetPagePadding, sWidgetPagePadding); + + int hPadding = res.getDimensionPixelSize(R.dimen.kg_widget_pager_horizontal_padding); + int topPadding = res.getDimensionPixelSize(R.dimen.kg_widget_pager_top_padding); + int bottomPadding = res.getDimensionPixelSize(R.dimen.kg_widget_pager_bottom_padding); + setPadding(hPadding, topPadding, hPadding, bottomPadding); } @Override @@ -76,8 +78,8 @@ public class KeyguardWidgetFrame extends FrameLayout { @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); - mForegroundRect.set(sWidgetPagePadding, sWidgetPagePadding, - w - sWidgetPagePadding, h - sWidgetPagePadding); + mForegroundRect.set(getPaddingLeft(), getPaddingTop(), + w - getPaddingRight(), h - getPaddingBottom()); } void setOverScrollAmount(float r, boolean left) { diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java index e9cf9a5..f7f23c7 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java @@ -18,6 +18,7 @@ package com.android.internal.policy.impl.keyguard; import android.content.Context; import android.util.AttributeSet; import android.view.View; +import android.view.ViewGroup; import android.widget.LinearLayout; import com.android.internal.R; @@ -70,5 +71,20 @@ public class KeyguardWidgetRegion extends LinearLayout implements PageSwitchList @Override public void onPageSwitch(View newPage, int newPageIndex) { mPage = newPageIndex; + + // If we're showing the default system status widget, then we want to hide the clock + boolean hideClock = false; + if ((newPage instanceof ViewGroup)) { + ViewGroup vg = (ViewGroup) newPage; + if (vg.getChildAt(0) instanceof KeyguardStatusView) { + hideClock = true; + } + } + + if (hideClock) { + setSystemUiVisibility(getSystemUiVisibility() | View.STATUS_BAR_DISABLE_CLOCK); + } else { + setSystemUiVisibility(getSystemUiVisibility() & ~View.STATUS_BAR_DISABLE_CLOCK); + } } } diff --git a/policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardViewMediator.java index 8ff8dad..3de1428 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardViewMediator.java +++ b/policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardViewMediator.java @@ -392,14 +392,14 @@ public class KeyguardViewMediator implements KeyguardViewCallback { mScreenOn = mPM.isScreenOn(); mLockSounds = new SoundPool(1, AudioManager.STREAM_SYSTEM, 0); - String soundPath = Settings.System.getString(cr, Settings.System.LOCK_SOUND); + String soundPath = Settings.Global.getString(cr, Settings.Global.LOCK_SOUND); if (soundPath != null) { mLockSoundId = mLockSounds.load(soundPath, 1); } if (soundPath == null || mLockSoundId == 0) { if (DEBUG) Log.d(TAG, "failed to load sound from " + soundPath); } - soundPath = Settings.System.getString(cr, Settings.System.UNLOCK_SOUND); + soundPath = Settings.Global.getString(cr, Settings.Global.UNLOCK_SOUND); if (soundPath != null) { mUnlockSoundId = mLockSounds.load(soundPath, 1); } |
