summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java20
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java10
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java10
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java19
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java10
5 files changed, 65 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java
index b48b40986f73..875e505db1c6 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java
@@ -94,6 +94,7 @@ import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
import com.android.systemui.statusbar.phone.SystemUIDialog;
+import com.android.systemui.volume.panel.domain.interactor.VolumePanelGlobalStateInteractor;
import dagger.assisted.Assisted;
import dagger.assisted.AssistedFactory;
@@ -173,6 +174,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
private float mActiveRadius;
private FeatureFlags mFeatureFlags;
private UserTracker mUserTracker;
+ private VolumePanelGlobalStateInteractor mVolumePanelGlobalStateInteractor;
public enum BroadcastNotifyDialog {
ACTION_FIRST_LAUNCH,
@@ -195,6 +197,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
PowerExemptionManager powerExemptionManager,
KeyguardManager keyGuardManager,
FeatureFlags featureFlags,
+ VolumePanelGlobalStateInteractor volumePanelGlobalStateInteractor,
UserTracker userTracker) {
mContext = context;
mPackageName = packageName;
@@ -209,6 +212,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
mFeatureFlags = featureFlags;
mUserTracker = userTracker;
mToken = token;
+ mVolumePanelGlobalStateInteractor = volumePanelGlobalStateInteractor;
InfoMediaManager imm =
InfoMediaManager.createInstance(mContext, packageName, userHandle, lbm, token);
mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, packageName);
@@ -436,7 +440,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
launchIntent.putExtra(EXTRA_ROUTE_ID, routeId);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mCallback.dismissDialog();
- mActivityStarter.startActivity(launchIntent, true, controller);
+ startActivity(launchIntent, controller);
}
}
@@ -447,7 +451,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
if (launchIntent != null) {
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mCallback.dismissDialog();
- mActivityStarter.startActivity(launchIntent, true, controller);
+ startActivity(launchIntent, controller);
}
}
@@ -951,10 +955,10 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
deepLinkIntent.putExtra(
Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY,
PAGE_CONNECTED_DEVICES_KEY);
- mActivityStarter.startActivity(deepLinkIntent, true, controller);
+ startActivity(deepLinkIntent, controller);
return;
}
- mActivityStarter.startActivity(launchIntent, true, controller);
+ startActivity(launchIntent, controller);
}
void launchLeBroadcastNotifyDialog(View mediaOutputDialog, BroadcastSender broadcastSender,
@@ -998,6 +1002,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
mPowerExemptionManager,
mKeyGuardManager,
mFeatureFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
MediaOutputBroadcastDialog dialog = new MediaOutputBroadcastDialog(mContext, true,
broadcastSender, controller);
@@ -1244,6 +1249,13 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
return !device.isVolumeFixed();
}
+ private void startActivity(Intent intent, ActivityTransitionAnimator.Controller controller) {
+ // Media Output dialog can be shown from the volume panel. This makes sure the panel is
+ // closed when navigating to another activity, so it doesn't stays on top of it
+ mVolumePanelGlobalStateInteractor.setVisible(false);
+ mActivityStarter.startActivity(intent, true, controller);
+ }
+
@Override
public void onDevicesUpdated(List<NearbyDevice> nearbyDevices) throws RemoteException {
mNearbyDeviceInfoMap.clear();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java
index d5cd86ec0b76..c8cc6b5fdf93 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java
@@ -50,14 +50,18 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
import com.android.settingslib.media.LocalMediaManager;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.SysuiTestCaseExtKt;
import com.android.systemui.animation.DialogTransitionAnimator;
import com.android.systemui.broadcast.BroadcastSender;
import com.android.systemui.flags.FeatureFlags;
+import com.android.systemui.kosmos.Kosmos;
import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.volume.panel.domain.interactor.VolumePanelGlobalStateInteractor;
+import com.android.systemui.volume.panel.domain.interactor.VolumePanelGlobalStateInteractorKosmosKt;
import org.junit.Before;
import org.junit.Test;
@@ -73,6 +77,8 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
private static final String TEST_PACKAGE = "test_package";
+ private final Kosmos mKosmos = SysuiTestCaseExtKt.testKosmos(this);
+
// Mock
private MediaOutputBaseAdapter mMediaOutputBaseAdapter = mock(MediaOutputBaseAdapter.class);
private MediaController mMediaController = mock(MediaController.class);
@@ -122,6 +128,9 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
when(mMediaController.getPackageName()).thenReturn(TEST_PACKAGE);
mMediaControllers.add(mMediaController);
when(mMediaSessionManager.getActiveSessions(any())).thenReturn(mMediaControllers);
+ VolumePanelGlobalStateInteractor volumePanelGlobalStateInteractor =
+ VolumePanelGlobalStateInteractorKosmosKt.getVolumePanelGlobalStateInteractor(
+ mKosmos);
mMediaOutputController =
new MediaOutputController(
@@ -139,6 +148,7 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ volumePanelGlobalStateInteractor,
mUserTracker);
// Using a fake package will cause routing operations to fail, so we intercept
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java
index 87d224579e95..189a56145d27 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java
@@ -51,14 +51,18 @@ import com.android.settingslib.media.BluetoothMediaDevice;
import com.android.settingslib.media.LocalMediaManager;
import com.android.settingslib.media.MediaDevice;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.SysuiTestCaseExtKt;
import com.android.systemui.animation.DialogTransitionAnimator;
import com.android.systemui.broadcast.BroadcastSender;
import com.android.systemui.flags.FeatureFlags;
+import com.android.systemui.kosmos.Kosmos;
import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.volume.panel.domain.interactor.VolumePanelGlobalStateInteractor;
+import com.android.systemui.volume.panel.domain.interactor.VolumePanelGlobalStateInteractorKosmosKt;
import com.google.common.base.Strings;
@@ -81,6 +85,8 @@ public class MediaOutputBroadcastDialogTest extends SysuiTestCase {
private static final String BROADCAST_CODE_TEST = "112233";
private static final String BROADCAST_CODE_UPDATE_TEST = "11223344";
+ private final Kosmos mKosmos = SysuiTestCaseExtKt.testKosmos(this);
+
// Mock
private final MediaSessionManager mMediaSessionManager = mock(MediaSessionManager.class);
private final LocalBluetoothManager mLocalBluetoothManager = mock(LocalBluetoothManager.class);
@@ -123,6 +129,9 @@ public class MediaOutputBroadcastDialogTest extends SysuiTestCase {
when(mLocalBluetoothLeBroadcast.getProgramInfo()).thenReturn(BROADCAST_NAME_TEST);
when(mLocalBluetoothLeBroadcast.getBroadcastCode()).thenReturn(
BROADCAST_CODE_TEST.getBytes(StandardCharsets.UTF_8));
+ VolumePanelGlobalStateInteractor volumePanelGlobalStateInteractor =
+ VolumePanelGlobalStateInteractorKosmosKt.getVolumePanelGlobalStateInteractor(
+ mKosmos);
mMediaOutputController =
new MediaOutputController(
@@ -140,6 +149,7 @@ public class MediaOutputBroadcastDialogTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ volumePanelGlobalStateInteractor,
mUserTracker);
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
mMediaOutputBroadcastDialog = new MediaOutputBroadcastDialog(mContext, false,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java
index 856bc0b78215..714fad9d7478 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java
@@ -72,15 +72,19 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.media.LocalMediaManager;
import com.android.settingslib.media.MediaDevice;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.SysuiTestCaseExtKt;
import com.android.systemui.animation.ActivityTransitionAnimator;
import com.android.systemui.animation.DialogTransitionAnimator;
import com.android.systemui.flags.FeatureFlags;
+import com.android.systemui.kosmos.Kosmos;
import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.volume.panel.domain.interactor.VolumePanelGlobalStateInteractor;
+import com.android.systemui.volume.panel.domain.interactor.VolumePanelGlobalStateInteractorKosmosKt;
import com.google.common.collect.ImmutableList;
@@ -158,11 +162,16 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Mock
private UserTracker mUserTracker;
+ private final Kosmos mKosmos = SysuiTestCaseExtKt.testKosmos(this);
+
private FeatureFlags mFlags = mock(FeatureFlags.class);
private View mDialogLaunchView = mock(View.class);
private MediaOutputController.Callback mCallback = mock(MediaOutputController.Callback.class);
final Notification mNotification = mock(Notification.class);
+ private final VolumePanelGlobalStateInteractor mVolumePanelGlobalStateInteractor =
+ VolumePanelGlobalStateInteractorKosmosKt.getVolumePanelGlobalStateInteractor(
+ mKosmos);
private Context mSpyContext;
private String mPackageName = null;
@@ -194,6 +203,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(
mCachedBluetoothDeviceManager);
+
mMediaOutputController =
new MediaOutputController(
mSpyContext,
@@ -210,6 +220,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
mLocalMediaManager = spy(mMediaOutputController.mLocalMediaManager);
when(mLocalMediaManager.isPreferenceRouteListingExist()).thenReturn(false);
@@ -304,6 +315,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
mMediaOutputController.start(mCb);
@@ -346,6 +358,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
mMediaOutputController.start(mCb);
@@ -602,6 +615,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
testMediaOutputController.start(mCb);
reset(mCb);
@@ -636,6 +650,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
testMediaOutputController.start(mCb);
reset(mCb);
@@ -683,6 +698,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
LocalMediaManager mockLocalMediaManager = mock(LocalMediaManager.class);
@@ -710,6 +726,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
LocalMediaManager mockLocalMediaManager = mock(LocalMediaManager.class);
@@ -990,6 +1007,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
assertThat(mMediaOutputController.getNotificationIcon()).isNull();
@@ -1193,6 +1211,7 @@ public class MediaOutputControllerTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ mVolumePanelGlobalStateInteractor,
mUserTracker);
testMediaOutputController.setTemporaryAllowListExceptionIfNeeded(mMediaDevice2);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java
index f20b04ae0e5c..90c2930f8e49 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java
@@ -54,14 +54,18 @@ import com.android.settingslib.flags.Flags;
import com.android.settingslib.media.LocalMediaManager;
import com.android.settingslib.media.MediaDevice;
import com.android.systemui.SysuiTestCase;
+import com.android.systemui.SysuiTestCaseExtKt;
import com.android.systemui.animation.DialogTransitionAnimator;
import com.android.systemui.broadcast.BroadcastSender;
import com.android.systemui.flags.FeatureFlags;
+import com.android.systemui.kosmos.Kosmos;
import com.android.systemui.media.nearby.NearbyMediaDevicesManager;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.volume.panel.domain.interactor.VolumePanelGlobalStateInteractor;
+import com.android.systemui.volume.panel.domain.interactor.VolumePanelGlobalStateInteractorKosmosKt;
import org.junit.After;
import org.junit.Before;
@@ -84,6 +88,8 @@ public class MediaOutputDialogTest extends SysuiTestCase {
@Rule
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+ private final Kosmos mKosmos = SysuiTestCaseExtKt.testKosmos(this);
+
// Mock
private final MediaSessionManager mMediaSessionManager = mock(MediaSessionManager.class);
private MediaController mMediaController = mock(MediaController.class);
@@ -136,6 +142,9 @@ public class MediaOutputDialogTest extends SysuiTestCase {
when(mMediaSessionManager.getActiveSessionsForUser(any(),
Mockito.eq(userHandle))).thenReturn(
mMediaControllers);
+ VolumePanelGlobalStateInteractor volumePanelGlobalStateInteractor =
+ VolumePanelGlobalStateInteractorKosmosKt.getVolumePanelGlobalStateInteractor(
+ mKosmos);
mMediaOutputController =
new MediaOutputController(
@@ -153,6 +162,7 @@ public class MediaOutputDialogTest extends SysuiTestCase {
mPowerExemptionManager,
mKeyguardManager,
mFlags,
+ volumePanelGlobalStateInteractor,
mUserTracker);
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
mMediaOutputDialog = makeTestDialog(mMediaOutputController);