summaryrefslogtreecommitdiffstats
path: root/policy
diff options
context:
space:
mode:
Diffstat (limited to 'policy')
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java25
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java15
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java2
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewManager.java2
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java101
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetFrame.java14
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetRegion.java16
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard_obsolete/KeyguardViewMediator.java4
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);
}