From 4454520e93b26b17cfdb492033b25650fd3f8f55 Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Fri, 27 Mar 2020 08:41:58 +0000 Subject: [PATCH] Add overlay FrameLayout to hosted tests PiperOrigin-RevId: 303283147 --- .../playbacktests/gts/DashTestRunner.java | 6 +++++- .../android/exoplayer2/testutil/ExoHostedTest.java | 12 +++++++++--- .../android/exoplayer2/testutil/HostActivity.java | 14 ++++++++++---- .../res/layout/exo_testutils_host_activity.xml | 4 ++++ 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java index 24469baf75..a730f00c77 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTestRunner.java @@ -21,6 +21,7 @@ import android.media.MediaDrm; import android.media.UnsupportedSchemeException; import android.net.Uri; import android.view.Surface; +import android.widget.FrameLayout; import androidx.annotation.RequiresApi; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Format; @@ -297,7 +298,10 @@ import java.util.List; @Override protected MediaSource buildSource( - HostActivity host, String userAgent, DrmSessionManager drmSessionManager) { + HostActivity host, + String userAgent, + DrmSessionManager drmSessionManager, + FrameLayout overlayFrameLayout) { DataSource.Factory dataSourceFactory = this.dataSourceFactory != null ? this.dataSourceFactory diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java index 079e07506d..ea3c74f26f 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/ExoHostedTest.java @@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertWithMessage; import android.os.ConditionVariable; import android.os.SystemClock; import android.view.Surface; +import android.widget.FrameLayout; import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.DefaultRenderersFactory; @@ -126,7 +127,7 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { // HostedTest implementation @Override - public final void onStart(HostActivity host, Surface surface) { + public final void onStart(HostActivity host, Surface surface, FrameLayout overlayFrameLayout) { this.surface = surface; // Build the player. trackSelector = buildTrackSelector(host); @@ -142,7 +143,9 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { pendingSchedule = null; } DrmSessionManager drmSessionManager = buildDrmSessionManager(userAgent); - player.setMediaSource(buildSource(host, Util.getUserAgent(host, userAgent), drmSessionManager)); + player.setMediaSource( + buildSource( + host, Util.getUserAgent(host, userAgent), drmSessionManager, overlayFrameLayout)); player.prepare(); } @@ -254,7 +257,10 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { } protected abstract MediaSource buildSource( - HostActivity host, String userAgent, DrmSessionManager drmSessionManager); + HostActivity host, + String userAgent, + DrmSessionManager drmSessionManager, + FrameLayout overlayFrameLayout); protected void onPlayerErrorInternal(ExoPlaybackException error) { // Do nothing. Interested subclasses may override. diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/HostActivity.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/HostActivity.java index 34e71236f6..49c3310d33 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/HostActivity.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/HostActivity.java @@ -29,6 +29,7 @@ import android.view.Surface; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.Window; +import android.widget.FrameLayout; import androidx.annotation.Nullable; import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Log; @@ -45,14 +46,15 @@ public final class HostActivity extends Activity implements SurfaceHolder.Callba /** * Called on the main thread when the test is started. - *

- * The test will not be started until the {@link HostActivity} has been resumed and its + * + *

The test will not be started until the {@link HostActivity} has been resumed and its * {@link Surface} has been created. * * @param host The {@link HostActivity} in which the test is being run. * @param surface The {@link Surface}. + * @param overlayFrameLayout A {@link FrameLayout} that is on top of the surface. */ - void onStart(HostActivity host, Surface surface); + void onStart(HostActivity host, Surface surface, FrameLayout overlayFrameLayout); /** * Called on the main thread to block until the test has stopped or {@link #forceStop()} is @@ -86,6 +88,7 @@ public final class HostActivity extends Activity implements SurfaceHolder.Callba @Nullable private WakeLock wakeLock; @Nullable private WifiLock wifiLock; private @MonotonicNonNull SurfaceView surfaceView; + private @MonotonicNonNull FrameLayout overlayFrameLayout; @Nullable private HostedTest hostedTest; private boolean hostedTestStarted; @@ -171,6 +174,8 @@ public final class HostActivity extends Activity implements SurfaceHolder.Callba surfaceView = findViewById( getResources().getIdentifier("surface_view", "id", getPackageName())); surfaceView.getHolder().addCallback(this); + overlayFrameLayout = + findViewById(getResources().getIdentifier("overlay_frame_layout", "id", getPackageName())); } @Override @@ -240,7 +245,8 @@ public final class HostActivity extends Activity implements SurfaceHolder.Callba if (surface != null && surface.isValid()) { hostedTestStarted = true; Log.d(TAG, "Starting test."); - Util.castNonNull(hostedTest).onStart(this, surface); + Util.castNonNull(hostedTest) + .onStart(this, surface, Assertions.checkNotNull(overlayFrameLayout)); Util.castNonNull(hostedTestStartedCondition).open(); } } diff --git a/testutils/src/main/res/layout/exo_testutils_host_activity.xml b/testutils/src/main/res/layout/exo_testutils_host_activity.xml index e0988d4c1f..44119e9629 100644 --- a/testutils/src/main/res/layout/exo_testutils_host_activity.xml +++ b/testutils/src/main/res/layout/exo_testutils_host_activity.xml @@ -25,4 +25,8 @@ android:layout_height="match_parent" android:layout_gravity="center"/> + +