From 3af82b2a8bdd1400f55c35dfaa2233e0abfcc644 Mon Sep 17 00:00:00 2001 From: ibaker Date: Wed, 19 Aug 2020 09:33:31 +0100 Subject: [PATCH] Skip WV tests on devices where WV is unsupported PiperOrigin-RevId: 327392056 --- .../gts/CommonEncryptionDrmTest.java | 6 ++- .../playbacktests/gts/DashStreamingTest.java | 37 ++++++++------ .../gts/DashWidevineOfflineTest.java | 14 +++--- .../playbacktests/gts/GtsTestUtil.java | 50 +++++++++++++++++++ 4 files changed, 84 insertions(+), 23 deletions(-) create mode 100644 playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/GtsTestUtil.java 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 fe0a2fcbfa..0f2c856dd7 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 @@ -15,6 +15,8 @@ */ package com.google.android.exoplayer2.playbacktests.gts; +import static com.google.android.exoplayer2.playbacktests.gts.GtsTestUtil.shouldSkipWidevineTest; + import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.rule.ActivityTestRule; import com.google.android.exoplayer2.Player; @@ -64,7 +66,7 @@ public final class CommonEncryptionDrmTest { @Test public void cencSchemeTypeV18() { - if (Util.SDK_INT < 18) { + if (Util.SDK_INT < 18 || shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -76,7 +78,7 @@ public final class CommonEncryptionDrmTest { @Test public void cbcsSchemeTypeV25() { - if (Util.SDK_INT < 25) { + 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. 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 259c2e61f6..a2f557ca0d 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 @@ -15,6 +15,7 @@ */ 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 androidx.test.ext.junit.runners.AndroidJUnit4; @@ -356,7 +357,7 @@ public final class DashStreamingTest { @Test public void widevineH264FixedV18() throws Exception { - if (Util.SDK_INT < 18) { + if (Util.SDK_INT < 18 || shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -373,7 +374,9 @@ public final class DashStreamingTest { @Test public void widevineH264AdaptiveV18() throws Exception { - if (Util.SDK_INT < 18 || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)) { + if (Util.SDK_INT < 18 + || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264) + || shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -390,7 +393,9 @@ public final class DashStreamingTest { @Test public void widevineH264AdaptiveWithSeekingV18() throws Exception { - if (Util.SDK_INT < 18 || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)) { + if (Util.SDK_INT < 18 + || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264) + || shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -408,7 +413,9 @@ public final class DashStreamingTest { @Test public void widevineH264AdaptiveWithRendererDisablingV18() throws Exception { - if (Util.SDK_INT < 18 || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264)) { + if (Util.SDK_INT < 18 + || shouldSkipAdaptiveTest(MimeTypes.VIDEO_H264) + || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -428,7 +435,7 @@ public final class DashStreamingTest { @Test public void widevineH265FixedV23() throws Exception { - if (Util.SDK_INT < 23) { + if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -445,7 +452,7 @@ public final class DashStreamingTest { @Test public void widevineH265AdaptiveV24() throws Exception { - if (Util.SDK_INT < 24) { + if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -462,7 +469,7 @@ public final class DashStreamingTest { @Test public void widevineH265AdaptiveWithSeekingV24() throws Exception { - if (Util.SDK_INT < 24) { + if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -480,7 +487,7 @@ public final class DashStreamingTest { @Test public void widevineH265AdaptiveWithRendererDisablingV24() throws Exception { - if (Util.SDK_INT < 24) { + if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -500,7 +507,7 @@ public final class DashStreamingTest { @Test public void widevineVp9Fixed360pV23() throws Exception { - if (Util.SDK_INT < 23) { + if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -517,7 +524,7 @@ public final class DashStreamingTest { @Test public void widevineVp9AdaptiveV24() throws Exception { - if (Util.SDK_INT < 24) { + if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -534,7 +541,7 @@ public final class DashStreamingTest { @Test public void widevineVp9AdaptiveWithSeekingV24() throws Exception { - if (Util.SDK_INT < 24) { + if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -552,7 +559,7 @@ public final class DashStreamingTest { @Test public void widevineVp9AdaptiveWithRendererDisablingV24() throws Exception { - if (Util.SDK_INT < 24) { + if (Util.SDK_INT < 24 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -573,7 +580,7 @@ public final class DashStreamingTest { // 23.976 fps. @Test public void widevine23FpsH264FixedV23() throws Exception { - if (Util.SDK_INT < 23) { + if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -591,7 +598,7 @@ public final class DashStreamingTest { // 24 fps. @Test public void widevine24FpsH264FixedV23() throws Exception { - if (Util.SDK_INT < 23) { + if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } @@ -609,7 +616,7 @@ public final class DashStreamingTest { // 29.97 fps. @Test public void widevine29FpsH264FixedV23() throws Exception { - if (Util.SDK_INT < 23) { + if (Util.SDK_INT < 23 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { // Pass. return; } 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 23b5cc7f17..81425c34ea 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 @@ -100,7 +100,7 @@ public final class DashWidevineOfflineTest { @Test public void widevineOfflineLicenseV22() throws Exception { - if (Util.SDK_INT < 22) { + if (Util.SDK_INT < 22 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { return; // Pass. } downloadLicense(); @@ -113,7 +113,9 @@ public final class DashWidevineOfflineTest { @Test public void widevineOfflineReleasedLicenseV22() throws Throwable { - if (Util.SDK_INT < 22 || Util.SDK_INT > 28) { + if (Util.SDK_INT < 22 + || Util.SDK_INT > 28 + || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { return; // Pass. } downloadLicense(); @@ -136,7 +138,7 @@ public final class DashWidevineOfflineTest { @Test public void widevineOfflineReleasedLicenseV29() throws Throwable { - if (Util.SDK_INT < 29) { + if (Util.SDK_INT < 29 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { return; // Pass. } downloadLicense(); @@ -158,7 +160,7 @@ public final class DashWidevineOfflineTest { @Test public void widevineOfflineExpiredLicenseV22() throws Exception { - if (Util.SDK_INT < 22) { + if (Util.SDK_INT < 22 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { return; // Pass. } downloadLicense(); @@ -188,7 +190,7 @@ public final class DashWidevineOfflineTest { @Test public void widevineOfflineLicenseExpiresOnPauseV22() throws Exception { - if (Util.SDK_INT < 22) { + if (Util.SDK_INT < 22 || GtsTestUtil.shouldSkipWidevineTest(testRule.getActivity())) { return; // Pass. } downloadLicense(); @@ -198,7 +200,7 @@ public final class DashWidevineOfflineTest { offlineLicenseHelper.getLicenseDurationRemainingSec(offlineLicenseKeySetId); long licenseDuration = licenseDurationRemainingSec.first; assertWithMessage( - "License duration should be less than 30 sec. " + "Server settings might have changed.") + "License duration should be less than 30 sec. Server settings might have changed.") .that(licenseDuration < 30) .isTrue(); ActionSchedule schedule = new ActionSchedule.Builder(TAG) 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 new file mode 100644 index 0000000000..6223539056 --- /dev/null +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/GtsTestUtil.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.android.exoplayer2.playbacktests.gts; + +import static com.google.android.exoplayer2.C.WIDEVINE_UUID; + +import android.content.Context; +import android.content.pm.PackageManager; +import android.media.MediaDrm; + +/** Utility methods for GTS tests. */ +public final class GtsTestUtil { + + private GtsTestUtil() {} + + /** Returns true if the device doesn't support Widevine and this is permitted. */ + public static boolean shouldSkipWidevineTest(Context context) { + if (isGmsInstalled(context)) { + // GMS devices are required to support Widevine. + return false; + } + // For non-GMS devices Widevine is optional. + return !MediaDrm.isCryptoSchemeSupported(WIDEVINE_UUID); + } + + private static boolean isGmsInstalled(Context context) { + try { + context + .getPackageManager() + .getPackageInfo("com.google.android.gms", PackageManager.GET_SIGNATURES); + } catch (PackageManager.NameNotFoundException e) { + return false; + } + return true; + } +}