Merge "Update UiModeManagerService to not trigger dreaming if dreams are suppressed." into tm-qpr-dev
This commit is contained in:
@@ -341,4 +341,10 @@ public abstract class PowerManagerInternal {
|
|||||||
* device is not awake.
|
* device is not awake.
|
||||||
*/
|
*/
|
||||||
public abstract void nap(long eventTime, boolean allowWake);
|
public abstract void nap(long eventTime, boolean allowWake);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if ambient display is suppressed by any app with any token. This method will
|
||||||
|
* return false if ambient display is not available.
|
||||||
|
*/
|
||||||
|
public abstract boolean isAmbientDisplaySuppressed();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,6 +152,8 @@ final class UiModeManagerService extends SystemService {
|
|||||||
|
|
||||||
// flag set by resource, whether to start dream immediately upon docking even if unlocked.
|
// flag set by resource, whether to start dream immediately upon docking even if unlocked.
|
||||||
private boolean mStartDreamImmediatelyOnDock = true;
|
private boolean mStartDreamImmediatelyOnDock = true;
|
||||||
|
// flag set by resource, whether to disable dreams when ambient mode suppression is enabled.
|
||||||
|
private boolean mDreamsDisabledByAmbientModeSuppression = false;
|
||||||
// flag set by resource, whether to enable Car dock launch when starting car mode.
|
// flag set by resource, whether to enable Car dock launch when starting car mode.
|
||||||
private boolean mEnableCarDockLaunch = true;
|
private boolean mEnableCarDockLaunch = true;
|
||||||
// flag set by resource, whether to lock UI mode to the default one or not.
|
// flag set by resource, whether to lock UI mode to the default one or not.
|
||||||
@@ -364,6 +366,11 @@ final class UiModeManagerService extends SystemService {
|
|||||||
mStartDreamImmediatelyOnDock = startDreamImmediatelyOnDock;
|
mStartDreamImmediatelyOnDock = startDreamImmediatelyOnDock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void setDreamsDisabledByAmbientModeSuppression(boolean disabledByAmbientModeSuppression) {
|
||||||
|
mDreamsDisabledByAmbientModeSuppression = disabledByAmbientModeSuppression;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUserSwitching(@Nullable TargetUser from, @NonNull TargetUser to) {
|
public void onUserSwitching(@Nullable TargetUser from, @NonNull TargetUser to) {
|
||||||
mCurrentUser = to.getUserIdentifier();
|
mCurrentUser = to.getUserIdentifier();
|
||||||
@@ -424,6 +431,8 @@ final class UiModeManagerService extends SystemService {
|
|||||||
final Resources res = context.getResources();
|
final Resources res = context.getResources();
|
||||||
mStartDreamImmediatelyOnDock = res.getBoolean(
|
mStartDreamImmediatelyOnDock = res.getBoolean(
|
||||||
com.android.internal.R.bool.config_startDreamImmediatelyOnDock);
|
com.android.internal.R.bool.config_startDreamImmediatelyOnDock);
|
||||||
|
mDreamsDisabledByAmbientModeSuppression = res.getBoolean(
|
||||||
|
com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig);
|
||||||
mNightMode = res.getInteger(
|
mNightMode = res.getInteger(
|
||||||
com.android.internal.R.integer.config_defaultNightMode);
|
com.android.internal.R.integer.config_defaultNightMode);
|
||||||
mDefaultUiModeType = res.getInteger(
|
mDefaultUiModeType = res.getInteger(
|
||||||
@@ -1827,8 +1836,12 @@ final class UiModeManagerService extends SystemService {
|
|||||||
// Send the new configuration.
|
// Send the new configuration.
|
||||||
applyConfigurationExternallyLocked();
|
applyConfigurationExternallyLocked();
|
||||||
|
|
||||||
|
final boolean dreamsSuppressed = mDreamsDisabledByAmbientModeSuppression
|
||||||
|
&& mLocalPowerManager.isAmbientDisplaySuppressed();
|
||||||
|
|
||||||
// If we did not start a dock app, then start dreaming if appropriate.
|
// If we did not start a dock app, then start dreaming if appropriate.
|
||||||
if (category != null && !dockAppStarted && (mStartDreamImmediatelyOnDock
|
if (category != null && !dockAppStarted && !dreamsSuppressed && (
|
||||||
|
mStartDreamImmediatelyOnDock
|
||||||
|| mWindowManager.isKeyguardShowingAndNotOccluded()
|
|| mWindowManager.isKeyguardShowingAndNotOccluded()
|
||||||
|| !mPowerManager.isInteractive())) {
|
|| !mPowerManager.isInteractive())) {
|
||||||
mInjector.startDreamWhenDockedIfAppropriate(getContext());
|
mInjector.startDreamWhenDockedIfAppropriate(getContext());
|
||||||
|
|||||||
@@ -6695,6 +6695,11 @@ public final class PowerManagerService extends SystemService
|
|||||||
public void nap(long eventTime, boolean allowWake) {
|
public void nap(long eventTime, boolean allowWake) {
|
||||||
napInternal(eventTime, Process.SYSTEM_UID, allowWake);
|
napInternal(eventTime, Process.SYSTEM_UID, allowWake);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAmbientDisplaySuppressed() {
|
||||||
|
return mAmbientDisplaySuppressionController.isSuppressed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1371,6 +1371,39 @@ public class UiModeManagerServiceTest extends UiServiceTestCase {
|
|||||||
verify(mInjector).startDreamWhenDockedIfAppropriate(mContext);
|
verify(mInjector).startDreamWhenDockedIfAppropriate(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dreamWhenDocked_ambientModeSuppressed_suppressionEnabled() {
|
||||||
|
mUiManagerService.setStartDreamImmediatelyOnDock(true);
|
||||||
|
mUiManagerService.setDreamsDisabledByAmbientModeSuppression(true);
|
||||||
|
|
||||||
|
when(mLocalPowerManager.isAmbientDisplaySuppressed()).thenReturn(true);
|
||||||
|
triggerDockIntent();
|
||||||
|
verifyAndSendResultBroadcast();
|
||||||
|
verify(mInjector, never()).startDreamWhenDockedIfAppropriate(mContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dreamWhenDocked_ambientModeSuppressed_suppressionDisabled() {
|
||||||
|
mUiManagerService.setStartDreamImmediatelyOnDock(true);
|
||||||
|
mUiManagerService.setDreamsDisabledByAmbientModeSuppression(false);
|
||||||
|
|
||||||
|
when(mLocalPowerManager.isAmbientDisplaySuppressed()).thenReturn(true);
|
||||||
|
triggerDockIntent();
|
||||||
|
verifyAndSendResultBroadcast();
|
||||||
|
verify(mInjector).startDreamWhenDockedIfAppropriate(mContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dreamWhenDocked_ambientModeNotSuppressed_suppressionEnabled() {
|
||||||
|
mUiManagerService.setStartDreamImmediatelyOnDock(true);
|
||||||
|
mUiManagerService.setDreamsDisabledByAmbientModeSuppression(true);
|
||||||
|
|
||||||
|
when(mLocalPowerManager.isAmbientDisplaySuppressed()).thenReturn(false);
|
||||||
|
triggerDockIntent();
|
||||||
|
verifyAndSendResultBroadcast();
|
||||||
|
verify(mInjector).startDreamWhenDockedIfAppropriate(mContext);
|
||||||
|
}
|
||||||
|
|
||||||
private void triggerDockIntent() {
|
private void triggerDockIntent() {
|
||||||
final Intent dockedIntent =
|
final Intent dockedIntent =
|
||||||
new Intent(Intent.ACTION_DOCK_EVENT)
|
new Intent(Intent.ACTION_DOCK_EVENT)
|
||||||
|
|||||||
Reference in New Issue
Block a user