diff options
| author | 2017-07-26 15:43:34 +0000 | |
|---|---|---|
| committer | 2017-07-26 15:43:34 +0000 | |
| commit | 0f29b29513f6204d2f4a6f8407adffe8209c75dd (patch) | |
| tree | 00700d39a651d4eda60e10664232cdac537650b5 | |
| parent | b65450e135c6bc297f3abe731cfb17d4cebef0e1 (diff) | |
| parent | 382644aa745f5375ce41047e660918df3d440d7c (diff) | |
Merge "Volume dialog doesn't show on ambient/aod." into oc-dr1-dev
am: 382644aa74
Change-Id: I024b10373afa5dfd7255d0dccddb1bb653d496b4
3 files changed, 45 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 632571c3a83b..384d95ce0858 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -639,6 +639,15 @@ public class StatusBar extends SystemUI implements DemoMode, // Fingerprint (as computed by getLoggingFingerprint() of the last logged state. private int mLastLoggedStateFingerprint; + public boolean isStartedGoingToSleep() { + return mStartedGoingToSleep; + } + + /** + * If set, the device has started going to sleep but isn't fully non-interactive yet. + */ + protected boolean mStartedGoingToSleep; + private final OnChildLocationsChangedListener mNotificationLocationsChangedListener = new OnChildLocationsChangedListener() { @Override @@ -5106,6 +5115,7 @@ public class StatusBar extends SystemUI implements DemoMode, recomputeDisableFlags(true /* animate */); } + WakefulnessLifecycle.Observer mWakefulnessObserver = new WakefulnessLifecycle.Observer() { @Override public void onFinishedGoingToSleep() { @@ -5140,6 +5150,11 @@ public class StatusBar extends SystemUI implements DemoMode, } @Override + public void onStartedGoingToSleep() { + dismissVolumeDialog(); + } + + @Override public void onStartedWakingUp() { mDeviceInteractive = true; mStackScroller.setAnimationsEnabled(true); @@ -5186,6 +5201,10 @@ public class StatusBar extends SystemUI implements DemoMode, } }; + public int getWakefulnessState() { + return mWakefulnessLifecycle.getWakefulness(); + } + private void vibrateForCameraGesture() { // Make sure to pass -1 for repeat so VibratorService doesn't stop us when going to sleep. mVibrator.vibrate(mCameraLaunchGestureVibePattern, -1 /* repeat */); diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java index 103eb6ec927f..73ec0a47cde5 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java @@ -49,6 +49,8 @@ import com.android.internal.annotations.GuardedBy; import com.android.systemui.Dumpable; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; +import com.android.systemui.keyguard.ScreenLifecycle; +import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.plugins.VolumeDialogController; import com.android.systemui.qs.tiles.DndTile; import com.android.systemui.statusbar.phone.StatusBar; @@ -336,11 +338,17 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa } } - boolean onVolumeChangedW(int stream, int flags) { + private boolean shouldShowUI(int flags) { updateStatusBar(); + return mStatusBar != null + && mStatusBar.getWakefulnessState() != WakefulnessLifecycle.WAKEFULNESS_ASLEEP + && mStatusBar.getWakefulnessState() != WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP + && mStatusBar.isDeviceInteractive() + && (flags & AudioManager.FLAG_SHOW_UI) != 0; + } - final boolean showUI = (mStatusBar != null && mStatusBar.isDeviceInteractive()) && - ((flags & AudioManager.FLAG_SHOW_UI) != 0); + boolean onVolumeChangedW(int stream, int flags) { + final boolean showUI = shouldShowUI(flags); final boolean fromKey = (flags & AudioManager.FLAG_FROM_KEY) != 0; final boolean showVibrateHint = (flags & AudioManager.FLAG_SHOW_VIBRATE_HINT) != 0; final boolean showSilentHint = (flags & AudioManager.FLAG_SHOW_SILENT_HINT) != 0; @@ -935,7 +943,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa @Override public void onRemoteVolumeChanged(Token token, int flags) { final int stream = mRemoteStreams.get(token); - final boolean showUI = (flags & AudioManager.FLAG_SHOW_UI) != 0; + final boolean showUI = shouldShowUI(flags); boolean changed = updateActiveStreamW(stream); if (showUI) { changed |= checkRoutedToBluetoothW(AudioManager.STREAM_MUSIC); diff --git a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java index 8060f5beb9b2..12e9f7c97cde 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/volume/VolumeDialogControllerImplTest.java @@ -26,6 +26,7 @@ import android.content.Context; import android.media.AudioManager; import android.support.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; +import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.statusbar.phone.StatusBar; import org.junit.Before; @@ -48,6 +49,7 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { @Test public void testVolumeChangeW_deviceNotInteractiveAOD() { when(mStatusBar.isDeviceInteractive()).thenReturn(false); + when(mStatusBar.getWakefulnessState()).thenReturn(WakefulnessLifecycle.WAKEFULNESS_AWAKE); mVolumeController.onVolumeChangedW(0, AudioManager.FLAG_SHOW_UI); verify(mCallback, never()).onShowRequested(Events.SHOW_REASON_VOLUME_CHANGED); } @@ -55,6 +57,18 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase { @Test public void testVolumeChangeW_deviceInteractive() { when(mStatusBar.isDeviceInteractive()).thenReturn(true); + when(mStatusBar.getWakefulnessState()).thenReturn(WakefulnessLifecycle.WAKEFULNESS_AWAKE); + mVolumeController.onVolumeChangedW(0, AudioManager.FLAG_SHOW_UI); + verify(mCallback, times(1)).onShowRequested(Events.SHOW_REASON_VOLUME_CHANGED); + } + + @Test + public void testVolumeChangeW_deviceInteractive_StartedSleeping() { + when(mStatusBar.isDeviceInteractive()).thenReturn(true); + when(mStatusBar.getWakefulnessState()).thenReturn(WakefulnessLifecycle.WAKEFULNESS_AWAKE); + mVolumeController.onVolumeChangedW(0, AudioManager.FLAG_SHOW_UI); + when(mStatusBar.isDeviceInteractive()).thenReturn(false); + when(mStatusBar.getWakefulnessState()).thenReturn(WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP); mVolumeController.onVolumeChangedW(0, AudioManager.FLAG_SHOW_UI); verify(mCallback, times(1)).onShowRequested(Events.SHOW_REASON_VOLUME_CHANGED); } |