Loading core/java/android/view/IWindowManager.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -218,4 +218,9 @@ interface IWindowManager * Called by the settings application to temporarily set the pointer speed. */ void setPointerSpeed(int speed); /** * Block until all windows the window manager knows about have been drawn. */ void waitForAllDrawn(); } core/java/android/view/WindowManager.java +9 −1 Original line number Diff line number Diff line Loading @@ -177,7 +177,8 @@ public interface WindowManager extends ViewManager { @ViewDebug.IntToString(from = TYPE_SYSTEM_ERROR, to = "TYPE_SYSTEM_ERROR"), @ViewDebug.IntToString(from = TYPE_INPUT_METHOD, to = "TYPE_INPUT_METHOD"), @ViewDebug.IntToString(from = TYPE_INPUT_METHOD_DIALOG, to = "TYPE_INPUT_METHOD_DIALOG"), @ViewDebug.IntToString(from = TYPE_SECURE_SYSTEM_OVERLAY, to = "TYPE_SECURE_SYSTEM_OVERLAY") @ViewDebug.IntToString(from = TYPE_SECURE_SYSTEM_OVERLAY, to = "TYPE_SECURE_SYSTEM_OVERLAY"), @ViewDebug.IntToString(from = TYPE_BOOT_PROGRESS, to = "TYPE_BOOT_PROGRESS") }) public int type; Loading Loading @@ -400,6 +401,13 @@ public interface WindowManager extends ViewManager { */ public static final int TYPE_VOLUME_OVERLAY = FIRST_SYSTEM_WINDOW+20; /** * Window type: The boot progress dialog, goes on top of everything * in the world. * @hide */ public static final int TYPE_BOOT_PROGRESS = FIRST_SYSTEM_WINDOW+21; /** * End of types of system windows. */ Loading core/java/com/android/internal/widget/multiwaveview/TargetDrawable.java +6 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.util.Log; public class TargetDrawable { private static final String TAG = "TargetDrawable"; private static final boolean DEBUG = false; public static final int[] STATE_ACTIVE = { android.R.attr.state_enabled, android.R.attr.state_active }; public static final int[] STATE_INACTIVE = Loading Loading @@ -139,11 +141,13 @@ public class TargetDrawable { maxWidth = Math.max(maxWidth, childDrawable.getIntrinsicWidth()); maxHeight = Math.max(maxHeight, childDrawable.getIntrinsicHeight()); } Log.v(TAG, "union of childDrawable rects " + d + " to: " + maxWidth + "x" + maxHeight); if (DEBUG) Log.v(TAG, "union of childDrawable rects " + d + " to: " + maxWidth + "x" + maxHeight); d.setBounds(0, 0, maxWidth, maxHeight); for (int i = 0; i < d.getStateCount(); i++) { Drawable childDrawable = d.getStateDrawable(i); Log.v(TAG, "sizing drawable " + childDrawable + " to: " + maxWidth + "x" + maxHeight); if (DEBUG) Log.v(TAG, "sizing drawable " + childDrawable + " to: " + maxWidth + "x" + maxHeight); childDrawable.setBounds(0, 0, maxWidth, maxHeight); } } else if (mDrawable != null) { Loading policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ import android.widget.TextView; * */ class KeyguardStatusViewManager implements OnClickListener { private static final boolean DEBUG = true; private static final boolean DEBUG = false; private static final String TAG = "KeyguardStatusView"; public static final int LOCK_ICON = 0; // R.drawable.ic_lock_idle_lock; Loading policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java +137 −92 Original line number Diff line number Diff line Loading @@ -116,6 +116,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, private static final int KEYGUARD_DONE_AUTHENTICATING = 11; private static final int SET_HIDDEN = 12; private static final int KEYGUARD_TIMEOUT = 13; private static final int REPORT_SHOW_DONE = 14; /** * The default amount of time we stay awake (used for all key input) Loading Loading @@ -238,6 +239,8 @@ public class KeyguardViewMediator implements KeyguardViewCallback, private boolean mScreenOn = false; private boolean mShowPending = false; // last known state of the cellular connection private String mPhoneState = TelephonyManager.EXTRA_STATE_IDLE; Loading Loading @@ -306,7 +309,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, synchronized (this) { if (DEBUG) Log.d(TAG, "onSystemReady"); mSystemReady = true; doKeyguard(); doKeyguardLocked(); } } Loading Loading @@ -363,7 +366,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (timeout <= 0) { // Lock now mSuppressNextLockSound = true; doKeyguard(); doKeyguardLocked(); } else { // Lock in the future long when = SystemClock.elapsedRealtime() + timeout; Loading @@ -379,7 +382,19 @@ public class KeyguardViewMediator implements KeyguardViewCallback, } else if (why == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR) { // Do not enable the keyguard if the prox sensor forced the screen off. } else { doKeyguard(); if (!doKeyguardLocked() && why == WindowManagerPolicy.OFF_BECAUSE_OF_USER) { // The user has explicitly turned off the screen, causing it // to lock. We want to block here until the keyguard window // has shown, so the power manager won't complete the screen // off flow until that point, so we know it won't turn *on* // the screen until this is done. while (mShowPending) { try { wait(); } catch (InterruptedException e) { } } } } } } Loading Loading @@ -553,10 +568,11 @@ public class KeyguardViewMediator implements KeyguardViewCallback, } /** * Enable the keyguard if the settings are appropriate. * Enable the keyguard if the settings are appropriate. Return true if all * work that will happen is done; returns false if the caller can wait for * the keyguard to be shown. */ private void doKeyguard() { synchronized (this) { private boolean doKeyguardLocked() { // if another app is disabling us, don't show if (!mExternallyEnabled) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because externally disabled"); Loading @@ -570,13 +586,13 @@ public class KeyguardViewMediator implements KeyguardViewCallback, // ends (see the broadcast receiver below) // TODO: clean this up when we have better support at the window manager level // for apps that wish to be on top of the keyguard return; return true; } // if the keyguard is already showing, don't bother if (mKeyguardViewManager.isShowing()) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because it is already showing"); return; return true; } // if the setup wizard hasn't run yet, don't show Loading @@ -592,17 +608,18 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (!lockedOrMissing && !provisioned) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because device isn't provisioned" + " and the sim is not locked or missing"); return; return true; } if (mLockPatternUtils.isLockScreenDisabled()) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because lockscreen is off"); return; return true; } if (DEBUG) Log.d(TAG, "doKeyguard: showing the lock screen"); mShowPending = true; showLocked(); } return false; } /** Loading Loading @@ -696,42 +713,50 @@ public class KeyguardViewMediator implements KeyguardViewCallback, case ABSENT: // only force lock screen in case of missing sim if user hasn't // gone through setup wizard synchronized (this) { if (!mUpdateMonitor.isDeviceProvisioned()) { if (!isShowing()) { if (DEBUG) Log.d(TAG, "ICC_ABSENT isn't showing," + " we need to show the keyguard since the " + "device isn't provisioned yet."); doKeyguard(); doKeyguardLocked(); } else { resetStateLocked(); } } } break; case PIN_REQUIRED: case PUK_REQUIRED: synchronized (this) { if (!isShowing()) { if (DEBUG) Log.d(TAG, "INTENT_VALUE_ICC_LOCKED and keygaurd isn't showing, we need " + "to show the keyguard so the user can enter their sim pin"); doKeyguard(); doKeyguardLocked(); } else { resetStateLocked(); } } break; case PERM_DISABLED: synchronized (this) { if (!isShowing()) { if (DEBUG) Log.d(TAG, "PERM_DISABLED and " + "keygaurd isn't showing."); doKeyguard(); doKeyguardLocked(); } else { if (DEBUG) Log.d(TAG, "PERM_DISABLED, resetStateLocked to" + "show permanently disabled message in lockscreen."); resetStateLocked(); } } break; case READY: synchronized (this) { if (isShowing()) { resetStateLocked(); } } break; } } Loading @@ -751,16 +776,19 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (DEBUG) Log.d(TAG, "received DELAYED_KEYGUARD_ACTION with seq = " + sequence + ", mDelayedShowingSequence = " + mDelayedShowingSequence); synchronized (KeyguardViewMediator.this) { if (mDelayedShowingSequence == sequence) { // Don't play lockscreen SFX if the screen went off due to // timeout. mSuppressNextLockSound = true; doKeyguard(); doKeyguardLocked(); } } } else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) { mPhoneState = intent.getStringExtra(TelephonyManager.EXTRA_STATE); synchronized (KeyguardViewMediator.this) { if (TelephonyManager.EXTRA_STATE_IDLE.equals(mPhoneState) // call ending && !mScreenOn // screen off && mExternallyEnabled) { // not disabled by any app Loading @@ -771,7 +799,8 @@ public class KeyguardViewMediator implements KeyguardViewCallback, // flicker while turning back on the screen and disabling the keyguard again). if (DEBUG) Log.d(TAG, "screen is off and call ended, let's make sure the " + "keyguard is showing"); doKeyguard(); doKeyguardLocked(); } } } } Loading Loading @@ -962,7 +991,15 @@ public class KeyguardViewMediator implements KeyguardViewCallback, handleSetHidden(msg.arg1 != 0); break; case KEYGUARD_TIMEOUT: doKeyguard(); synchronized (KeyguardViewMediator.this) { doKeyguardLocked(); } break; case REPORT_SHOW_DONE: synchronized (KeyguardViewMediator.this) { mShowPending = false; KeyguardViewMediator.this.notifyAll(); } break; } } Loading Loading @@ -1062,8 +1099,6 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (DEBUG) Log.d(TAG, "handleShow"); if (!mSystemReady) return; playSounds(true); mKeyguardViewManager.show(); mShowing = true; adjustUserActivityLocked(); Loading @@ -1072,7 +1107,17 @@ public class KeyguardViewMediator implements KeyguardViewCallback, ActivityManagerNative.getDefault().closeSystemDialogs("lock"); } catch (RemoteException e) { } // Do this at the end to not slow down display of the keyguard. playSounds(true); mShowKeyguardWakeLock.release(); // We won't say the show is done yet because the view hierarchy // still needs to do the traversal. Posting this message allows // us to hold off until that is done. Message msg = mHandler.obtainMessage(REPORT_SHOW_DONE); mHandler.sendMessage(msg); } } Loading Loading
core/java/android/view/IWindowManager.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -218,4 +218,9 @@ interface IWindowManager * Called by the settings application to temporarily set the pointer speed. */ void setPointerSpeed(int speed); /** * Block until all windows the window manager knows about have been drawn. */ void waitForAllDrawn(); }
core/java/android/view/WindowManager.java +9 −1 Original line number Diff line number Diff line Loading @@ -177,7 +177,8 @@ public interface WindowManager extends ViewManager { @ViewDebug.IntToString(from = TYPE_SYSTEM_ERROR, to = "TYPE_SYSTEM_ERROR"), @ViewDebug.IntToString(from = TYPE_INPUT_METHOD, to = "TYPE_INPUT_METHOD"), @ViewDebug.IntToString(from = TYPE_INPUT_METHOD_DIALOG, to = "TYPE_INPUT_METHOD_DIALOG"), @ViewDebug.IntToString(from = TYPE_SECURE_SYSTEM_OVERLAY, to = "TYPE_SECURE_SYSTEM_OVERLAY") @ViewDebug.IntToString(from = TYPE_SECURE_SYSTEM_OVERLAY, to = "TYPE_SECURE_SYSTEM_OVERLAY"), @ViewDebug.IntToString(from = TYPE_BOOT_PROGRESS, to = "TYPE_BOOT_PROGRESS") }) public int type; Loading Loading @@ -400,6 +401,13 @@ public interface WindowManager extends ViewManager { */ public static final int TYPE_VOLUME_OVERLAY = FIRST_SYSTEM_WINDOW+20; /** * Window type: The boot progress dialog, goes on top of everything * in the world. * @hide */ public static final int TYPE_BOOT_PROGRESS = FIRST_SYSTEM_WINDOW+21; /** * End of types of system windows. */ Loading
core/java/com/android/internal/widget/multiwaveview/TargetDrawable.java +6 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.util.Log; public class TargetDrawable { private static final String TAG = "TargetDrawable"; private static final boolean DEBUG = false; public static final int[] STATE_ACTIVE = { android.R.attr.state_enabled, android.R.attr.state_active }; public static final int[] STATE_INACTIVE = Loading Loading @@ -139,11 +141,13 @@ public class TargetDrawable { maxWidth = Math.max(maxWidth, childDrawable.getIntrinsicWidth()); maxHeight = Math.max(maxHeight, childDrawable.getIntrinsicHeight()); } Log.v(TAG, "union of childDrawable rects " + d + " to: " + maxWidth + "x" + maxHeight); if (DEBUG) Log.v(TAG, "union of childDrawable rects " + d + " to: " + maxWidth + "x" + maxHeight); d.setBounds(0, 0, maxWidth, maxHeight); for (int i = 0; i < d.getStateCount(); i++) { Drawable childDrawable = d.getStateDrawable(i); Log.v(TAG, "sizing drawable " + childDrawable + " to: " + maxWidth + "x" + maxHeight); if (DEBUG) Log.v(TAG, "sizing drawable " + childDrawable + " to: " + maxWidth + "x" + maxHeight); childDrawable.setBounds(0, 0, maxWidth, maxHeight); } } else if (mDrawable != null) { Loading
policy/src/com/android/internal/policy/impl/KeyguardStatusViewManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ import android.widget.TextView; * */ class KeyguardStatusViewManager implements OnClickListener { private static final boolean DEBUG = true; private static final boolean DEBUG = false; private static final String TAG = "KeyguardStatusView"; public static final int LOCK_ICON = 0; // R.drawable.ic_lock_idle_lock; Loading
policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java +137 −92 Original line number Diff line number Diff line Loading @@ -116,6 +116,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, private static final int KEYGUARD_DONE_AUTHENTICATING = 11; private static final int SET_HIDDEN = 12; private static final int KEYGUARD_TIMEOUT = 13; private static final int REPORT_SHOW_DONE = 14; /** * The default amount of time we stay awake (used for all key input) Loading Loading @@ -238,6 +239,8 @@ public class KeyguardViewMediator implements KeyguardViewCallback, private boolean mScreenOn = false; private boolean mShowPending = false; // last known state of the cellular connection private String mPhoneState = TelephonyManager.EXTRA_STATE_IDLE; Loading Loading @@ -306,7 +309,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, synchronized (this) { if (DEBUG) Log.d(TAG, "onSystemReady"); mSystemReady = true; doKeyguard(); doKeyguardLocked(); } } Loading Loading @@ -363,7 +366,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (timeout <= 0) { // Lock now mSuppressNextLockSound = true; doKeyguard(); doKeyguardLocked(); } else { // Lock in the future long when = SystemClock.elapsedRealtime() + timeout; Loading @@ -379,7 +382,19 @@ public class KeyguardViewMediator implements KeyguardViewCallback, } else if (why == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR) { // Do not enable the keyguard if the prox sensor forced the screen off. } else { doKeyguard(); if (!doKeyguardLocked() && why == WindowManagerPolicy.OFF_BECAUSE_OF_USER) { // The user has explicitly turned off the screen, causing it // to lock. We want to block here until the keyguard window // has shown, so the power manager won't complete the screen // off flow until that point, so we know it won't turn *on* // the screen until this is done. while (mShowPending) { try { wait(); } catch (InterruptedException e) { } } } } } } Loading Loading @@ -553,10 +568,11 @@ public class KeyguardViewMediator implements KeyguardViewCallback, } /** * Enable the keyguard if the settings are appropriate. * Enable the keyguard if the settings are appropriate. Return true if all * work that will happen is done; returns false if the caller can wait for * the keyguard to be shown. */ private void doKeyguard() { synchronized (this) { private boolean doKeyguardLocked() { // if another app is disabling us, don't show if (!mExternallyEnabled) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because externally disabled"); Loading @@ -570,13 +586,13 @@ public class KeyguardViewMediator implements KeyguardViewCallback, // ends (see the broadcast receiver below) // TODO: clean this up when we have better support at the window manager level // for apps that wish to be on top of the keyguard return; return true; } // if the keyguard is already showing, don't bother if (mKeyguardViewManager.isShowing()) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because it is already showing"); return; return true; } // if the setup wizard hasn't run yet, don't show Loading @@ -592,17 +608,18 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (!lockedOrMissing && !provisioned) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because device isn't provisioned" + " and the sim is not locked or missing"); return; return true; } if (mLockPatternUtils.isLockScreenDisabled()) { if (DEBUG) Log.d(TAG, "doKeyguard: not showing because lockscreen is off"); return; return true; } if (DEBUG) Log.d(TAG, "doKeyguard: showing the lock screen"); mShowPending = true; showLocked(); } return false; } /** Loading Loading @@ -696,42 +713,50 @@ public class KeyguardViewMediator implements KeyguardViewCallback, case ABSENT: // only force lock screen in case of missing sim if user hasn't // gone through setup wizard synchronized (this) { if (!mUpdateMonitor.isDeviceProvisioned()) { if (!isShowing()) { if (DEBUG) Log.d(TAG, "ICC_ABSENT isn't showing," + " we need to show the keyguard since the " + "device isn't provisioned yet."); doKeyguard(); doKeyguardLocked(); } else { resetStateLocked(); } } } break; case PIN_REQUIRED: case PUK_REQUIRED: synchronized (this) { if (!isShowing()) { if (DEBUG) Log.d(TAG, "INTENT_VALUE_ICC_LOCKED and keygaurd isn't showing, we need " + "to show the keyguard so the user can enter their sim pin"); doKeyguard(); doKeyguardLocked(); } else { resetStateLocked(); } } break; case PERM_DISABLED: synchronized (this) { if (!isShowing()) { if (DEBUG) Log.d(TAG, "PERM_DISABLED and " + "keygaurd isn't showing."); doKeyguard(); doKeyguardLocked(); } else { if (DEBUG) Log.d(TAG, "PERM_DISABLED, resetStateLocked to" + "show permanently disabled message in lockscreen."); resetStateLocked(); } } break; case READY: synchronized (this) { if (isShowing()) { resetStateLocked(); } } break; } } Loading @@ -751,16 +776,19 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (DEBUG) Log.d(TAG, "received DELAYED_KEYGUARD_ACTION with seq = " + sequence + ", mDelayedShowingSequence = " + mDelayedShowingSequence); synchronized (KeyguardViewMediator.this) { if (mDelayedShowingSequence == sequence) { // Don't play lockscreen SFX if the screen went off due to // timeout. mSuppressNextLockSound = true; doKeyguard(); doKeyguardLocked(); } } } else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) { mPhoneState = intent.getStringExtra(TelephonyManager.EXTRA_STATE); synchronized (KeyguardViewMediator.this) { if (TelephonyManager.EXTRA_STATE_IDLE.equals(mPhoneState) // call ending && !mScreenOn // screen off && mExternallyEnabled) { // not disabled by any app Loading @@ -771,7 +799,8 @@ public class KeyguardViewMediator implements KeyguardViewCallback, // flicker while turning back on the screen and disabling the keyguard again). if (DEBUG) Log.d(TAG, "screen is off and call ended, let's make sure the " + "keyguard is showing"); doKeyguard(); doKeyguardLocked(); } } } } Loading Loading @@ -962,7 +991,15 @@ public class KeyguardViewMediator implements KeyguardViewCallback, handleSetHidden(msg.arg1 != 0); break; case KEYGUARD_TIMEOUT: doKeyguard(); synchronized (KeyguardViewMediator.this) { doKeyguardLocked(); } break; case REPORT_SHOW_DONE: synchronized (KeyguardViewMediator.this) { mShowPending = false; KeyguardViewMediator.this.notifyAll(); } break; } } Loading Loading @@ -1062,8 +1099,6 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (DEBUG) Log.d(TAG, "handleShow"); if (!mSystemReady) return; playSounds(true); mKeyguardViewManager.show(); mShowing = true; adjustUserActivityLocked(); Loading @@ -1072,7 +1107,17 @@ public class KeyguardViewMediator implements KeyguardViewCallback, ActivityManagerNative.getDefault().closeSystemDialogs("lock"); } catch (RemoteException e) { } // Do this at the end to not slow down display of the keyguard. playSounds(true); mShowKeyguardWakeLock.release(); // We won't say the show is done yet because the view hierarchy // still needs to do the traversal. Posting this message allows // us to hold off until that is done. Message msg = mHandler.obtainMessage(REPORT_SHOW_DONE); mHandler.sendMessage(msg); } } Loading