From 7b66209bca233c6a115a5ecdc59fe0620cbdd2f2 Mon Sep 17 00:00:00 2001 From: ibaker Date: Wed, 23 Oct 2024 07:01:13 -0700 Subject: [PATCH] Add missing overrides in `DefaultTrackSelector.Parameters.Builder` Also add a test for this to avoid missing any others in future. Also flesh out the existing test for the deprecated builder, to assert the return type is correctly updated. PiperOrigin-RevId: 688948768 --- .../trackselection/DefaultTrackSelector.java | 16 +++++++++ .../DefaultTrackSelectorTest.java | 34 ++++++++++++++++--- 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java index bbe66e8a2f..0e2b2526d8 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelector.java @@ -1320,6 +1320,13 @@ public class DefaultTrackSelector extends MappingTrackSelector return this; } + @CanIgnoreReturnValue + @Override + public Builder setAudioOffloadPreferences(AudioOffloadPreferences audioOffloadPreferences) { + super.setAudioOffloadPreferences(audioOffloadPreferences); + return this; + } + /** * Sets whether to allow adaptive audio selections where adaptation may not be completely * seamless. @@ -1421,6 +1428,15 @@ public class DefaultTrackSelector extends MappingTrackSelector return setIgnoredTextSelectionFlags(disabledTextTrackSelectionFlags); } + // Image + + @CanIgnoreReturnValue + @Override + public Builder setPrioritizeImageOverVideoEnabled(boolean isPrioritizeImageOverVideoEnabled) { + super.setPrioritizeImageOverVideoEnabled(isPrioritizeImageOverVideoEnabled); + return this; + } + // General @CanIgnoreReturnValue diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java index 4ef2a3de51..c743410de3 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java @@ -3038,12 +3038,32 @@ public final class DefaultTrackSelectorTest { assertThat(selectionOverrideFromBundle).isEqualTo(selectionOverrideToBundle); } + /** + * {@link DefaultTrackSelector.Parameters.Builder} must override every method in {@link + * TrackSelectionParameters.Builder} in order to 'fix' the return type to correctly allow chaining + * the method calls. + */ + @Test + public void parametersBuilderOverridesAllTrackSelectionParametersBuilderMethods() + throws Exception { + List methods = TestUtil.getPublicMethods(TrackSelectionParameters.Builder.class); + for (Method method : methods) { + Method declaredMethod = + Parameters.Builder.class.getDeclaredMethod(method.getName(), method.getParameterTypes()); + assertThat(declaredMethod.getDeclaringClass()).isEqualTo(Parameters.Builder.class); + if (method.getReturnType().equals(TrackSelectionParameters.Builder.class)) { + assertThat(declaredMethod.getReturnType()).isEqualTo(Parameters.Builder.class); + } + } + } + /** * The deprecated {@link DefaultTrackSelector.ParametersBuilder} is implemented by delegating to * an instance of {@link DefaultTrackSelector.Parameters.Builder}. However, it also extends * {@link TrackSelectionParameters.Builder}, and for the delegation-pattern to work correctly it * needs to override every setter method from the superclass (otherwise the setter won't be - * propagated to the delegate). This test ensures that invariant. + * propagated to the delegate). This test ensures that invariant. It also ensures the return type + * is updated to correctly allow chaining the method calls. * *

The test can be removed when the deprecated {@link DefaultTrackSelector.ParametersBuilder} * is removed. @@ -3054,11 +3074,15 @@ public final class DefaultTrackSelectorTest { throws Exception { List methods = TestUtil.getPublicMethods(TrackSelectionParameters.Builder.class); for (Method method : methods) { - assertThat( - DefaultTrackSelector.ParametersBuilder.class - .getDeclaredMethod(method.getName(), method.getParameterTypes()) - .getDeclaringClass()) + Method declaredMethod = + DefaultTrackSelector.ParametersBuilder.class.getDeclaredMethod( + method.getName(), method.getParameterTypes()); + assertThat(declaredMethod.getDeclaringClass()) .isEqualTo(DefaultTrackSelector.ParametersBuilder.class); + if (method.getReturnType().equals(TrackSelectionParameters.Builder.class)) { + assertThat(declaredMethod.getReturnType()) + .isEqualTo(DefaultTrackSelector.ParametersBuilder.class); + } } }