am 88c66cbb: Merge "Dream when user activity times out while docked if appropriate." into jb-mr1-dev
* commit '88c66cbb00a572ac8280f0e0ea38079d48ec59f3': Dream when user activity times out while docked if appropriate.
This commit is contained in:
@@ -107,6 +107,8 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
private static final int DIRTY_PROXIMITY_POSITIVE = 1 << 9;
|
private static final int DIRTY_PROXIMITY_POSITIVE = 1 << 9;
|
||||||
// Dirty bit: screen on blocker state became held or unheld
|
// Dirty bit: screen on blocker state became held or unheld
|
||||||
private static final int DIRTY_SCREEN_ON_BLOCKER_RELEASED = 1 << 10;
|
private static final int DIRTY_SCREEN_ON_BLOCKER_RELEASED = 1 << 10;
|
||||||
|
// Dirty bit: dock state changed
|
||||||
|
private static final int DIRTY_DOCK_STATE = 1 << 11;
|
||||||
|
|
||||||
// Wakefulness: The device is asleep and can only be awoken by a call to wakeUp().
|
// Wakefulness: The device is asleep and can only be awoken by a call to wakeUp().
|
||||||
// The screen should be off or in the process of being turned off by the display controller.
|
// The screen should be off or in the process of being turned off by the display controller.
|
||||||
@@ -269,6 +271,9 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
// draining faster than it is charging and the user activity timeout has expired.
|
// draining faster than it is charging and the user activity timeout has expired.
|
||||||
private int mBatteryLevelWhenDreamStarted;
|
private int mBatteryLevelWhenDreamStarted;
|
||||||
|
|
||||||
|
// The current dock state.
|
||||||
|
private int mDockState = Intent.EXTRA_DOCK_STATE_UNDOCKED;
|
||||||
|
|
||||||
// True if the device should wake up when plugged or unplugged.
|
// True if the device should wake up when plugged or unplugged.
|
||||||
private boolean mWakeUpWhenPluggedOrUnpluggedConfig;
|
private boolean mWakeUpWhenPluggedOrUnpluggedConfig;
|
||||||
|
|
||||||
@@ -281,6 +286,9 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
// True if dreams should be activated on sleep.
|
// True if dreams should be activated on sleep.
|
||||||
private boolean mDreamsActivateOnSleepSetting;
|
private boolean mDreamsActivateOnSleepSetting;
|
||||||
|
|
||||||
|
// True if dreams should be activated on dock.
|
||||||
|
private boolean mDreamsActivateOnDockSetting;
|
||||||
|
|
||||||
// The screen off timeout setting value in milliseconds.
|
// The screen off timeout setting value in milliseconds.
|
||||||
private int mScreenOffTimeoutSetting;
|
private int mScreenOffTimeoutSetting;
|
||||||
|
|
||||||
@@ -440,6 +448,10 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
filter.addAction(Intent.ACTION_USER_SWITCHED);
|
filter.addAction(Intent.ACTION_USER_SWITCHED);
|
||||||
mContext.registerReceiver(new UserSwitchedReceiver(), filter, null, mHandler);
|
mContext.registerReceiver(new UserSwitchedReceiver(), filter, null, mHandler);
|
||||||
|
|
||||||
|
filter = new IntentFilter();
|
||||||
|
filter.addAction(Intent.ACTION_DOCK_EVENT);
|
||||||
|
mContext.registerReceiver(new DockReceiver(), filter, null, mHandler);
|
||||||
|
|
||||||
// Register for settings changes.
|
// Register for settings changes.
|
||||||
final ContentResolver resolver = mContext.getContentResolver();
|
final ContentResolver resolver = mContext.getContentResolver();
|
||||||
resolver.registerContentObserver(Settings.Secure.getUriFor(
|
resolver.registerContentObserver(Settings.Secure.getUriFor(
|
||||||
@@ -448,6 +460,9 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
resolver.registerContentObserver(Settings.Secure.getUriFor(
|
resolver.registerContentObserver(Settings.Secure.getUriFor(
|
||||||
Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP),
|
Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP),
|
||||||
false, mSettingsObserver, UserHandle.USER_ALL);
|
false, mSettingsObserver, UserHandle.USER_ALL);
|
||||||
|
resolver.registerContentObserver(Settings.Secure.getUriFor(
|
||||||
|
Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK),
|
||||||
|
false, mSettingsObserver, UserHandle.USER_ALL);
|
||||||
resolver.registerContentObserver(Settings.System.getUriFor(
|
resolver.registerContentObserver(Settings.System.getUriFor(
|
||||||
Settings.System.SCREEN_OFF_TIMEOUT),
|
Settings.System.SCREEN_OFF_TIMEOUT),
|
||||||
false, mSettingsObserver, UserHandle.USER_ALL);
|
false, mSettingsObserver, UserHandle.USER_ALL);
|
||||||
@@ -487,6 +502,9 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
mDreamsActivateOnSleepSetting = (Settings.Secure.getIntForUser(resolver,
|
mDreamsActivateOnSleepSetting = (Settings.Secure.getIntForUser(resolver,
|
||||||
Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 0,
|
Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 0,
|
||||||
UserHandle.USER_CURRENT) != 0);
|
UserHandle.USER_CURRENT) != 0);
|
||||||
|
mDreamsActivateOnDockSetting = (Settings.Secure.getIntForUser(resolver,
|
||||||
|
Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK, 0,
|
||||||
|
UserHandle.USER_CURRENT) != 0);
|
||||||
mScreenOffTimeoutSetting = Settings.System.getIntForUser(resolver,
|
mScreenOffTimeoutSetting = Settings.System.getIntForUser(resolver,
|
||||||
Settings.System.SCREEN_OFF_TIMEOUT, DEFAULT_SCREEN_OFF_TIMEOUT,
|
Settings.System.SCREEN_OFF_TIMEOUT, DEFAULT_SCREEN_OFF_TIMEOUT,
|
||||||
UserHandle.USER_CURRENT);
|
UserHandle.USER_CURRENT);
|
||||||
@@ -1339,13 +1357,14 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
private boolean updateWakefulnessLocked(int dirty) {
|
private boolean updateWakefulnessLocked(int dirty) {
|
||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
if ((dirty & (DIRTY_WAKE_LOCKS | DIRTY_USER_ACTIVITY | DIRTY_BOOT_COMPLETED
|
if ((dirty & (DIRTY_WAKE_LOCKS | DIRTY_USER_ACTIVITY | DIRTY_BOOT_COMPLETED
|
||||||
| DIRTY_WAKEFULNESS | DIRTY_STAY_ON | DIRTY_PROXIMITY_POSITIVE)) != 0) {
|
| DIRTY_WAKEFULNESS | DIRTY_STAY_ON | DIRTY_PROXIMITY_POSITIVE
|
||||||
|
| DIRTY_DOCK_STATE)) != 0) {
|
||||||
if (mWakefulness == WAKEFULNESS_AWAKE && isItBedTimeYetLocked()) {
|
if (mWakefulness == WAKEFULNESS_AWAKE && isItBedTimeYetLocked()) {
|
||||||
if (DEBUG_SPEW) {
|
if (DEBUG_SPEW) {
|
||||||
Slog.d(TAG, "updateWakefulnessLocked: Bed time...");
|
Slog.d(TAG, "updateWakefulnessLocked: Bed time...");
|
||||||
}
|
}
|
||||||
final long time = SystemClock.uptimeMillis();
|
final long time = SystemClock.uptimeMillis();
|
||||||
if (mDreamsActivateOnSleepSetting) {
|
if (shouldNapAtBedTimeLocked()) {
|
||||||
changed = napNoUpdateLocked(time);
|
changed = napNoUpdateLocked(time);
|
||||||
} else {
|
} else {
|
||||||
changed = goToSleepNoUpdateLocked(time,
|
changed = goToSleepNoUpdateLocked(time,
|
||||||
@@ -1356,6 +1375,16 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the device should automatically nap and start dreaming when the user
|
||||||
|
* activity timeout has expired and it's bedtime.
|
||||||
|
*/
|
||||||
|
private boolean shouldNapAtBedTimeLocked() {
|
||||||
|
return mDreamsActivateOnSleepSetting
|
||||||
|
|| (mDreamsActivateOnDockSetting
|
||||||
|
&& mDockState != Intent.EXTRA_DOCK_STATE_UNDOCKED);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the device should go to sleep now.
|
* Returns true if the device should go to sleep now.
|
||||||
* Also used when exiting a dream to determine whether we should go back
|
* Also used when exiting a dream to determine whether we should go back
|
||||||
@@ -2124,6 +2153,7 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
pw.println(" mPlugType=" + mPlugType);
|
pw.println(" mPlugType=" + mPlugType);
|
||||||
pw.println(" mBatteryLevel=" + mBatteryLevel);
|
pw.println(" mBatteryLevel=" + mBatteryLevel);
|
||||||
pw.println(" mBatteryLevelWhenDreamStarted=" + mBatteryLevelWhenDreamStarted);
|
pw.println(" mBatteryLevelWhenDreamStarted=" + mBatteryLevelWhenDreamStarted);
|
||||||
|
pw.println(" mDockState=" + mDockState);
|
||||||
pw.println(" mStayOn=" + mStayOn);
|
pw.println(" mStayOn=" + mStayOn);
|
||||||
pw.println(" mProximityPositive=" + mProximityPositive);
|
pw.println(" mProximityPositive=" + mProximityPositive);
|
||||||
pw.println(" mBootCompleted=" + mBootCompleted);
|
pw.println(" mBootCompleted=" + mBootCompleted);
|
||||||
@@ -2149,6 +2179,7 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
pw.println(" mDreamsSupportedConfig=" + mDreamsSupportedConfig);
|
pw.println(" mDreamsSupportedConfig=" + mDreamsSupportedConfig);
|
||||||
pw.println(" mDreamsEnabledSetting=" + mDreamsEnabledSetting);
|
pw.println(" mDreamsEnabledSetting=" + mDreamsEnabledSetting);
|
||||||
pw.println(" mDreamsActivateOnSleepSetting=" + mDreamsActivateOnSleepSetting);
|
pw.println(" mDreamsActivateOnSleepSetting=" + mDreamsActivateOnSleepSetting);
|
||||||
|
pw.println(" mDreamsActivateOnDockSetting=" + mDreamsActivateOnDockSetting);
|
||||||
pw.println(" mScreenOffTimeoutSetting=" + mScreenOffTimeoutSetting);
|
pw.println(" mScreenOffTimeoutSetting=" + mScreenOffTimeoutSetting);
|
||||||
pw.println(" mMaximumScreenOffTimeoutFromDeviceAdmin="
|
pw.println(" mMaximumScreenOffTimeoutFromDeviceAdmin="
|
||||||
+ mMaximumScreenOffTimeoutFromDeviceAdmin + " (enforced="
|
+ mMaximumScreenOffTimeoutFromDeviceAdmin + " (enforced="
|
||||||
@@ -2267,6 +2298,21 @@ public final class PowerManagerService extends IPowerManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final class DockReceiver extends BroadcastReceiver {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
synchronized (mLock) {
|
||||||
|
int dockState = intent.getIntExtra(Intent.EXTRA_DOCK_STATE,
|
||||||
|
Intent.EXTRA_DOCK_STATE_UNDOCKED);
|
||||||
|
if (mDockState != dockState) {
|
||||||
|
mDockState = dockState;
|
||||||
|
mDirty |= DIRTY_DOCK_STATE;
|
||||||
|
updatePowerStateLocked();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private final class SettingsObserver extends ContentObserver {
|
private final class SettingsObserver extends ContentObserver {
|
||||||
public SettingsObserver(Handler handler) {
|
public SettingsObserver(Handler handler) {
|
||||||
super(handler);
|
super(handler);
|
||||||
|
|||||||
Reference in New Issue
Block a user