diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/CommonEncryptionDrmTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/CommonEncryptionDrmTest.java index 8f2d9c6f21..65638d8173 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/CommonEncryptionDrmTest.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/CommonEncryptionDrmTest.java @@ -16,6 +16,8 @@ package com.google.android.exoplayer2.playbacktests.gts; import static com.google.android.exoplayer2.playbacktests.gts.GtsTestUtil.shouldSkipWidevineTest; +import static org.junit.Assume.assumeFalse; +import static org.junit.Assume.assumeTrue; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.rule.ActivityTestRule; @@ -59,6 +61,8 @@ public final class CommonEncryptionDrmTest { @Before public void setUp() { + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner = new DashTestRunner(TAG, testRule.getActivity()) .setWidevineInfo(MimeTypes.VIDEO_H264, false) @@ -74,10 +78,6 @@ public final class CommonEncryptionDrmTest { @Test public void cencSchemeTypeV18() { - if (Util.SDK_INT < 18 || shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } testRunner .setStreamName("test_widevine_h264_scheme_cenc") .setManifestUrl(DashTestData.WIDEVINE_SCHEME_CENC) @@ -86,12 +86,9 @@ public final class CommonEncryptionDrmTest { @Test public void cbcsSchemeTypeV25() { - if (Util.SDK_INT < 25 || shouldSkipWidevineTest(testRule.getActivity())) { - // cbcs support was added in API 24, but it is stable from API 25 onwards. - // See [internal: b/65634809]. - // Pass. - return; - } + // cbcs support was added in API 24, but it is stable from API 25 onwards. + // See [internal: b/65634809]. + assumeTrue(Util.SDK_INT >= 25); testRunner .setStreamName("test_widevine_h264_scheme_cbcs") .setManifestUrl(DashTestData.WIDEVINE_SCHEME_CBCS) diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java index 495372ab48..0972c02da4 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashStreamingTest.java @@ -17,6 +17,8 @@ package com.google.android.exoplayer2.playbacktests.gts; import static com.google.android.exoplayer2.playbacktests.gts.GtsTestUtil.shouldSkipWidevineTest; import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assume.assumeFalse; +import static org.junit.Assume.assumeTrue; import android.content.pm.PackageManager; import androidx.test.ext.junit.runners.AndroidJUnit4; @@ -387,10 +389,8 @@ public final class DashStreamingTest { @Test public void widevineH264FixedV18() throws Exception { - if (Util.SDK_INT < 18 || shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_h264_fixed") .setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST) @@ -404,12 +404,9 @@ public final class DashStreamingTest { @Test public void widevineH264AdaptiveV18() throws Exception { - if (Util.SDK_INT < 18 - || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264) - || shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeFalse(shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_h264_adaptive") .setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST) @@ -424,12 +421,9 @@ public final class DashStreamingTest { @Test public void widevineH264AdaptiveWithSeekingV18() throws Exception { - if (Util.SDK_INT < 18 - || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264) - || shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeFalse(shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_h264_adaptive_with_seeking") .setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST) @@ -445,12 +439,9 @@ public final class DashStreamingTest { @Test public void widevineH264AdaptiveWithRendererDisablingV18() throws Exception { - if (Util.SDK_INT < 18 - || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264) - || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeFalse(shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_h264_adaptive_with_renderer_disabling") .setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST) @@ -468,10 +459,10 @@ public final class DashStreamingTest { @Test public void widevineH265FixedV23() throws Exception { - if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity()) || isPc()) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 23); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + assumeFalse(isPc()); + testRunner .setStreamName("test_widevine_h265_fixed") .setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST) @@ -485,10 +476,10 @@ public final class DashStreamingTest { @Test public void widevineH265AdaptiveV24() throws Exception { - if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity()) || isPc()) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 24); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + assumeFalse(isPc()); + testRunner .setStreamName("test_widevine_h265_adaptive") .setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST) @@ -503,10 +494,10 @@ public final class DashStreamingTest { @Test public void widevineH265AdaptiveWithSeekingV24() throws Exception { - if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity()) || isPc()) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 24); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + assumeFalse(isPc()); + testRunner .setStreamName("test_widevine_h265_adaptive_with_seeking") .setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST) @@ -522,10 +513,10 @@ public final class DashStreamingTest { @Test public void widevineH265AdaptiveWithRendererDisablingV24() throws Exception { - if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity()) || isPc()) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 24); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + assumeFalse(isPc()); + testRunner .setStreamName("test_widevine_h265_adaptive_with_renderer_disabling") .setManifestUrl(DashTestData.WIDEVINE_H265_MANIFEST) @@ -543,10 +534,9 @@ public final class DashStreamingTest { @Test public void widevineVp9Fixed360pV23() throws Exception { - if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 23); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_vp9_fixed_360p") .setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST) @@ -561,10 +551,9 @@ public final class DashStreamingTest { @Test public void widevineVp9AdaptiveV24() throws Exception { - if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 24); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_vp9_adaptive") .setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST) @@ -579,10 +568,9 @@ public final class DashStreamingTest { @Test public void widevineVp9AdaptiveWithSeekingV24() throws Exception { - if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 24); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_vp9_adaptive_with_seeking") .setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST) @@ -598,10 +586,9 @@ public final class DashStreamingTest { @Test public void widevineVp9AdaptiveWithRendererDisablingV24() throws Exception { - if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 24); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_vp9_adaptive_with_renderer_disabling") .setManifestUrl(DashTestData.WIDEVINE_VP9_MANIFEST) @@ -620,10 +607,9 @@ public final class DashStreamingTest { // 23.976 fps. @Test public void widevine23FpsH264FixedV23() throws Exception { - if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 23); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_23fps_h264_fixed") .setManifestUrl(DashTestData.WIDEVINE_H264_23_MANIFEST) @@ -639,10 +625,9 @@ public final class DashStreamingTest { // 24 fps. @Test public void widevine24FpsH264FixedV23() throws Exception { - if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 23); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_24fps_h264_fixed") .setManifestUrl(DashTestData.WIDEVINE_H264_24_MANIFEST) @@ -658,10 +643,9 @@ public final class DashStreamingTest { // 29.97 fps. @Test public void widevine29FpsH264FixedV23() throws Exception { - if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 23); + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner .setStreamName("test_widevine_29fps_h264_fixed") .setManifestUrl(DashTestData.WIDEVINE_H264_29_MANIFEST) @@ -687,10 +671,9 @@ public final class DashStreamingTest { @Test public void decoderInfoH265V24() throws Exception { - if (Util.SDK_INT < 24 || isPc()) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 24); + assumeFalse(isPc()); + assertThat( MediaCodecUtil.getDecoderInfo( MimeTypes.VIDEO_H265, /* secure= */ false, /* tunneling= */ false) @@ -700,10 +683,8 @@ public final class DashStreamingTest { @Test public void decoderInfoVP9V24() throws Exception { - if (Util.SDK_INT < 24) { - // Pass. - return; - } + assumeTrue(Util.SDK_INT >= 24); + assertThat( MediaCodecUtil.getDecoderInfo( MimeTypes.VIDEO_VP9, /* secure= */ false, /* tunneling= */ false) diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashWidevineOfflineTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashWidevineOfflineTest.java index dd8f225075..8f9fb71a77 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashWidevineOfflineTest.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashWidevineOfflineTest.java @@ -15,9 +15,12 @@ */ package com.google.android.exoplayer2.playbacktests.gts; +import static com.google.android.exoplayer2.playbacktests.gts.GtsTestUtil.shouldSkipWidevineTest; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; import static org.junit.Assert.fail; +import static org.junit.Assume.assumeFalse; +import static org.junit.Assume.assumeTrue; import android.media.MediaDrm.MediaDrmStateException; import android.net.Uri; @@ -61,6 +64,8 @@ public final class DashWidevineOfflineTest { @Before public void setUp() throws Exception { + assumeFalse(shouldSkipWidevineTest(testRule.getActivity())); + testRunner = new DashTestRunner(TAG, testRule.getActivity()) .setStreamName("test_widevine_h264_fixed_offline") @@ -75,13 +80,11 @@ public final class DashWidevineOfflineTest { boolean useL1Widevine = DashTestRunner.isL1WidevineAvailable(MimeTypes.VIDEO_H264); String widevineLicenseUrl = DashTestData.getWidevineLicenseUrl(true, useL1Widevine); httpDataSourceFactory = new DefaultHttpDataSource.Factory(); - if (Util.SDK_INT >= 18) { - offlineLicenseHelper = - OfflineLicenseHelper.newWidevineInstance( - widevineLicenseUrl, - httpDataSourceFactory, - new DrmSessionEventListener.EventDispatcher()); - } + offlineLicenseHelper = + OfflineLicenseHelper.newWidevineInstance( + widevineLicenseUrl, + httpDataSourceFactory, + new DrmSessionEventListener.EventDispatcher()); } @After @@ -90,9 +93,7 @@ public final class DashWidevineOfflineTest { if (offlineLicenseKeySetId != null) { releaseLicense(); } - if (offlineLicenseHelper != null) { - offlineLicenseHelper.release(); - } + offlineLicenseHelper.release(); offlineLicenseHelper = null; httpDataSourceFactory = null; } @@ -104,9 +105,8 @@ public final class DashWidevineOfflineTest { "Needs to be reconfigured/rewritten with an offline-compatible licence [internal" + " b/176960595].") public void widevineOfflineLicenseV22() throws Exception { - if (Util.SDK_INT < 22 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - return; // Pass. - } + assumeTrue(Util.SDK_INT >= 22); + downloadLicense(); testRunner.run(); @@ -120,11 +120,8 @@ public final class DashWidevineOfflineTest { "Needs to be reconfigured/rewritten with an offline-compatible licence [internal" + " b/176960595].") public void widevineOfflineReleasedLicenseV22() throws Throwable { - if (Util.SDK_INT < 22 - || Util.SDK_INT > 28 - || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - return; // Pass. - } + assumeTrue(Util.SDK_INT >= 22 && Util.SDK_INT <= 28); + downloadLicense(); releaseLicense(); // keySetId no longer valid. @@ -148,9 +145,8 @@ public final class DashWidevineOfflineTest { "Needs to be reconfigured/rewritten with an offline-compatible licence [internal" + " b/176960595].") public void widevineOfflineReleasedLicenseV29() throws Throwable { - if (Util.SDK_INT < 29 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - return; // Pass. - } + assumeTrue(Util.SDK_INT >= 29); + downloadLicense(); releaseLicense(); // keySetId no longer valid. @@ -174,9 +170,8 @@ public final class DashWidevineOfflineTest { "Needs to be reconfigured/rewritten with an offline-compatible licence [internal" + " b/176960595].") public void widevineOfflineExpiredLicenseV22() throws Exception { - if (Util.SDK_INT < 22 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - return; // Pass. - } + assumeTrue(Util.SDK_INT >= 22); + downloadLicense(); // Wait until the license expires @@ -207,9 +202,8 @@ public final class DashWidevineOfflineTest { "Needs to be reconfigured/rewritten with an offline-compatible licence [internal" + " b/176960595].") public void widevineOfflineLicenseExpiresOnPauseV22() throws Exception { - if (Util.SDK_INT < 22 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { - return; // Pass. - } + assumeTrue(Util.SDK_INT >= 22); + downloadLicense(); // During playback pause until the license expires then continue playback diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/GtsTestUtil.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/GtsTestUtil.java index 6223539056..8855e96b30 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/GtsTestUtil.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/GtsTestUtil.java @@ -21,6 +21,7 @@ import static com.google.android.exoplayer2.C.WIDEVINE_UUID; import android.content.Context; import android.content.pm.PackageManager; import android.media.MediaDrm; +import com.google.android.exoplayer2.util.Util; /** Utility methods for GTS tests. */ public final class GtsTestUtil { @@ -29,6 +30,10 @@ public final class GtsTestUtil { /** Returns true if the device doesn't support Widevine and this is permitted. */ public static boolean shouldSkipWidevineTest(Context context) { + if (Util.SDK_INT < 18) { + // MediaDrm isn't present until API 18 + return true; + } if (isGmsInstalled(context)) { // GMS devices are required to support Widevine. return false;