summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/java/android/media/MediaRouter2.java2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java18
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java5
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java7
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java4
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java7
-rw-r--r--packages/SettingsLib/tests/integ/src/com/android/settingslib/media/InfoMediaManagerIntegTest.java11
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java3
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/NoOpInfoMediaManagerTest.java1
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaControlInteractorTest.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialogDelegate.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java14
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/controls/util/LocalMediaManagerFactory.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogManager.kt4
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogManager.kt30
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputSwitcherDialogUI.java4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBaseDialogTest.java21
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogTest.java21
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java194
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogReceiverTest.java29
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogTest.java21
22 files changed, 331 insertions, 119 deletions
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 5aa006bce000..c664d3d68b62 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -2713,7 +2713,7 @@ public final class MediaRouter2 {
List<RoutingSessionInfo> sessionInfos = getRoutingSessions();
RoutingSessionInfo targetSession = sessionInfos.get(sessionInfos.size() - 1);
- transfer(targetSession, route, Process.myUserHandle(), mContext.getPackageName());
+ transfer(targetSession, route, mClientUser, mContext.getPackageName());
}
@Override
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
index 9b1e4b7a633b..3e2987208444 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
@@ -52,6 +52,7 @@ import android.media.MediaRoute2Info;
import android.media.RouteListingPreference;
import android.media.RoutingSessionInfo;
import android.os.Build;
+import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;
@@ -131,6 +132,7 @@ public abstract class InfoMediaManager {
protected final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();
@NonNull protected final Context mContext;
@NonNull protected final String mPackageName;
+ @NonNull protected final UserHandle mUserHandle;
private final Collection<MediaDeviceCallback> mCallbacks = new CopyOnWriteArrayList<>();
private MediaDevice mCurrentConnectedDevice;
private final LocalBluetoothManager mBluetoothManager;
@@ -140,16 +142,19 @@ public abstract class InfoMediaManager {
/* package */ InfoMediaManager(
@NonNull Context context,
@NonNull String packageName,
+ @NonNull UserHandle userHandle,
@NonNull LocalBluetoothManager localBluetoothManager) {
mContext = context;
mBluetoothManager = localBluetoothManager;
mPackageName = packageName;
+ mUserHandle = userHandle;
}
/** Creates an instance of InfoMediaManager. */
public static InfoMediaManager createInstance(
Context context,
@Nullable String packageName,
+ @Nullable UserHandle userHandle,
LocalBluetoothManager localBluetoothManager) {
// The caller is only interested in system routes (headsets, built-in speakers, etc), and is
@@ -159,16 +164,23 @@ public abstract class InfoMediaManager {
packageName = context.getPackageName();
}
+ if (userHandle == null) {
+ userHandle = android.os.Process.myUserHandle();
+ }
+
if (Flags.useMediaRouter2ForInfoMediaManager()) {
try {
- return new RouterInfoMediaManager(context, packageName, localBluetoothManager);
+ return new RouterInfoMediaManager(
+ context, packageName, userHandle, localBluetoothManager);
} catch (PackageNotAvailableException ex) {
// TODO: b/293578081 - Propagate this exception to callers for proper handling.
Log.w(TAG, "Returning a no-op InfoMediaManager for package " + packageName);
- return new NoOpInfoMediaManager(context, packageName, localBluetoothManager);
+ return new NoOpInfoMediaManager(
+ context, packageName, userHandle, localBluetoothManager);
}
} else {
- return new ManagerInfoMediaManager(context, packageName, localBluetoothManager);
+ return new ManagerInfoMediaManager(
+ context, packageName, userHandle, localBluetoothManager);
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
index 63056b6dc8c3..0c2414c6a7a8 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
@@ -138,7 +138,10 @@ public class LocalMediaManager implements BluetoothCallback {
}
mInfoMediaManager =
- InfoMediaManager.createInstance(context, packageName, mLocalBluetoothManager);
+ // TODO: b/321969740 - Take the userHandle as a parameter and pass it through. The
+ // package name is not sufficient to unambiguously identify an app.
+ InfoMediaManager.createInstance(
+ context, packageName, /* userHandle */ null, mLocalBluetoothManager);
}
/**
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java
index 23063da747af..d621751a2c29 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/ManagerInfoMediaManager.java
@@ -21,6 +21,7 @@ import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.RouteListingPreference;
import android.media.RoutingSessionInfo;
+import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;
@@ -53,8 +54,9 @@ public class ManagerInfoMediaManager extends InfoMediaManager {
/* package */ ManagerInfoMediaManager(
Context context,
@NonNull String packageName,
+ @NonNull UserHandle userHandle,
LocalBluetoothManager localBluetoothManager) {
- super(context, packageName, localBluetoothManager);
+ super(context, packageName, userHandle, localBluetoothManager);
mRouterManager = MediaRouter2Manager.getInstance(context);
}
@@ -87,8 +89,7 @@ public class ManagerInfoMediaManager extends InfoMediaManager {
@Override
protected void transferToRoute(@NonNull MediaRoute2Info route) {
- // TODO: b/279555229 - provide real user handle of a caller.
- mRouterManager.transfer(mPackageName, route, android.os.Process.myUserHandle());
+ mRouterManager.transfer(mPackageName, route, mUserHandle);
}
@Override
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java
index cf11c6da737f..d2b018cd2299 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/NoOpInfoMediaManager.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.media.MediaRoute2Info;
import android.media.RouteListingPreference;
import android.media.RoutingSessionInfo;
+import android.os.UserHandle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -58,8 +59,9 @@ import java.util.List;
NoOpInfoMediaManager(
Context context,
@NonNull String packageName,
+ @NonNull UserHandle userHandle,
LocalBluetoothManager localBluetoothManager) {
- super(context, packageName, localBluetoothManager);
+ super(context, packageName, userHandle, localBluetoothManager);
}
@Override
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java
index 0dceebab13f8..045c60dd1514 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/RouterInfoMediaManager.java
@@ -25,7 +25,7 @@ import android.media.MediaRouter2Manager;
import android.media.RouteDiscoveryPreference;
import android.media.RouteListingPreference;
import android.media.RoutingSessionInfo;
-import android.os.Process;
+import android.os.UserHandle;
import android.text.TextUtils;
import androidx.annotation.NonNull;
@@ -70,15 +70,16 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
/* package */ RouterInfoMediaManager(
Context context,
@NonNull String packageName,
+ @NonNull UserHandle userHandle,
LocalBluetoothManager localBluetoothManager)
throws PackageNotAvailableException {
- super(context, packageName, localBluetoothManager);
+ super(context, packageName, userHandle, localBluetoothManager);
MediaRouter2 router = null;
if (Flags.enableCrossUserRoutingInMediaRouter2()) {
try {
- router = MediaRouter2.getInstance(context, packageName, Process.myUserHandle());
+ router = MediaRouter2.getInstance(context, packageName, userHandle);
} catch (IllegalArgumentException ex) {
// Do nothing
}
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/media/InfoMediaManagerIntegTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/media/InfoMediaManagerIntegTest.java
index f0185b95e8f4..3bd37a2c59bf 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/media/InfoMediaManagerIntegTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/media/InfoMediaManagerIntegTest.java
@@ -64,21 +64,23 @@ public class InfoMediaManagerIntegTest {
@RequiresFlagsEnabled(FLAG_USE_MEDIA_ROUTER2_FOR_INFO_MEDIA_MANAGER)
public void createInstance_withMR2FlagOn_returnsRouterInfoMediaManager() {
InfoMediaManager manager =
- InfoMediaManager.createInstance(mContext, mContext.getPackageName(), null);
+ InfoMediaManager.createInstance(
+ mContext, mContext.getPackageName(), mContext.getUser(), null);
assertThat(manager).isInstanceOf(RouterInfoMediaManager.class);
}
@Test
@RequiresFlagsEnabled(FLAG_USE_MEDIA_ROUTER2_FOR_INFO_MEDIA_MANAGER)
public void createInstance_withMR2FlagOn_withFakePackage_returnsNoOpInfoMediaManager() {
- InfoMediaManager manager = InfoMediaManager.createInstance(mContext, FAKE_PACKAGE, null);
+ InfoMediaManager manager =
+ InfoMediaManager.createInstance(mContext, FAKE_PACKAGE, null, null);
assertThat(manager).isInstanceOf(NoOpInfoMediaManager.class);
}
@Test
@RequiresFlagsEnabled(FLAG_USE_MEDIA_ROUTER2_FOR_INFO_MEDIA_MANAGER)
public void createInstance_withMR2FlagOn_withNullPackage_returnsRouterInfoMediaManager() {
- InfoMediaManager manager = InfoMediaManager.createInstance(mContext, null, null);
+ InfoMediaManager manager = InfoMediaManager.createInstance(mContext, null, null, null);
assertThat(manager).isInstanceOf(RouterInfoMediaManager.class);
}
@@ -86,7 +88,8 @@ public class InfoMediaManagerIntegTest {
@RequiresFlagsDisabled(FLAG_USE_MEDIA_ROUTER2_FOR_INFO_MEDIA_MANAGER)
public void createInstance_withMR2FlagOff_returnsManagerInfoMediaManager() {
InfoMediaManager manager =
- InfoMediaManager.createInstance(mContext, mContext.getPackageName(), null);
+ InfoMediaManager.createInstance(
+ mContext, mContext.getPackageName(), mContext.getUser(), null);
assertThat(manager).isInstanceOf(ManagerInfoMediaManager.class);
}
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
index d7938670c598..a4b87da9f7f6 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
@@ -144,7 +144,8 @@ public class InfoMediaManagerTest {
doReturn(mMediaSessionManager).when(mContext).getSystemService(
Context.MEDIA_SESSION_SERVICE);
mInfoMediaManager =
- new ManagerInfoMediaManager(mContext, TEST_PACKAGE_NAME, mLocalBluetoothManager);
+ new ManagerInfoMediaManager(
+ mContext, TEST_PACKAGE_NAME, mContext.getUser(), mLocalBluetoothManager);
mShadowRouter2Manager = ShadowRouter2Manager.getShadow();
mInfoMediaManager.mRouterManager = MediaRouter2Manager.getInstance(mContext);
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/NoOpInfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/NoOpInfoMediaManagerTest.java
index d630301a083b..908f50deea78 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/NoOpInfoMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/NoOpInfoMediaManagerTest.java
@@ -46,6 +46,7 @@ public class NoOpInfoMediaManagerTest {
new NoOpInfoMediaManager(
mContext,
/* packageName */ "FAKE_PACKAGE_NAME",
+ mContext.getUser(),
/* localBluetoothManager */ null);
}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaControlInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaControlInteractorTest.kt
index 1cba185600cc..d9224d7e3421 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaControlInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/media/controls/domain/interactor/MediaControlInteractorTest.kt
@@ -187,7 +187,12 @@ class MediaControlInteractorTest : SysuiTestCase() {
underTest.startMediaOutputDialog(expandable, PACKAGE_NAME)
verify(kosmos.mediaOutputDialogManager)
- .createAndShowWithController(eq(PACKAGE_NAME), eq(true), eq(dialogTransitionController))
+ .createAndShowWithController(
+ eq(PACKAGE_NAME),
+ eq(true),
+ eq(dialogTransitionController),
+ eq(null)
+ )
}
@Test
diff --git a/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialogDelegate.java b/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialogDelegate.java
index 66aeda63e222..207f7dbb5816 100644
--- a/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialogDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/bluetooth/BroadcastDialogDelegate.java
@@ -217,10 +217,13 @@ public class BroadcastDialogDelegate implements SystemUIDialog.Delegate {
mSwitchBroadcast.setText(mContext.getString(
R.string.bt_le_audio_broadcast_dialog_switch_app, switchBroadcastApp), null);
mSwitchBroadcast.setOnClickListener((view) -> startSwitchBroadcast());
- changeOutput.setOnClickListener((view) -> {
- mMediaOutputDialogManager.createAndShow(mOutputPackageName, true, null);
- dialog.dismiss();
- });
+ changeOutput.setOnClickListener(
+ (view) -> {
+ // TODO: b/321969740 - Take the userHandle as a parameter and pass it through.
+ // The package name is not sufficient to unambiguously identify an app.
+ mMediaOutputDialogManager.createAndShow(mOutputPackageName, true, null, null);
+ dialog.dismiss();
+ });
cancelBtn.setOnClickListener((view) -> {
if (DEBUG) {
Log.d(TAG, "BroadcastDialog dismiss.");
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
index 1a56a9b1dda6..bd3893bd2701 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaControlPanel.java
@@ -738,8 +738,11 @@ public class MediaControlPanel {
mPackageName, mMediaViewHolder.getSeamlessButton());
} else {
mLogger.logOpenOutputSwitcher(mUid, mPackageName, mInstanceId);
- mMediaOutputDialogManager.createAndShow(mPackageName, true,
- mMediaViewHolder.getSeamlessButton());
+ // TODO: b/321969740 - Populate the userHandle parameter. The user
+ // handle is necessary to disambiguate the same package running on
+ // different users.
+ mMediaOutputDialogManager.createAndShow(
+ mPackageName, true, mMediaViewHolder.getSeamlessButton(), null);
}
} else {
mLogger.logOpenOutputSwitcher(mUid, mPackageName, mInstanceId);
@@ -767,8 +770,11 @@ public class MediaControlPanel {
Log.w(TAG, "Device pending intent is not an activity.");
}
} else {
- mMediaOutputDialogManager.createAndShow(mPackageName, true,
- mMediaViewHolder.getSeamlessButton());
+ // TODO: b/321969740 - Populate the userHandle parameter. The user
+ // handle is necessary to disambiguate the same package running on
+ // different users.
+ mMediaOutputDialogManager.createAndShow(
+ mPackageName, true, mMediaViewHolder.getSeamlessButton(), null);
}
}
});
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/util/LocalMediaManagerFactory.kt b/packages/SystemUI/src/com/android/systemui/media/controls/util/LocalMediaManagerFactory.kt
index 452cb7e29f20..ff8e903b6637 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/util/LocalMediaManagerFactory.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/util/LocalMediaManagerFactory.kt
@@ -31,8 +31,9 @@ constructor(
) {
/** Creates a [LocalMediaManager] for the given package. */
fun create(packageName: String?): LocalMediaManager {
- return InfoMediaManager.createInstance(context, packageName, localBluetoothManager).run {
- LocalMediaManager(context, localBluetoothManager, this, packageName)
- }
+ // TODO: b/321969740 - Populate the userHandle parameter in InfoMediaManager. The user
+ // handle is necessary to disambiguate the same package running on different users.
+ return InfoMediaManager.createInstance(context, packageName, null, localBluetoothManager)
+ .run { LocalMediaManager(context, localBluetoothManager, this, packageName) }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogManager.kt b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogManager.kt
index 54d175c6a110..06267e243456 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBroadcastDialogManager.kt
@@ -38,7 +38,9 @@ constructor(
// Dismiss the previous dialog, if any.
mediaOutputBroadcastDialog?.dismiss()
- val controller = mediaOutputControllerFactory.create(packageName)
+ // TODO: b/321969740 - Populate the userHandle parameter. The user handle is necessary to
+ // disambiguate the same package running on different users.
+ val controller = mediaOutputControllerFactory.create(packageName, /* userHandle= */ null)
val dialog =
MediaOutputBroadcastDialog(context, aboveStatusBar, broadcastSender, controller)
mediaOutputBroadcastDialog = dialog
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 4db89d18ef7d..d6ca32079b09 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java
@@ -124,6 +124,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
private static final String ALLOWLIST_REASON = "mediaoutput:remote_transfer";
private final String mPackageName;
+ private final UserHandle mUserHandle;
private final Context mContext;
private final MediaSessionManager mMediaSessionManager;
private final LocalBluetoothManager mLocalBluetoothManager;
@@ -177,6 +178,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
public MediaOutputController(
Context context,
@Assisted String packageName,
+ @Assisted @Nullable UserHandle userHandle,
MediaSessionManager mediaSessionManager,
@Nullable LocalBluetoothManager lbm,
ActivityStarter starter,
@@ -190,6 +192,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
UserTracker userTracker) {
mContext = context;
mPackageName = packageName;
+ mUserHandle = userHandle;
mMediaSessionManager = mediaSessionManager;
mLocalBluetoothManager = lbm;
mActivityStarter = starter;
@@ -199,7 +202,8 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
mKeyGuardManager = keyGuardManager;
mFeatureFlags = featureFlags;
mUserTracker = userTracker;
- InfoMediaManager imm = InfoMediaManager.createInstance(mContext, packageName, lbm);
+ InfoMediaManager imm =
+ InfoMediaManager.createInstance(mContext, packageName, userHandle, lbm);
mLocalMediaManager = new LocalMediaManager(mContext, lbm, imm, packageName);
mMetricLogger = new MediaOutputMetricLogger(mContext, mPackageName);
mDialogTransitionAnimator = dialogTransitionAnimator;
@@ -231,7 +235,7 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
@AssistedFactory
public interface Factory {
/** Construct a MediaOutputController */
- MediaOutputController create(String packageName);
+ MediaOutputController create(String packageName, UserHandle userHandle);
}
protected void start(@NonNull Callback cb) {
@@ -946,11 +950,22 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
}
void launchMediaOutputBroadcastDialog(View mediaOutputDialog, BroadcastSender broadcastSender) {
- MediaOutputController controller = new MediaOutputController(mContext, mPackageName,
- mMediaSessionManager, mLocalBluetoothManager, mActivityStarter,
- mNotifCollection, mDialogTransitionAnimator, mNearbyMediaDevicesManager,
- mAudioManager, mPowerExemptionManager, mKeyGuardManager, mFeatureFlags,
- mUserTracker);
+ MediaOutputController controller =
+ new MediaOutputController(
+ mContext,
+ mPackageName,
+ mUserHandle,
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mActivityStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyGuardManager,
+ mFeatureFlags,
+ mUserTracker);
MediaOutputBroadcastDialog dialog = new MediaOutputBroadcastDialog(mContext, true,
broadcastSender, controller);
dialog.show();
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogManager.kt b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogManager.kt
index e7816a40bb5e..04d1492ff656 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogManager.kt
@@ -17,6 +17,7 @@
package com.android.systemui.media.dialog
import android.content.Context
+import android.os.UserHandle
import android.view.View
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.logging.UiEventLogger
@@ -41,7 +42,15 @@ constructor(
}
/** Creates a [MediaOutputDialog] for the given package. */
- open fun createAndShow(packageName: String, aboveStatusBar: Boolean, view: View? = null) {
+ // TODO: b/321969740 - Make the userHandle non-optional, and place the parameter next to the
+ // package name. The user handle is necessary to disambiguate the same package running on
+ // different users.
+ open fun createAndShow(
+ packageName: String,
+ aboveStatusBar: Boolean,
+ view: View? = null,
+ userHandle: UserHandle? = null
+ ) {
createAndShowWithController(
packageName,
aboveStatusBar,
@@ -55,20 +64,26 @@ constructor(
)
)
},
+ userHandle = userHandle,
)
}
/** Creates a [MediaOutputDialog] for the given package. */
+ // TODO: b/321969740 - Make the userHandle non-optional, and place the parameter next to the
+ // package name. The user handle is necessary to disambiguate the same package running on
+ // different users.
open fun createAndShowWithController(
packageName: String,
aboveStatusBar: Boolean,
controller: DialogTransitionAnimator.Controller?,
+ userHandle: UserHandle? = null,
) {
createAndShow(
packageName,
aboveStatusBar,
dialogTransitionAnimatorController = controller,
- includePlaybackAndAppMetadata = true
+ includePlaybackAndAppMetadata = true,
+ userHandle = userHandle,
)
}
@@ -79,20 +94,25 @@ constructor(
packageName = null,
aboveStatusBar = false,
dialogTransitionAnimatorController = null,
- includePlaybackAndAppMetadata = false
+ includePlaybackAndAppMetadata = false,
+ userHandle = null,
)
}
+ // TODO: b/321969740 - Make the userHandle non-optional, and place the parameter next to the
+ // package name. The user handle is necessary to disambiguate the same package running on
+ // different users.
private fun createAndShow(
packageName: String?,
aboveStatusBar: Boolean,
dialogTransitionAnimatorController: DialogTransitionAnimator.Controller?,
- includePlaybackAndAppMetadata: Boolean = true
+ includePlaybackAndAppMetadata: Boolean = true,
+ userHandle: UserHandle? = null,
) {
// Dismiss the previous dialog, if any.
mediaOutputDialog?.dismiss()
- val controller = mediaOutputControllerFactory.create(packageName)
+ val controller = mediaOutputControllerFactory.create(packageName, userHandle)
val mediaOutputDialog =
MediaOutputDialog(
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputSwitcherDialogUI.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputSwitcherDialogUI.java
index da852348b4e6..9cc288899d45 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputSwitcherDialogUI.java
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputSwitcherDialogUI.java
@@ -55,8 +55,8 @@ public class MediaOutputSwitcherDialogUI implements CoreStartable, CommandQueue.
@MainThread
public void showMediaOutputSwitcher(String packageName, UserHandle userHandle) {
if (!TextUtils.isEmpty(packageName)) {
- // TODO: b/279555229 - Pass the userHandle into the output dialog manager.
- mMediaOutputDialogManager.createAndShow(packageName, false, null);
+ mMediaOutputDialogManager.createAndShow(
+ packageName, /* aboveStatusBar= */ false, /* view= */ null, userHandle);
} else {
Log.e(TAG, "Unable to launch media output dialog. Package name is empty.");
}
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 ca403e0addec..9bb21f020be8 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
@@ -123,11 +123,22 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
mMediaControllers.add(mMediaController);
when(mMediaSessionManager.getActiveSessions(any())).thenReturn(mMediaControllers);
- mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ mMediaOutputController =
+ new MediaOutputController(
+ mContext,
+ TEST_PACKAGE,
+ mContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
// Using a fake package will cause routing operations to fail, so we intercept
// scanning-related operations.
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 c9eb67e070ab..2e6388ae3914 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
@@ -124,11 +124,22 @@ public class MediaOutputBroadcastDialogTest extends SysuiTestCase {
when(mLocalBluetoothLeBroadcast.getBroadcastCode()).thenReturn(
BROADCAST_CODE_TEST.getBytes(StandardCharsets.UTF_8));
- mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ mMediaOutputController =
+ new MediaOutputController(
+ mContext,
+ TEST_PACKAGE,
+ mContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
mMediaOutputBroadcastDialog = new MediaOutputBroadcastDialog(mContext, false,
mBroadcastSender, mMediaOutputController);
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 980eb5948615..4eb00385f857 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
@@ -194,11 +194,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
when(mLocalBluetoothManager.getCachedDeviceManager()).thenReturn(
mCachedBluetoothDeviceManager);
- mMediaOutputController = new MediaOutputController(mSpyContext, mPackageName,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ mMediaOutputController =
+ new MediaOutputController(
+ mSpyContext,
+ mPackageName,
+ mContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
mLocalMediaManager = spy(mMediaOutputController.mLocalMediaManager);
when(mLocalMediaManager.isPreferenceRouteListingExist()).thenReturn(false);
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
@@ -276,11 +287,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void start_withoutPackageName_verifyMediaControllerInit() {
- mMediaOutputController = new MediaOutputController(mSpyContext, null,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ mMediaOutputController =
+ new MediaOutputController(
+ mSpyContext,
+ null,
+ mContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
mMediaOutputController.start(mCb);
@@ -306,11 +328,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void stop_withoutPackageName_verifyMediaControllerDeinit() {
- mMediaOutputController = new MediaOutputController(mSpyContext, null,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ mMediaOutputController =
+ new MediaOutputController(
+ mSpyContext,
+ null,
+ mSpyContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
mMediaOutputController.start(mCb);
@@ -550,12 +583,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void getAppSourceName_packageNameIsNull_returnsNull() {
- MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
- "",
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ MediaOutputController testMediaOutputController =
+ new MediaOutputController(
+ mSpyContext,
+ "",
+ mSpyContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
testMediaOutputController.start(mCb);
reset(mCb);
@@ -573,12 +616,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void getNotificationSmallIcon_packageNameIsNull_returnsNull() {
- MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
- "",
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ MediaOutputController testMediaOutputController =
+ new MediaOutputController(
+ mSpyContext,
+ "",
+ mSpyContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
testMediaOutputController.start(mCb);
reset(mCb);
@@ -609,12 +662,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void addDeviceToPlayMedia_callsLocalMediaManager() {
- MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
- null,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ MediaOutputController testMediaOutputController =
+ new MediaOutputController(
+ mSpyContext,
+ null,
+ mSpyContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
LocalMediaManager mockLocalMediaManager = mock(LocalMediaManager.class);
testMediaOutputController.mLocalMediaManager = mockLocalMediaManager;
@@ -625,12 +688,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void removeDeviceFromPlayMedia_callsLocalMediaManager() {
- MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
- null,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ MediaOutputController testMediaOutputController =
+ new MediaOutputController(
+ mSpyContext,
+ null,
+ mSpyContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
LocalMediaManager mockLocalMediaManager = mock(LocalMediaManager.class);
testMediaOutputController.mLocalMediaManager = mockLocalMediaManager;
@@ -894,11 +967,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void getNotificationLargeIcon_withoutPackageName_returnsNull() {
- mMediaOutputController = new MediaOutputController(mSpyContext, null,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ mMediaOutputController =
+ new MediaOutputController(
+ mSpyContext,
+ null,
+ mSpyContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
assertThat(mMediaOutputController.getNotificationIcon()).isNull();
}
@@ -1085,12 +1169,22 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void setTemporaryAllowListExceptionIfNeeded_packageNameIsNull_NoAction() {
- MediaOutputController testMediaOutputController = new MediaOutputController(mSpyContext,
- null,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ MediaOutputController testMediaOutputController =
+ new MediaOutputController(
+ mSpyContext,
+ null,
+ mSpyContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
testMediaOutputController.setTemporaryAllowListExceptionIfNeeded(mMediaDevice2);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogReceiverTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogReceiverTest.java
index 83def8e47651..3b6a88af1ee0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogReceiverTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputDialogReceiverTest.java
@@ -18,6 +18,7 @@ package com.android.systemui.media.dialog;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
@@ -61,7 +62,7 @@ public class MediaOutputDialogReceiverTest extends SysuiTestCase {
mMediaOutputDialogReceiver.onReceive(getContext(), intent);
verify(mMockMediaOutputDialogManager, times(1))
- .createAndShow(getContext().getPackageName(), false, null);
+ .createAndShow(eq(getContext().getPackageName()), eq(false), any(), any());
verify(mMockMediaOutputBroadcastDialogManager, never())
.createAndShow(any(), anyBoolean(), any());
}
@@ -72,7 +73,8 @@ public class MediaOutputDialogReceiverTest extends SysuiTestCase {
intent.putExtra("Wrong Package Name Key", getContext().getPackageName());
mMediaOutputDialogReceiver.onReceive(getContext(), intent);
- verify(mMockMediaOutputDialogManager, never()).createAndShow(any(), anyBoolean(), any());
+ verify(mMockMediaOutputDialogManager, never())
+ .createAndShow(any(), anyBoolean(), any(), any());
verify(mMockMediaOutputBroadcastDialogManager, never())
.createAndShow(any(), anyBoolean(), any());
}
@@ -82,7 +84,8 @@ public class MediaOutputDialogReceiverTest extends SysuiTestCase {
Intent intent = new Intent(MediaOutputConstants.ACTION_LAUNCH_MEDIA_OUTPUT_DIALOG);
mMediaOutputDialogReceiver.onReceive(getContext(), intent);
- verify(mMockMediaOutputDialogManager, never()).createAndShow(any(), anyBoolean(), any());
+ verify(mMockMediaOutputDialogManager, never())
+ .createAndShow(any(), anyBoolean(), any(), any());
verify(mMockMediaOutputBroadcastDialogManager, never())
.createAndShow(any(), anyBoolean(), any());
}
@@ -95,7 +98,8 @@ public class MediaOutputDialogReceiverTest extends SysuiTestCase {
intent.putExtra(MediaOutputConstants.EXTRA_PACKAGE_NAME, getContext().getPackageName());
mMediaOutputDialogReceiver.onReceive(getContext(), intent);
- verify(mMockMediaOutputDialogManager, never()).createAndShow(any(), anyBoolean(), any());
+ verify(mMockMediaOutputDialogManager, never())
+ .createAndShow(any(), anyBoolean(), any(), any());
verify(mMockMediaOutputBroadcastDialogManager, never())
.createAndShow(any(), anyBoolean(), any());
}
@@ -108,9 +112,10 @@ public class MediaOutputDialogReceiverTest extends SysuiTestCase {
intent.putExtra(MediaOutputConstants.EXTRA_PACKAGE_NAME, getContext().getPackageName());
mMediaOutputDialogReceiver.onReceive(getContext(), intent);
- verify(mMockMediaOutputDialogManager, never()).createAndShow(any(), anyBoolean(), any());
+ verify(mMockMediaOutputDialogManager, never())
+ .createAndShow(any(), anyBoolean(), any(), any());
verify(mMockMediaOutputBroadcastDialogManager, times(1))
- .createAndShow(getContext().getPackageName(), true, null);
+ .createAndShow(eq(getContext().getPackageName()), eq(true), any());
}
@Test
@@ -121,7 +126,8 @@ public class MediaOutputDialogReceiverTest extends SysuiTestCase {
intent.putExtra("Wrong Package Name Key", getContext().getPackageName());
mMediaOutputDialogReceiver.onReceive(getContext(), intent);
- verify(mMockMediaOutputDialogManager, never()).createAndShow(any(), anyBoolean(), any());
+ verify(mMockMediaOutputDialogManager, never())
+ .createAndShow(any(), anyBoolean(), any(), any());
verify(mMockMediaOutputBroadcastDialogManager, never())
.createAndShow(any(), anyBoolean(), any());
}
@@ -133,7 +139,8 @@ public class MediaOutputDialogReceiverTest extends SysuiTestCase {
MediaOutputConstants.ACTION_LAUNCH_MEDIA_OUTPUT_BROADCAST_DIALOG);
mMediaOutputDialogReceiver.onReceive(getContext(), intent);
- verify(mMockMediaOutputDialogManager, never()).createAndShow(any(), anyBoolean(), any());
+ verify(mMockMediaOutputDialogManager, never())
+ .createAndShow(any(), anyBoolean(), any(), any());
verify(mMockMediaOutputBroadcastDialogManager, never())
.createAndShow(any(), anyBoolean(), any());
}
@@ -145,7 +152,8 @@ public class MediaOutputDialogReceiverTest extends SysuiTestCase {
intent.putExtra(MediaOutputConstants.EXTRA_PACKAGE_NAME, getContext().getPackageName());
mMediaOutputDialogReceiver.onReceive(getContext(), intent);
- verify(mMockMediaOutputDialogManager, never()).createAndShow(any(), anyBoolean(), any());
+ verify(mMockMediaOutputDialogManager, never())
+ .createAndShow(any(), anyBoolean(), any(), any());
verify(mMockMediaOutputBroadcastDialogManager, never())
.createAndShow(any(), anyBoolean(), any());
}
@@ -155,7 +163,8 @@ public class MediaOutputDialogReceiverTest extends SysuiTestCase {
Intent intent = new Intent("UnKnown Action");
mMediaOutputDialogReceiver.onReceive(getContext(), intent);
- verify(mMockMediaOutputDialogManager, never()).createAndShow(any(), anyBoolean(), any());
+ verify(mMockMediaOutputDialogManager, never())
+ .createAndShow(any(), anyBoolean(), any(), any());
verify(mMockMediaOutputBroadcastDialogManager, never())
.createAndShow(any(), anyBoolean(), any());
}
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 84300da82a30..cdef9644efa9 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
@@ -137,11 +137,22 @@ public class MediaOutputDialogTest extends SysuiTestCase {
Mockito.eq(userHandle))).thenReturn(
mMediaControllers);
- mMediaOutputController = new MediaOutputController(mContext, TEST_PACKAGE,
- mMediaSessionManager, mLocalBluetoothManager, mStarter,
- mNotifCollection, mDialogTransitionAnimator,
- mNearbyMediaDevicesManager, mAudioManager, mPowerExemptionManager,
- mKeyguardManager, mFlags, mUserTracker);
+ mMediaOutputController =
+ new MediaOutputController(
+ mContext,
+ TEST_PACKAGE,
+ mContext.getUser(),
+ mMediaSessionManager,
+ mLocalBluetoothManager,
+ mStarter,
+ mNotifCollection,
+ mDialogTransitionAnimator,
+ mNearbyMediaDevicesManager,
+ mAudioManager,
+ mPowerExemptionManager,
+ mKeyguardManager,
+ mFlags,
+ mUserTracker);
mMediaOutputController.mLocalMediaManager = mLocalMediaManager;
mMediaOutputDialog = makeTestDialog(mMediaOutputController);
mMediaOutputDialog.show();