mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Work around SurfaceView creation issues on API<26 for tests
PiperOrigin-RevId: 731643287
This commit is contained in:
parent
addf01b9a8
commit
a3c9060daa
@ -24,6 +24,7 @@ import androidx.media3.common.TrackSelectionParameters;
|
||||
import androidx.media3.exoplayer.upstream.DefaultBandwidthMeter;
|
||||
import androidx.media3.exoplayer.util.EventLogger;
|
||||
import androidx.media3.test.utils.BinderStressCreator;
|
||||
import androidx.media3.test.utils.TestUtil;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.filters.SdkSuppress;
|
||||
@ -41,7 +42,7 @@ public class ExoPlayerBinderStressTest {
|
||||
@Test
|
||||
public void binderStressTest() throws Exception {
|
||||
Context context = ApplicationProvider.getApplicationContext();
|
||||
SurfaceView surfaceView = new SurfaceView(context);
|
||||
SurfaceView surfaceView = TestUtil.createSurfaceView(context);
|
||||
|
||||
BinderStressCreator.verifyNoSystemBinderCalls(
|
||||
/* systemUnderTest= */ () -> {
|
||||
|
@ -27,6 +27,7 @@ import androidx.media3.exoplayer.ExoPlayer;
|
||||
import androidx.media3.exoplayer.upstream.DefaultBandwidthMeter;
|
||||
import androidx.media3.exoplayer.util.EventLogger;
|
||||
import androidx.media3.test.utils.BinderStressCreator;
|
||||
import androidx.media3.test.utils.TestUtil;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.filters.SdkSuppress;
|
||||
@ -45,7 +46,7 @@ public class DefaultPreloadManagerBinderStressTest {
|
||||
@Test
|
||||
public void binderStressTest() throws Exception {
|
||||
Context context = ApplicationProvider.getApplicationContext();
|
||||
SurfaceView surfaceView = new SurfaceView(context);
|
||||
SurfaceView surfaceView = TestUtil.createSurfaceView(context);
|
||||
|
||||
BinderStressCreator.verifyNoSystemBinderCalls(
|
||||
/* systemUnderTest= */ () -> {
|
||||
|
@ -29,7 +29,9 @@ import android.graphics.Color;
|
||||
import android.media.MediaCodec;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Looper;
|
||||
import android.os.Parcel;
|
||||
import android.view.SurfaceView;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.media3.common.C;
|
||||
import androidx.media3.common.Format;
|
||||
@ -54,6 +56,7 @@ import androidx.media3.extractor.ExtractorInput;
|
||||
import androidx.media3.extractor.PositionHolder;
|
||||
import androidx.media3.extractor.SeekMap;
|
||||
import androidx.media3.extractor.metadata.MetadataInputBuffer;
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.collect.BoundType;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@ -90,6 +93,7 @@ import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
@ -939,6 +943,21 @@ public class TestUtil {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link SurfaceView} for tests where the creation is moved to the main thread if run
|
||||
* on a non-Looper thread. This is needed on API < 26 where {@link SurfaceView} cannot be
|
||||
* created on a non-Looper thread.
|
||||
*/
|
||||
public static SurfaceView createSurfaceView(Context context) {
|
||||
if (Util.SDK_INT >= 26 || Looper.myLooper() != null) {
|
||||
return new SurfaceView(context);
|
||||
}
|
||||
AtomicReference<SurfaceView> surfaceView = new AtomicReference<>();
|
||||
InstrumentationRegistry.getInstrumentation()
|
||||
.runOnMainSync(() -> surfaceView.set(new SurfaceView(context)));
|
||||
return surfaceView.get();
|
||||
}
|
||||
|
||||
private static final class NoUidOrShufflingTimeline extends Timeline {
|
||||
|
||||
private final Timeline delegate;
|
||||
|
Loading…
x
Reference in New Issue
Block a user