Loading media/java/android/media/flags/media_better_together.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,16 @@ flag { bug: "288580225" } flag { name: "enable_fix_for_empty_system_routes_crash" namespace: "media_better_together" description: "Fixes a bug causing SystemUI to crash due to an empty system routes list in the routing framework." bug: "357468728" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "enable_suggested_device_api" is_exported: true Loading services/core/java/com/android/server/media/LegacyDeviceRouteController.java +4 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.os.UserHandle; import android.util.Slog; import com.android.internal.R; import com.android.media.flags.Flags; import java.util.Collections; import java.util.List; Loading Loading @@ -123,7 +124,9 @@ import java.util.Objects; @Override public synchronized List<MediaRoute2Info> getAvailableRoutes() { return Collections.emptyList(); return Flags.enableFixForEmptySystemRoutesCrash() ? List.of(mDeviceRoute) : Collections.emptyList(); } @Override Loading services/tests/servicestests/src/com/android/server/media/LegacyDeviceRouteControllerTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -30,12 +30,17 @@ import android.media.AudioRoutesInfo; import android.media.IAudioRoutesObserver; import android.media.MediaRoute2Info; import android.os.RemoteException; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.text.TextUtils; import com.android.internal.R; import com.android.media.flags.Flags; import com.android.server.audio.AudioService; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; Loading @@ -48,6 +53,7 @@ import org.mockito.MockitoAnnotations; import java.util.Arrays; import java.util.Collection; import java.util.List; @RunWith(Enclosed.class) public class LegacyDeviceRouteControllerTest { Loading @@ -70,6 +76,11 @@ public class LegacyDeviceRouteControllerTest { @RunWith(JUnit4.class) public static class DefaultDeviceRouteValueTest { @Rule public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); @Mock private Context mContext; @Mock Loading Loading @@ -136,6 +147,23 @@ public class LegacyDeviceRouteControllerTest { .isTrue(); assertThat(actualMediaRoute.getVolume()).isEqualTo(VOLUME_DEFAULT_VALUE); } @RequiresFlagsEnabled(Flags.FLAG_ENABLE_FIX_FOR_EMPTY_SYSTEM_ROUTES_CRASH) @Test public void getAvailableRoutes_matchesSelectedRoute() { when(mResources.getText(R.string.default_audio_route_name)) .thenReturn(DEFAULT_ROUTE_NAME); when(mAudioService.startWatchingRoutes(any())).thenReturn(null); LegacyDeviceRouteController deviceRouteController = new LegacyDeviceRouteController( mContext, mAudioManager, mAudioService, mOnDeviceRouteChangedListener); MediaRoute2Info selectedRoute = deviceRouteController.getSelectedRoute(); assertThat(deviceRouteController.getAvailableRoutes()) .isEqualTo(List.of(selectedRoute)); } } @RunWith(Parameterized.class) Loading Loading
media/java/android/media/flags/media_better_together.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,16 @@ flag { bug: "288580225" } flag { name: "enable_fix_for_empty_system_routes_crash" namespace: "media_better_together" description: "Fixes a bug causing SystemUI to crash due to an empty system routes list in the routing framework." bug: "357468728" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "enable_suggested_device_api" is_exported: true Loading
services/core/java/com/android/server/media/LegacyDeviceRouteController.java +4 −1 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.os.UserHandle; import android.util.Slog; import com.android.internal.R; import com.android.media.flags.Flags; import java.util.Collections; import java.util.List; Loading Loading @@ -123,7 +124,9 @@ import java.util.Objects; @Override public synchronized List<MediaRoute2Info> getAvailableRoutes() { return Collections.emptyList(); return Flags.enableFixForEmptySystemRoutesCrash() ? List.of(mDeviceRoute) : Collections.emptyList(); } @Override Loading
services/tests/servicestests/src/com/android/server/media/LegacyDeviceRouteControllerTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -30,12 +30,17 @@ import android.media.AudioRoutesInfo; import android.media.IAudioRoutesObserver; import android.media.MediaRoute2Info; import android.os.RemoteException; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.text.TextUtils; import com.android.internal.R; import com.android.media.flags.Flags; import com.android.server.audio.AudioService; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; Loading @@ -48,6 +53,7 @@ import org.mockito.MockitoAnnotations; import java.util.Arrays; import java.util.Collection; import java.util.List; @RunWith(Enclosed.class) public class LegacyDeviceRouteControllerTest { Loading @@ -70,6 +76,11 @@ public class LegacyDeviceRouteControllerTest { @RunWith(JUnit4.class) public static class DefaultDeviceRouteValueTest { @Rule public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); @Mock private Context mContext; @Mock Loading Loading @@ -136,6 +147,23 @@ public class LegacyDeviceRouteControllerTest { .isTrue(); assertThat(actualMediaRoute.getVolume()).isEqualTo(VOLUME_DEFAULT_VALUE); } @RequiresFlagsEnabled(Flags.FLAG_ENABLE_FIX_FOR_EMPTY_SYSTEM_ROUTES_CRASH) @Test public void getAvailableRoutes_matchesSelectedRoute() { when(mResources.getText(R.string.default_audio_route_name)) .thenReturn(DEFAULT_ROUTE_NAME); when(mAudioService.startWatchingRoutes(any())).thenReturn(null); LegacyDeviceRouteController deviceRouteController = new LegacyDeviceRouteController( mContext, mAudioManager, mAudioService, mOnDeviceRouteChangedListener); MediaRoute2Info selectedRoute = deviceRouteController.getSelectedRoute(); assertThat(deviceRouteController.getAvailableRoutes()) .isEqualTo(List.of(selectedRoute)); } } @RunWith(Parameterized.class) Loading