summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/service/dreams/DreamManagerInternal.java4
-rw-r--r--core/res/res/values/config.xml6
-rw-r--r--core/res/res/values/symbols.xml2
-rw-r--r--services/core/java/com/android/server/DockObserver.java8
-rw-r--r--services/core/java/com/android/server/dreams/DreamManagerService.java21
-rw-r--r--services/core/java/com/android/server/power/PowerManagerService.java18
-rw-r--r--services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java36
7 files changed, 61 insertions, 34 deletions
diff --git a/core/java/android/service/dreams/DreamManagerInternal.java b/core/java/android/service/dreams/DreamManagerInternal.java
index dd5373ff8c38..82571db469be 100644
--- a/core/java/android/service/dreams/DreamManagerInternal.java
+++ b/core/java/android/service/dreams/DreamManagerInternal.java
@@ -80,10 +80,10 @@ public abstract class DreamManagerInternal {
*/
public interface DreamManagerStateListener {
/**
- * Called when keep dreaming when undocked has changed.
+ * Called when keep dreaming when plug has changed.
*
* @param keepDreaming True if the current dream should continue when undocking.
*/
- void onKeepDreamingWhenUndockedChanged(boolean keepDreaming);
+ void onKeepDreamingWhenUnpluggingChanged(boolean keepDreaming);
}
}
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 9f10ae6066f5..a951c0b48da3 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -534,8 +534,10 @@
<!-- If this is true, long press on power button will be available from the non-interactive state -->
<bool name="config_supportLongPressPowerWhenNonInteractive">false</bool>
- <!-- If this is true, then keep dreaming when undocking. -->
- <bool name="config_keepDreamingWhenUndocking">false</bool>
+ <!-- If this is true, then keep dreaming when unplugging.
+ This config was formerly known as config_keepDreamingWhenUndocking.
+ It has been updated to affect other plug types. -->
+ <bool name="config_keepDreamingWhenUnplugging">false</bool>
<!-- The timeout (in ms) to wait before attempting to reconnect to the dream overlay service if
it becomes disconnected -->
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index a823d1fd8ff4..cea603265930 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -1944,7 +1944,7 @@
<java-symbol type="bool" name="config_allowTheaterModeWakeFromLidSwitch" />
<java-symbol type="bool" name="config_allowTheaterModeWakeFromDock" />
<java-symbol type="bool" name="config_allowTheaterModeWakeFromWindowLayout" />
- <java-symbol type="bool" name="config_keepDreamingWhenUndocking" />
+ <java-symbol type="bool" name="config_keepDreamingWhenUnplugging" />
<java-symbol type="integer" name="config_keyguardDrawnTimeout" />
<java-symbol type="bool" name="config_goToSleepOnButtonPressTheaterMode" />
<java-symbol type="bool" name="config_supportLongPressPowerWhenNonInteractive" />
diff --git a/services/core/java/com/android/server/DockObserver.java b/services/core/java/com/android/server/DockObserver.java
index 3487613d313c..5156c541011f 100644
--- a/services/core/java/com/android/server/DockObserver.java
+++ b/services/core/java/com/android/server/DockObserver.java
@@ -70,7 +70,7 @@ final class DockObserver extends SystemService {
private boolean mUpdatesStopped;
- private final boolean mKeepDreamingWhenUndocking;
+ private final boolean mKeepDreamingWhenUnplugging;
private final boolean mAllowTheaterModeWakeFromDock;
private final List<ExtconStateConfig> mExtconStateConfigs;
@@ -167,8 +167,8 @@ final class DockObserver extends SystemService {
mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
mAllowTheaterModeWakeFromDock = context.getResources().getBoolean(
com.android.internal.R.bool.config_allowTheaterModeWakeFromDock);
- mKeepDreamingWhenUndocking = context.getResources().getBoolean(
- com.android.internal.R.bool.config_keepDreamingWhenUndocking);
+ mKeepDreamingWhenUnplugging = context.getResources().getBoolean(
+ com.android.internal.R.bool.config_keepDreamingWhenUnplugging);
mDeviceProvisionedObserver = new DeviceProvisionedObserver(mHandler);
mExtconStateConfigs = loadExtconStateConfigs(context);
@@ -237,7 +237,7 @@ final class DockObserver extends SystemService {
}
private boolean allowWakeFromDock() {
- if (mKeepDreamingWhenUndocking) {
+ if (mKeepDreamingWhenUnplugging) {
return false;
}
return (mAllowTheaterModeWakeFromDock
diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java
index 7802b9d24de9..0e26d4661017 100644
--- a/services/core/java/com/android/server/dreams/DreamManagerService.java
+++ b/services/core/java/com/android/server/dreams/DreamManagerService.java
@@ -124,7 +124,7 @@ public final class DreamManagerService extends SystemService {
private final boolean mDreamsEnabledByDefaultConfig;
private final boolean mDreamsActivatedOnChargeByDefault;
private final boolean mDreamsActivatedOnDockByDefault;
- private final boolean mKeepDreamingWhenUndockedDefault;
+ private final boolean mKeepDreamingWhenUnpluggingDefault;
private final CopyOnWriteArrayList<DreamManagerInternal.DreamManagerStateListener>
mDreamManagerStateListeners = new CopyOnWriteArrayList<>();
@@ -236,8 +236,8 @@ public final class DreamManagerService extends SystemService {
mDreamsActivatedOnDockByDefault = mContext.getResources().getBoolean(
com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault);
mSettingsObserver = new SettingsObserver(mHandler);
- mKeepDreamingWhenUndockedDefault = mContext.getResources().getBoolean(
- com.android.internal.R.bool.config_keepDreamingWhenUndocking);
+ mKeepDreamingWhenUnpluggingDefault = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_keepDreamingWhenUnplugging);
}
@Override
@@ -311,7 +311,7 @@ public final class DreamManagerService extends SystemService {
pw.println("mIsDocked=" + mIsDocked);
pw.println("mIsCharging=" + mIsCharging);
pw.println("mWhenToDream=" + mWhenToDream);
- pw.println("mKeepDreamingWhenUndockedDefault=" + mKeepDreamingWhenUndockedDefault);
+ pw.println("mKeepDreamingWhenUnpluggingDefault=" + mKeepDreamingWhenUnpluggingDefault);
pw.println("getDozeComponent()=" + getDozeComponent());
pw.println();
@@ -340,11 +340,11 @@ public final class DreamManagerService extends SystemService {
}
}
- private void reportKeepDreamingWhenUndockedChanged(boolean keepDreaming) {
+ private void reportKeepDreamingWhenUnpluggingChanged(boolean keepDreaming) {
mHandler.post(() -> {
for (DreamManagerInternal.DreamManagerStateListener listener
: mDreamManagerStateListeners) {
- listener.onKeepDreamingWhenUndockedChanged(keepDreaming);
+ listener.onKeepDreamingWhenUnpluggingChanged(keepDreaming);
}
});
}
@@ -600,8 +600,7 @@ public final class DreamManagerService extends SystemService {
}
mSystemDreamComponent = componentName;
- reportKeepDreamingWhenUndockedChanged(shouldKeepDreamingWhenUndocked());
-
+ reportKeepDreamingWhenUnpluggingChanged(shouldKeepDreamingWhenUnplugging());
// Switch dream if currently dreaming and not dozing.
if (isDreamingInternal() && !isDozingInternal()) {
startDreamInternal(false /*doze*/, (mSystemDreamComponent == null ? "clear" : "set")
@@ -610,8 +609,8 @@ public final class DreamManagerService extends SystemService {
}
}
- private boolean shouldKeepDreamingWhenUndocked() {
- return mKeepDreamingWhenUndockedDefault && mSystemDreamComponent == null;
+ private boolean shouldKeepDreamingWhenUnplugging() {
+ return mKeepDreamingWhenUnpluggingDefault && mSystemDreamComponent == null;
}
private ComponentName getDefaultDreamComponentForUser(int userId) {
@@ -1057,7 +1056,7 @@ public final class DreamManagerService extends SystemService {
public void registerDreamManagerStateListener(DreamManagerStateListener listener) {
mDreamManagerStateListeners.add(listener);
// Initialize the listener's state.
- listener.onKeepDreamingWhenUndockedChanged(shouldKeepDreamingWhenUndocked());
+ listener.onKeepDreamingWhenUnpluggingChanged(shouldKeepDreamingWhenUnplugging());
}
@Override
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 2e8a150f2b6d..e392c24026a7 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -667,15 +667,15 @@ public final class PowerManagerService extends SystemService
// but the DreamService has not yet been told to start (it's an async process).
private boolean mDozeStartInProgress;
- // Whether to keep dreaming when the device is undocked.
- private boolean mKeepDreamingWhenUndocked;
+ // Whether to keep dreaming when the device is unplugging.
+ private boolean mKeepDreamingWhenUnplugging;
private final class DreamManagerStateListener implements
DreamManagerInternal.DreamManagerStateListener {
@Override
- public void onKeepDreamingWhenUndockedChanged(boolean keepDreaming) {
+ public void onKeepDreamingWhenUnpluggingChanged(boolean keepDreaming) {
synchronized (mLock) {
- mKeepDreamingWhenUndocked = keepDreaming;
+ mKeepDreamingWhenUnplugging = keepDreaming;
}
}
}
@@ -2504,14 +2504,12 @@ public final class PowerManagerService extends SystemService
return false;
}
- // Don't wake when undocking while dreaming if configured not to.
- if (mKeepDreamingWhenUndocked
+ // Don't wake when unplugging while dreaming if configured not to.
+ if (mKeepDreamingWhenUnplugging
&& getGlobalWakefulnessLocked() == WAKEFULNESS_DREAMING
- && wasPowered && !mIsPowered
- && oldPlugType == BatteryManager.BATTERY_PLUGGED_DOCK) {
+ && wasPowered && !mIsPowered) {
return false;
}
-
// Don't wake when undocked from wireless charger.
// See WirelessChargerDetector for justification.
if (wasPowered && !mIsPowered
@@ -4477,7 +4475,7 @@ public final class PowerManagerService extends SystemService
+ mWakeUpWhenPluggedOrUnpluggedInTheaterModeConfig);
pw.println(" mTheaterModeEnabled="
+ mTheaterModeEnabled);
- pw.println(" mKeepDreamingWhenUndocked=" + mKeepDreamingWhenUndocked);
+ pw.println(" mKeepDreamingWhenUnplugging=" + mKeepDreamingWhenUnplugging);
pw.println(" mSuspendWhenScreenOffDueToProximityConfig="
+ mSuspendWhenScreenOffDueToProximityConfig);
pw.println(" mDreamsSupportedConfig=" + mDreamsSupportedConfig);
diff --git a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
index a0fb3deeb131..21a11bc0e49e 100644
--- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
@@ -763,7 +763,7 @@ public class PowerManagerServiceTest {
ArgumentCaptor.forClass(DreamManagerInternal.DreamManagerStateListener.class);
verify(mDreamManagerInternalMock).registerDreamManagerStateListener(
dreamManagerStateListener.capture());
- dreamManagerStateListener.getValue().onKeepDreamingWhenUndockedChanged(false);
+ dreamManagerStateListener.getValue().onKeepDreamingWhenUnpluggingChanged(false);
when(mBatteryManagerInternalMock.getPlugType())
.thenReturn(BatteryManager.BATTERY_PLUGGED_DOCK);
@@ -793,7 +793,7 @@ public class PowerManagerServiceTest {
ArgumentCaptor.forClass(DreamManagerInternal.DreamManagerStateListener.class);
verify(mDreamManagerInternalMock).registerDreamManagerStateListener(
dreamManagerStateListener.capture());
- dreamManagerStateListener.getValue().onKeepDreamingWhenUndockedChanged(true);
+ dreamManagerStateListener.getValue().onKeepDreamingWhenUnpluggingChanged(true);
when(mBatteryManagerInternalMock.getPlugType())
.thenReturn(BatteryManager.BATTERY_PLUGGED_DOCK);
@@ -823,7 +823,7 @@ public class PowerManagerServiceTest {
ArgumentCaptor.forClass(DreamManagerInternal.DreamManagerStateListener.class);
verify(mDreamManagerInternalMock).registerDreamManagerStateListener(
dreamManagerStateListener.capture());
- dreamManagerStateListener.getValue().onKeepDreamingWhenUndockedChanged(true);
+ dreamManagerStateListener.getValue().onKeepDreamingWhenUnpluggingChanged(true);
when(mBatteryManagerInternalMock.getPlugType())
.thenReturn(BatteryManager.BATTERY_PLUGGED_DOCK);
@@ -831,7 +831,7 @@ public class PowerManagerServiceTest {
forceAwake(); // Needs to be awake first before it can dream.
forceDream();
- dreamManagerStateListener.getValue().onKeepDreamingWhenUndockedChanged(false);
+ dreamManagerStateListener.getValue().onKeepDreamingWhenUnpluggingChanged(false);
when(mBatteryManagerInternalMock.getPlugType()).thenReturn(0);
setPluggedIn(false);
@@ -839,6 +839,34 @@ public class PowerManagerServiceTest {
}
@Test
+ public void testWakefulnessDream_shouldStopDreamingWhenUnplugging_whenDreamPrevents() {
+ // Make sure "unplug turns on screen" is configured to true.
+ when(mResourcesSpy.getBoolean(com.android.internal.R.bool.config_unplugTurnsOnScreen))
+ .thenReturn(true);
+
+ createService();
+ startSystem();
+
+ ArgumentCaptor<DreamManagerInternal.DreamManagerStateListener> dreamManagerStateListener =
+ ArgumentCaptor.forClass(DreamManagerInternal.DreamManagerStateListener.class);
+ verify(mDreamManagerInternalMock).registerDreamManagerStateListener(
+ dreamManagerStateListener.capture());
+
+ when(mBatteryManagerInternalMock.getPlugType())
+ .thenReturn(BatteryManager.BATTERY_PLUGGED_AC);
+ setPluggedIn(true);
+
+ forceAwake(); // Needs to be awake first before it can dream.
+ forceDream();
+ dreamManagerStateListener.getValue().onKeepDreamingWhenUnpluggingChanged(false);
+ when(mBatteryManagerInternalMock.getPlugType()).thenReturn(0);
+ setPluggedIn(false);
+
+ assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_AWAKE);
+ }
+
+
+ @Test
public void testWakefulnessDoze_goToSleep() {
createService();
// Start with AWAKE state