diff options
4 files changed, 31 insertions, 17 deletions
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index 3315c89daa28..21f96c9dbdbd 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -1785,7 +1785,13 @@ public class AccountManagerService // Get the calling package. We will use it for the purpose of caching. final String callerPkg = loginOptions.getString(AccountManager.KEY_ANDROID_PACKAGE_NAME); - List<String> callerOwnedPackageNames = Arrays.asList(mPackageManager.getPackagesForUid(callerUid)); + List<String> callerOwnedPackageNames; + long ident = Binder.clearCallingIdentity(); + try { + callerOwnedPackageNames = Arrays.asList(mPackageManager.getPackagesForUid(callerUid)); + } finally { + Binder.restoreCallingIdentity(ident); + } if (callerPkg == null || !callerOwnedPackageNames.contains(callerPkg)) { String msg = String.format( "Uid %s is attempting to illegally masquerade as package %s!", @@ -1798,15 +1804,15 @@ public class AccountManagerService loginOptions.putInt(AccountManager.KEY_CALLER_UID, callerUid); loginOptions.putInt(AccountManager.KEY_CALLER_PID, Binder.getCallingPid()); - // Distill the caller's package signatures into a single digest. - final byte[] callerPkgSigDigest = calculatePackageSignatureDigest(callerPkg); - if (notifyOnAuthFailure) { loginOptions.putBoolean(AccountManager.KEY_NOTIFY_ON_FAILURE, true); } long identityToken = clearCallingIdentity(); try { + // Distill the caller's package signatures into a single digest. + final byte[] callerPkgSigDigest = calculatePackageSignatureDigest(callerPkg); + // if the caller has permission, do the peek. otherwise go the more expensive // route of starting a Session if (!customTokens && permissionGranted) { diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 2839f08cd328..46793b91d593 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -1087,16 +1087,19 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } - private void sleepPress(KeyEvent event) { + private void sleepPress(long eventTime) { + if (mShortPressOnSleepBehavior == SHORT_PRESS_SLEEP_GO_TO_SLEEP_AND_GO_HOME) { + launchHomeFromHotKey(false /* awakenDreams */, true /*respectKeyguard*/); + } + } + + private void sleepRelease(long eventTime) { switch (mShortPressOnSleepBehavior) { case SHORT_PRESS_SLEEP_GO_TO_SLEEP: - mPowerManager.goToSleep(event.getEventTime(), - PowerManager.GO_TO_SLEEP_REASON_SLEEP_BUTTON, 0); - break; case SHORT_PRESS_SLEEP_GO_TO_SLEEP_AND_GO_HOME: - launchHomeFromHotKey(false /* awakenDreams */, true /*respectKeyguard*/); - mPowerManager.goToSleep(event.getEventTime(), - PowerManager.GO_TO_SLEEP_REASON_SLEEP_BUTTON, 0); + Slog.i(TAG, "sleepRelease() calling goToSleep(GO_TO_SLEEP_REASON_SLEEP_BUTTON)"); + mPowerManager.goToSleep(eventTime, + PowerManager.GO_TO_SLEEP_REASON_SLEEP_BUTTON, 0); break; } } @@ -4905,7 +4908,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (!mPowerManager.isInteractive()) { useHapticFeedback = false; // suppress feedback if already non-interactive } - sleepPress(event); + if (down) { + sleepPress(event.getEventTime()); + } else { + sleepRelease(event.getEventTime()); + } break; } diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java b/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java index 01c110fe2eb6..f1f9c5087aa7 100644 --- a/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java +++ b/services/core/java/com/android/server/policy/keyguard/KeyguardStateMonitor.java @@ -36,10 +36,11 @@ public class KeyguardStateMonitor extends IKeyguardStateCallback.Stub { // Keyguard changes its state, it always triggers a layout in window manager. Because // IKeyguardStateCallback is synchronous and because these states are declared volatile, it's // guaranteed that window manager picks up the new state all the time in the layout caused by - // the state change of Keyguard. - private volatile boolean mIsShowing; - private volatile boolean mSimSecure; - private volatile boolean mInputRestricted; + // the state change of Keyguard. To be extra safe, assume most restrictive values until Keyguard + // tells us the actual value. + private volatile boolean mIsShowing = true; + private volatile boolean mSimSecure = true; + private volatile boolean mInputRestricted = true; private int mCurrentUserId; diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java index 5f430f07f7c3..a3dc07716629 100644 --- a/wifi/java/android/net/wifi/WifiScanner.java +++ b/wifi/java/android/net/wifi/WifiScanner.java @@ -1007,7 +1007,7 @@ public class WifiScanner { ((ParcelableScanResults) msg.obj).getResults()); return; case CMD_SINGLE_SCAN_COMPLETED: - Log.d(TAG, "removing listener for single scan"); + if (DBG) Log.d(TAG, "removing listener for single scan"); removeListener(msg.arg2); break; default: |