summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2014-05-21 12:07:35 +0100
committerNarayan Kamath <narayan@google.com>2014-05-21 12:07:35 +0100
commitd862ebb6036a769cb3be371b396e9e33f89ee365 (patch)
treeebe36d1f47fc0c58ee0dfa295bb776ea3faad1c0
parent9853e2a8b37c80a11427f48b3b4976408f615e57 (diff)
parentfcc4fed3c16a57ef713a96b7298ed43aaeef2df4 (diff)
downloadframeworks_base-d862ebb6036a769cb3be371b396e9e33f89ee365.zip
frameworks_base-d862ebb6036a769cb3be371b396e9e33f89ee365.tar.gz
frameworks_base-d862ebb6036a769cb3be371b396e9e33f89ee365.tar.bz2
resolved conflicts for merge of fcc4fed3 to master
Change-Id: Icebca982b01debd67a1470c02651ef8936f6e5b0
-rw-r--r--core/java/android/os/IPowerManager.aidl2
-rw-r--r--core/java/android/os/PowerManager.java15
-rw-r--r--core/res/res/values/config.xml8
-rw-r--r--core/res/res/values/symbols.xml1
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindowManager.java46
-rw-r--r--services/core/java/com/android/server/power/PowerManagerService.java22
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java2
7 files changed, 80 insertions, 16 deletions
diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl
index 6c7b08d..61194e9 100644
--- a/core/java/android/os/IPowerManager.aidl
+++ b/core/java/android/os/IPowerManager.aidl
@@ -38,7 +38,7 @@ interface IPowerManager
void userActivity(long time, int event, int flags);
void wakeUp(long time);
- void goToSleep(long time, int reason);
+ void goToSleep(long time, int reason, int flags);
void nap(long time);
boolean isInteractive();
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index 5b2c8db..d5177e8 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -321,6 +321,12 @@ public final class PowerManager {
*/
public static final String REBOOT_RECOVERY = "recovery";
+ /**
+ * Go to sleep flag: Skip dozing state and directly go to full sleep.
+ * @hide
+ */
+ public static final int GO_TO_SLEEP_FLAG_NO_DOZE = 1 << 0;
+
final Context mContext;
final IPowerManager mService;
final Handler mHandler;
@@ -500,8 +506,15 @@ public final class PowerManager {
* @see #wakeUp
*/
public void goToSleep(long time) {
+ goToSleep(time, GO_TO_SLEEP_REASON_USER, 0);
+ }
+
+ /**
+ * @hide
+ */
+ public void goToSleep(long time, int reason, int flags) {
try {
- mService.goToSleep(time, GO_TO_SLEEP_REASON_USER);
+ mService.goToSleep(time, reason, flags);
} catch (RemoteException e) {
}
}
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index c3efb69..5375c14 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -498,6 +498,14 @@
-->
<integer name="config_longPressOnPowerBehavior">1</integer>
+ <!-- Control the behavior when the user short presses the power button.
+ 0 - Nothing
+ 1 - Go to sleep (doze)
+ 2 - Really go to sleep (don't doze)
+ 3 - Really go to sleep and go home (don't doze)
+ -->
+ <integer name="config_shortPressOnPowerBehavior">1</integer>
+
<!-- Package name for default keyguard appwidget [DO NOT TRANSLATE] -->
<string name="widget_default_package_name"></string>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index a4e80bc1..d7a5573 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -305,6 +305,7 @@
<java-symbol type="integer" name="config_ntpRetry" />
<java-symbol type="integer" name="config_ntpThreshold" />
<java-symbol type="integer" name="config_ntpTimeout" />
+ <java-symbol type="integer" name="config_shortPressOnPowerBehavior" />
<java-symbol type="integer" name="config_toastDefaultGravity" />
<java-symbol type="integer" name="config_wifi_framework_scan_interval" />
<java-symbol type="integer" name="config_wifi_supplicant_scan_interval" />
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index d0305e0..99dd2f4 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -141,6 +141,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// Whether to use the new Session APIs
static final boolean USE_SESSIONS = true;
+ static final int SHORT_PRESS_POWER_NOTHING = 0;
+ static final int SHORT_PRESS_POWER_GO_TO_SLEEP = 1;
+ static final int SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP = 2;
+ static final int SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME = 3;
+
static final int LONG_PRESS_POWER_NOTHING = 0;
static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1;
static final int LONG_PRESS_POWER_SHUT_OFF = 2;
@@ -298,6 +303,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
int mLidKeyboardAccessibility;
int mLidNavigationAccessibility;
boolean mLidControlsSleep;
+ int mShortPressOnPowerBehavior = -1;
int mLongPressOnPowerBehavior = -1;
boolean mScreenOnEarly = false;
boolean mScreenOnFully = false;
@@ -715,6 +721,33 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mHandler.removeCallbacks(mScreenshotRunnable);
}
+ private void powerShortPress(long eventTime) {
+ if (mShortPressOnPowerBehavior < 0) {
+ mShortPressOnPowerBehavior = mContext.getResources().getInteger(
+ com.android.internal.R.integer.config_shortPressOnPowerBehavior);
+ }
+
+ switch (mShortPressOnPowerBehavior) {
+ case SHORT_PRESS_POWER_NOTHING:
+ break;
+ case SHORT_PRESS_POWER_GO_TO_SLEEP:
+ mPowerManager.goToSleep(eventTime,
+ PowerManager.GO_TO_SLEEP_REASON_USER, 0);
+ break;
+ case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP:
+ mPowerManager.goToSleep(eventTime,
+ PowerManager.GO_TO_SLEEP_REASON_USER,
+ PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE);
+ break;
+ case SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME:
+ mPowerManager.goToSleep(eventTime,
+ PowerManager.GO_TO_SLEEP_REASON_USER,
+ PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE);
+ launchHomeFromHotKey();
+ break;
+ }
+ }
+
private final Runnable mPowerLongPress = new Runnable() {
@Override
public void run() {
@@ -4038,7 +4071,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mPowerKeyTriggered = false;
cancelPendingScreenshotChordAction();
if (interceptPowerKeyUp(canceled || mPendingPowerKeyUpCanceled)) {
- mPowerManager.goToSleep(event.getEventTime());
+ powerShortPress(event.getEventTime());
isWakeKey = false;
}
mPendingPowerKeyUpCanceled = false;
@@ -4930,7 +4963,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
private void applyLidSwitchState() {
if (mLidState == LID_CLOSED && mLidControlsSleep) {
- mPowerManager.goToSleep(SystemClock.uptimeMillis());
+ mPowerManager.goToSleep(SystemClock.uptimeMillis(),
+ PowerManager.GO_TO_SLEEP_REASON_USER,
+ PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE);
}
}
@@ -5409,9 +5444,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
pw.print(mLidKeyboardAccessibility);
pw.print(" mLidNavigationAccessibility="); pw.print(mLidNavigationAccessibility);
pw.print(" mLidControlsSleep="); pw.println(mLidControlsSleep);
- pw.print(prefix); pw.print("mLongPressOnPowerBehavior=");
- pw.print(mLongPressOnPowerBehavior);
- pw.print(" mHasSoftInput="); pw.println(mHasSoftInput);
+ pw.print(prefix);
+ pw.print("mShortPressOnPowerBehavior="); pw.print(mShortPressOnPowerBehavior);
+ pw.print(" mLongPressOnPowerBehavior="); pw.println(mLongPressOnPowerBehavior);
+ pw.print(prefix); pw.print("mHasSoftInput="); pw.println(mHasSoftInput);
pw.print(prefix); pw.print("mScreenOnEarly="); pw.print(mScreenOnEarly);
pw.print(" mScreenOnFully="); pw.print(mScreenOnFully);
pw.print(" mOrientationSensorEnabled="); pw.println(mOrientationSensorEnabled);
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 716ee27..aca17bf 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -949,9 +949,9 @@ public final class PowerManagerService extends com.android.server.SystemService
return true;
}
- private void goToSleepInternal(long eventTime, int reason) {
+ private void goToSleepInternal(long eventTime, int reason, int flags) {
synchronized (mLock) {
- if (goToSleepNoUpdateLocked(eventTime, reason)) {
+ if (goToSleepNoUpdateLocked(eventTime, reason, flags)) {
updatePowerStateLocked();
}
}
@@ -960,9 +960,10 @@ public final class PowerManagerService extends com.android.server.SystemService
// This method is called goToSleep for historical reasons but we actually start
// dozing before really going to sleep.
@SuppressWarnings("deprecation")
- private boolean goToSleepNoUpdateLocked(long eventTime, int reason) {
+ private boolean goToSleepNoUpdateLocked(long eventTime, int reason, int flags) {
if (DEBUG_SPEW) {
- Slog.d(TAG, "goToSleepNoUpdateLocked: eventTime=" + eventTime + ", reason=" + reason);
+ Slog.d(TAG, "goToSleepNoUpdateLocked: eventTime=" + eventTime
+ + ", reason=" + reason + ", flags=" + flags);
}
if (eventTime < mLastWakeTime
@@ -1005,6 +1006,11 @@ public final class PowerManagerService extends com.android.server.SystemService
}
}
EventLog.writeEvent(EventLogTags.POWER_SLEEP_REQUESTED, numWakeLocksCleared);
+
+ // Skip dozing if requested.
+ if ((flags & PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE) != 0) {
+ reallyGoToSleepNoUpdateLocked(eventTime);
+ }
return true;
}
@@ -1408,7 +1414,7 @@ public final class PowerManagerService extends com.android.server.SystemService
changed = napNoUpdateLocked(time);
} else {
changed = goToSleepNoUpdateLocked(time,
- PowerManager.GO_TO_SLEEP_REASON_TIMEOUT);
+ PowerManager.GO_TO_SLEEP_REASON_TIMEOUT, 0);
}
}
}
@@ -1555,7 +1561,7 @@ public final class PowerManagerService extends com.android.server.SystemService
// Dream has ended or will be stopped. Update the power state.
if (isItBedTimeYetLocked()) {
goToSleepNoUpdateLocked(SystemClock.uptimeMillis(),
- PowerManager.GO_TO_SLEEP_REASON_TIMEOUT);
+ PowerManager.GO_TO_SLEEP_REASON_TIMEOUT, 0);
updatePowerStateLocked();
} else {
wakeUpNoUpdateLocked(SystemClock.uptimeMillis());
@@ -2715,7 +2721,7 @@ public final class PowerManagerService extends com.android.server.SystemService
}
@Override // Binder call
- public void goToSleep(long eventTime, int reason) {
+ public void goToSleep(long eventTime, int reason, int flags) {
if (eventTime > SystemClock.uptimeMillis()) {
throw new IllegalArgumentException("event time must not be in the future");
}
@@ -2725,7 +2731,7 @@ public final class PowerManagerService extends com.android.server.SystemService
final long ident = Binder.clearCallingIdentity();
try {
- goToSleepInternal(eventTime, reason);
+ goToSleepInternal(eventTime, reason, flags);
} finally {
Binder.restoreCallingIdentity(ident);
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 5d88a57..58fdcc1 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -2301,7 +2301,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
try {
// Power off the display
getIPowerManager().goToSleep(SystemClock.uptimeMillis(),
- PowerManager.GO_TO_SLEEP_REASON_DEVICE_ADMIN);
+ PowerManager.GO_TO_SLEEP_REASON_DEVICE_ADMIN, 0);
// Ensure the device is locked
getWindowManager().lockNow(null);
} catch (RemoteException e) {