Merge "Inject mocks in RemoteVolumeControllerTest via constructor" into main
diff --git a/src/com/android/settings/notification/RemoteVolumeGroupController.java b/src/com/android/settings/notification/RemoteVolumeGroupController.java
index 50f9ed5..919b6d0 100644
--- a/src/com/android/settings/notification/RemoteVolumeGroupController.java
+++ b/src/com/android/settings/notification/RemoteVolumeGroupController.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.notification;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.content.Intent;
 import android.media.MediaRouter2Manager;
@@ -53,6 +55,7 @@
     @VisibleForTesting
     static final String SWITCHER_PREFIX = "OUTPUT_SWITCHER";
 
+    @Nullable
     private PreferenceCategory mPreferenceCategory;
     private final List<RoutingSessionInfo> mRoutingSessionInfos = new ArrayList<>();
 
@@ -61,6 +64,7 @@
     @VisibleForTesting
     MediaRouter2Manager mRouterManager;
 
+    // Called via reflection from BasePreferenceController#createInstance().
     public RemoteVolumeGroupController(Context context, String preferenceKey) {
         super(context, preferenceKey);
         if (mLocalMediaManager == null) {
@@ -71,6 +75,19 @@
         mRouterManager = MediaRouter2Manager.getInstance(context);
     }
 
+    @VisibleForTesting
+    /* package */ RemoteVolumeGroupController(
+            @NonNull Context context,
+            @NonNull String preferenceKey,
+            @NonNull LocalMediaManager localMediaManager,
+            @NonNull MediaRouter2Manager mediaRouter2Manager) {
+        super(context, preferenceKey);
+        mLocalMediaManager = localMediaManager;
+        mRouterManager = mediaRouter2Manager;
+        mLocalMediaManager.registerCallback(this);
+        mLocalMediaManager.startScan();
+    }
+
     @Override
     public int getAvailabilityStatus() {
         if (mRoutingSessionInfos.isEmpty()) {
diff --git a/tests/robotests/src/com/android/settings/notification/RemoteVolumeGroupControllerTest.java b/tests/robotests/src/com/android/settings/notification/RemoteVolumeGroupControllerTest.java
index 1e42e18..06bd90b 100644
--- a/tests/robotests/src/com/android/settings/notification/RemoteVolumeGroupControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/RemoteVolumeGroupControllerTest.java
@@ -103,9 +103,9 @@
         mContext = spy(RuntimeEnvironment.application);
         doReturn(mMediaSessionManager).when(mContext).getSystemService(
                 Context.MEDIA_SESSION_SERVICE);
-        mController = new RemoteVolumeGroupController(mContext, KEY_REMOTE_VOLUME_GROUP);
-        mController.mLocalMediaManager = mLocalMediaManager;
-        mController.mRouterManager = mRouterManager;
+        mController =
+                new RemoteVolumeGroupController(
+                        mContext, KEY_REMOTE_VOLUME_GROUP, mLocalMediaManager, mRouterManager);
         mPreferenceCategory = spy(new PreferenceCategory(mContext));
         mPreferenceCategory.setKey(mController.getPreferenceKey());