diff options
| author | Jim Miller <jaggies@google.com> | 2015-07-15 14:33:10 -0700 |
|---|---|---|
| committer | Jim Miller <jaggies@google.com> | 2015-07-15 14:33:10 -0700 |
| commit | c7b0435cc709c328da8e2b515ea04c8bc40d1094 (patch) | |
| tree | 042daa8ffa664abb32492f27ba95a27a3f70aea8 /services | |
| parent | 2fc3216e2f8b77116594ca5cda2e927c43094039 (diff) | |
| parent | 1d4247c4cc89c6d62e44ed3115f26579979b44b5 (diff) | |
| download | frameworks_base-c7b0435cc709c328da8e2b515ea04c8bc40d1094.zip frameworks_base-c7b0435cc709c328da8e2b515ea04c8bc40d1094.tar.gz frameworks_base-c7b0435cc709c328da8e2b515ea04c8bc40d1094.tar.bz2 | |
resolved conflicts for merge of 1d4247c4 to mnc-dr-dev
Change-Id: I057c529dcd5d48e0dcf256a9d096c5d8b815892a
Diffstat (limited to 'services')
9 files changed, 83 insertions, 27 deletions
diff --git a/services/core/java/com/android/server/DockObserver.java b/services/core/java/com/android/server/DockObserver.java index 41ce25d..5388f10 100644 --- a/services/core/java/com/android/server/DockObserver.java +++ b/services/core/java/com/android/server/DockObserver.java @@ -134,7 +134,8 @@ final class DockObserver extends SystemService { if (mAllowTheaterModeWakeFromDock || Settings.Global.getInt(getContext().getContentResolver(), Settings.Global.THEATER_MODE_ON, 0) == 0) { - mPowerManager.wakeUp(SystemClock.uptimeMillis()); + mPowerManager.wakeUp(SystemClock.uptimeMillis(), + "android.server:DOCK"); } updateLocked(); } diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 13b75ab..4b0b924 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -493,6 +493,13 @@ public final class BatteryStatsService extends IBatteryStats.Stub } } + public void noteWakeUp(String reason, int reasonUid) { + enforceCallingPermission(); + synchronized (mStats) { + mStats.noteWakeUpLocked(reason, reasonUid); + } + } + public void noteInteractive(boolean interactive) { enforceCallingPermission(); synchronized (mStats) { diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java index 458928f..8813a61 100644 --- a/services/core/java/com/android/server/dreams/DreamManagerService.java +++ b/services/core/java/com/android/server/dreams/DreamManagerService.java @@ -648,7 +648,8 @@ public final class DreamManagerService extends SystemService { if (mCurrentDreamName != null && mCurrentDreamCanDoze && !mCurrentDreamName.equals(getDozeComponent())) { // May have updated the doze component, wake up - mPowerManager.wakeUp(SystemClock.uptimeMillis()); + mPowerManager.wakeUp(SystemClock.uptimeMillis(), + "android.server.dreams:SYSPROP"); } } } diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java index 73308ab..9f9ff66 100644 --- a/services/core/java/com/android/server/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java @@ -561,6 +561,12 @@ public class FingerprintService extends SystemService implements IBinder.DeathRe result |= true; // we have a valid fingerprint mLockoutReset.run(); } + // For fingerprint devices that support touch-to-wake, this will ensure the device + // wakes up and turns the screen on when fingerprint is authenticated. + if (mIsKeyguard && authenticated) { + mPowerManager.wakeUp(SystemClock.uptimeMillis(), + "android.server.fingerprint:AUTH"); + } return result; } diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index c37f619..cfc5f7d 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -1969,7 +1969,7 @@ public final class HdmiControlService extends SystemService { void wakeUp() { assertRunOnServiceThread(); mWakeUpMessageReceived = true; - mPowerManager.wakeUp(SystemClock.uptimeMillis()); + mPowerManager.wakeUp(SystemClock.uptimeMillis(), "android.server.hdmi:WAKE"); // PowerManger will send the broadcast Intent.ACTION_SCREEN_ON and after this gets // the intent, the sequence will continue at onWakeUp(). } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 68acd9c..3e0e564 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -752,7 +752,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { synchronized (mLock) { if (shouldEnableWakeGestureLp()) { performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false); - wakeUp(SystemClock.uptimeMillis(), mAllowTheaterModeWakeFromWakeGesture); + wakeUp(SystemClock.uptimeMillis(), mAllowTheaterModeWakeFromWakeGesture, + "android.policy:GESTURE"); } } } @@ -4690,7 +4691,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { updateRotation(true); if (lidOpen) { - wakeUp(SystemClock.uptimeMillis(), mAllowTheaterModeWakeFromLidSwitch); + wakeUp(SystemClock.uptimeMillis(), mAllowTheaterModeWakeFromLidSwitch, + "android.policy:LID"); } else if (!mLidControlsSleep) { mPowerManager.userActivity(SystemClock.uptimeMillis(), false); } @@ -4712,7 +4714,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } else { intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); } - wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromCameraLens); + wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromCameraLens, + "android.policy:CAMERA_COVER"); startActivityAsUser(intent, UserHandle.CURRENT_OR_SELF); } mCameraLensCoverState = lensCoverState; @@ -4891,7 +4894,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (isValidGlobalKey(keyCode) && mGlobalKeyManager.shouldHandleGlobalKey(keyCode, event)) { if (isWakeKey) { - wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey); + wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey, "android.policy:KEY"); } return result; } @@ -5122,7 +5125,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } if (isWakeKey) { - wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey); + wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey, "android.policy:KEY"); } return result; @@ -5183,7 +5186,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public int interceptMotionBeforeQueueingNonInteractive(long whenNanos, int policyFlags) { if ((policyFlags & FLAG_WAKE) != 0) { - if (wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromMotion)) { + if (wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromMotion, + "android.policy:MOTION")) { return 0; } } @@ -5196,7 +5200,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { // there will be no dream to intercept the touch and wake into ambient. The device should // wake up in this case. if (isTheaterModeEnabled() && (policyFlags & FLAG_WAKE) != 0) { - wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromMotionWhenNotDreaming); + wakeUp(whenNanos / 1000000, mAllowTheaterModeWakeFromMotionWhenNotDreaming, + "android.policy:MOTION"); } return 0; @@ -5488,10 +5493,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private void wakeUpFromPowerKey(long eventTime) { - wakeUp(eventTime, mAllowTheaterModeWakeFromPowerKey); + wakeUp(eventTime, mAllowTheaterModeWakeFromPowerKey, "android.policy:POWER"); } - private boolean wakeUp(long wakeTime, boolean wakeInTheaterMode) { + private boolean wakeUp(long wakeTime, boolean wakeInTheaterMode, String reason) { final boolean theaterModeEnabled = isTheaterModeEnabled(); if (!wakeInTheaterMode && theaterModeEnabled) { return false; @@ -5502,7 +5507,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { Settings.Global.THEATER_MODE_ON, 0); } - mPowerManager.wakeUp(wakeTime); + mPowerManager.wakeUp(wakeTime, reason); return true; } diff --git a/services/core/java/com/android/server/power/Notifier.java b/services/core/java/com/android/server/power/Notifier.java index d21c6d2..c5ad7fe 100644 --- a/services/core/java/com/android/server/power/Notifier.java +++ b/services/core/java/com/android/server/power/Notifier.java @@ -472,6 +472,26 @@ final class Notifier { } /** + * Called when the screen has turned on. + */ + public void onWakeUp(String reason, int reasonUid, String opPackageName, int opUid) { + if (DEBUG) { + Slog.d(TAG, "onWakeUp: event=" + reason + ", reasonUid=" + reasonUid + + " opPackageName=" + opPackageName + " opUid=" + opUid); + } + + try { + mBatteryStats.noteWakeUp(reason, reasonUid); + if (opPackageName != null) { + mAppOps.noteOperation(AppOpsManager.OP_TURN_SCREEN_ON, opUid, opPackageName); + } + } catch (RemoteException ex) { + // Ignore + } + + } + + /** * Called when wireless charging has started so as to provide user feedback. */ public void onWirelessChargingStarted() { diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 3f59755..88476ce 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -830,7 +830,18 @@ public final class PowerManagerService extends SystemService private void applyWakeLockFlagsOnAcquireLocked(WakeLock wakeLock, int uid) { if ((wakeLock.mFlags & PowerManager.ACQUIRE_CAUSES_WAKEUP) != 0 && isScreenLock(wakeLock)) { - wakeUpNoUpdateLocked(SystemClock.uptimeMillis(), uid); + String opPackageName; + int opUid; + if (wakeLock.mWorkSource != null && wakeLock.mWorkSource.getName(0) != null) { + opPackageName = wakeLock.mWorkSource.getName(0); + opUid = wakeLock.mWorkSource.get(0); + } else { + opPackageName = wakeLock.mPackageName; + opUid = wakeLock.mWorkSource != null ? wakeLock.mWorkSource.get(0) + : wakeLock.mOwnerUid; + } + wakeUpNoUpdateLocked(SystemClock.uptimeMillis(), wakeLock.mTag, opUid, + opPackageName, opUid); } } @@ -1042,17 +1053,19 @@ public final class PowerManagerService extends SystemService return false; } - private void wakeUpInternal(long eventTime, int uid) { + private void wakeUpInternal(long eventTime, String reason, int uid, String opPackageName, + int opUid) { synchronized (mLock) { - if (wakeUpNoUpdateLocked(eventTime, uid)) { + if (wakeUpNoUpdateLocked(eventTime, reason, uid, opPackageName, opUid)) { updatePowerStateLocked(); } } } - private boolean wakeUpNoUpdateLocked(long eventTime, int uid) { + private boolean wakeUpNoUpdateLocked(long eventTime, String reason, int reasonUid, + String opPackageName, int opUid) { if (DEBUG_SPEW) { - Slog.d(TAG, "wakeUpNoUpdateLocked: eventTime=" + eventTime + ", uid=" + uid); + Slog.d(TAG, "wakeUpNoUpdateLocked: eventTime=" + eventTime + ", uid=" + reasonUid); } if (eventTime < mLastSleepTime || mWakefulness == WAKEFULNESS_AWAKE @@ -1064,21 +1077,22 @@ public final class PowerManagerService extends SystemService try { switch (mWakefulness) { case WAKEFULNESS_ASLEEP: - Slog.i(TAG, "Waking up from sleep (uid " + uid +")..."); + Slog.i(TAG, "Waking up from sleep (uid " + reasonUid +")..."); break; case WAKEFULNESS_DREAMING: - Slog.i(TAG, "Waking up from dream (uid " + uid +")..."); + Slog.i(TAG, "Waking up from dream (uid " + reasonUid +")..."); break; case WAKEFULNESS_DOZING: - Slog.i(TAG, "Waking up from dozing (uid " + uid +")..."); + Slog.i(TAG, "Waking up from dozing (uid " + reasonUid +")..."); break; } mLastWakeTime = eventTime; setWakefulnessLocked(WAKEFULNESS_AWAKE, 0); + mNotifier.onWakeUp(reason, reasonUid, opPackageName, opUid); userActivityNoUpdateLocked( - eventTime, PowerManager.USER_ACTIVITY_EVENT_OTHER, 0, uid); + eventTime, PowerManager.USER_ACTIVITY_EVENT_OTHER, 0, reasonUid); } finally { Trace.traceEnd(Trace.TRACE_TAG_POWER); } @@ -1334,7 +1348,8 @@ public final class PowerManagerService extends SystemService final long now = SystemClock.uptimeMillis(); if (shouldWakeUpWhenPluggedOrUnpluggedLocked(wasPowered, oldPlugType, dockedOnWirelessCharger)) { - wakeUpNoUpdateLocked(now, Process.SYSTEM_UID); + wakeUpNoUpdateLocked(now, "android.server.power:POWER", Process.SYSTEM_UID, + mContext.getOpPackageName(), Process.SYSTEM_UID); } userActivityNoUpdateLocked( now, PowerManager.USER_ACTIVITY_EVENT_OTHER, 0, Process.SYSTEM_UID); @@ -1788,7 +1803,8 @@ public final class PowerManagerService extends SystemService PowerManager.GO_TO_SLEEP_REASON_TIMEOUT, 0, Process.SYSTEM_UID); updatePowerStateLocked(); } else { - wakeUpNoUpdateLocked(SystemClock.uptimeMillis(), Process.SYSTEM_UID); + wakeUpNoUpdateLocked(SystemClock.uptimeMillis(), "android.server.power:DREAM", + Process.SYSTEM_UID, mContext.getOpPackageName(), Process.SYSTEM_UID); updatePowerStateLocked(); } } else if (wakefulness == WAKEFULNESS_DOZING) { @@ -3136,7 +3152,7 @@ public final class PowerManagerService extends SystemService } @Override // Binder call - public void wakeUp(long eventTime) { + public void wakeUp(long eventTime, String reason, String opPackageName) { if (eventTime > SystemClock.uptimeMillis()) { throw new IllegalArgumentException("event time must not be in the future"); } @@ -3147,7 +3163,7 @@ public final class PowerManagerService extends SystemService final int uid = Binder.getCallingUid(); final long ident = Binder.clearCallingIdentity(); try { - wakeUpInternal(eventTime, uid); + wakeUpInternal(eventTime, reason, uid, opPackageName, uid); } finally { Binder.restoreCallingIdentity(ident); } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index ec566bc..05c111c 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -10307,7 +10307,7 @@ public class WindowManagerService extends IWindowManager.Stub if (DEBUG_VISIBILITY || DEBUG_POWER) { Slog.v(TAG, "Turning screen on after layout!"); } - mPowerManager.wakeUp(SystemClock.uptimeMillis()); + mPowerManager.wakeUp(SystemClock.uptimeMillis(), "android.server.wm:TURN_ON"); } mTurnOnScreen = false; } |
