Merge "Volume dialog doesn't show on ambient/aod." into oc-dr1-dev

This commit is contained in:
TreeHugger Robot
2017-07-26 15:34:32 +00:00
committed by Android (Google) Code Review
3 changed files with 45 additions and 4 deletions

View File

@@ -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() {
@@ -5139,6 +5149,11 @@ public class StatusBar extends SystemUI implements DemoMode,
updateIsKeyguard();
}
@Override
public void onStartedGoingToSleep() {
dismissVolumeDialog();
}
@Override
public void onStartedWakingUp() {
mDeviceInteractive = 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 */);

View File

@@ -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);

View File

@@ -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);
}