summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Santiago Seifert <aquilescanta@google.com> 2024-01-22 15:59:23 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-01-22 15:59:23 +0000
commitdb832e69b982bd51774ea3c3018fd706a6779324 (patch)
tree394f9af27a2a70bf59b8900b91385bb660253b7f
parent83b4fe61ddc727256515e407a6e4666394b3e8e2 (diff)
parent4890fa4d788823184d4d5c76f7bc2041a86d3ac0 (diff)
Merge changes Icf928948,I05a1f851 into main
* changes: Fix Output Switcher "multiple selected routes" Prepare MOControllerTest for change in PhoneMediaDevice id assignment
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java11
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java19
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java24
3 files changed, 53 insertions, 1 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
index d6f1eab442fa..15f33d2cff42 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
@@ -229,6 +229,17 @@ public class PhoneMediaDevice extends MediaDevice {
@SuppressWarnings("NewApi")
@Override
public String getId() {
+ if (com.android.media.flags.Flags.enableAudioPoliciesDeviceAndBluetoothController()) {
+ // Note: be careful when removing this flag. Instead of just removing it, you might want
+ // to replace it with SDK_INT >= 35. Explanation: The presence of SDK checks in settings
+ // lib suggests that a mainline component may depend on this code. Which means removing
+ // this "if" (and using always the route info id) could mean a regression on mainline
+ // code running on a device that's running API 34 or older. Unfortunately, we cannot
+ // check the API level at the moment of writing this code because the API level has not
+ // been bumped, yet.
+ return mRouteInfo.getId();
+ }
+
String id;
switch (mRouteInfo.getType()) {
case TYPE_WIRED_HEADSET:
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java
index 1746befbfa4d..ceba9be70487 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java
@@ -31,10 +31,15 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.media.MediaRoute2Info;
+import android.platform.test.annotations.DisableFlags;
+import android.platform.test.annotations.EnableFlags;
+import android.platform.test.flag.junit.SetFlagsRule;
+import com.android.media.flags.Flags;
import com.android.settingslib.R;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -45,6 +50,8 @@ import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class PhoneMediaDeviceTest {
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
@Mock
private MediaRoute2Info mInfo;
@@ -110,8 +117,18 @@ public class PhoneMediaDeviceTest {
.isEqualTo(mContext.getString(R.string.media_transfer_this_device_name));
}
+ @EnableFlags(Flags.FLAG_ENABLE_AUDIO_POLICIES_DEVICE_AND_BLUETOOTH_CONTROLLER)
+ @Test
+ public void getId_whenAdvancedWiredRoutingEnabled_returnCorrectId() {
+ String fakeId = "foo";
+ when(mInfo.getId()).thenReturn(fakeId);
+
+ assertThat(mPhoneMediaDevice.getId()).isEqualTo(fakeId);
+ }
+
+ @DisableFlags(Flags.FLAG_ENABLE_AUDIO_POLICIES_DEVICE_AND_BLUETOOTH_CONTROLLER)
@Test
- public void getId_returnCorrectId() {
+ public void getId_whenAdvancedWiredRoutingDisabled_returnCorrectId() {
when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADPHONES);
assertThat(mPhoneMediaDevice.getId())
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 72847a6b6c45..c6cfabc61300 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
@@ -414,6 +414,18 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void onDeviceListUpdate_verifyDeviceListCallback() {
+ // This test relies on mMediaOutputController.start being called while the selected device
+ // list has exactly one item, and that item's id is:
+ // - Different from both ids in mMediaDevices.
+ // - Different from the id of the route published by the device under test (usually the
+ // built-in speakers).
+ // So mock the selected device to respect these two preconditions.
+ MediaDevice mockSelectedMediaDevice = Mockito.mock(MediaDevice.class);
+ when(mockSelectedMediaDevice.getId()).thenReturn(TEST_DEVICE_3_ID);
+ doReturn(List.of(mockSelectedMediaDevice))
+ .when(mLocalMediaManager)
+ .getSelectedMediaDevice();
+
mMediaOutputController.start(mCb);
reset(mCb);
@@ -434,6 +446,18 @@ public class MediaOutputControllerTest extends SysuiTestCase {
@Test
public void advanced_onDeviceListUpdateWithConnectedDeviceRemote_verifyItemSize() {
+ // This test relies on mMediaOutputController.start being called while the selected device
+ // list has exactly one item, and that item's id is:
+ // - Different from both ids in mMediaDevices.
+ // - Different from the id of the route published by the device under test (usually the
+ // built-in speakers).
+ // So mock the selected device to respect these two preconditions.
+ MediaDevice mockSelectedMediaDevice = Mockito.mock(MediaDevice.class);
+ when(mockSelectedMediaDevice.getId()).thenReturn(TEST_DEVICE_3_ID);
+ doReturn(List.of(mockSelectedMediaDevice))
+ .when(mLocalMediaManager)
+ .getSelectedMediaDevice();
+
when(mMediaDevice1.getFeatures()).thenReturn(
ImmutableList.of(MediaRoute2Info.FEATURE_REMOTE_PLAYBACK));
when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(mMediaDevice1);