From 4b1410bced49b8075d928f07a8b6ee62c54a86dd Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 13 Mar 2017 14:48:32 -0700 Subject: [PATCH] Simplify + Fix WV encrypted playback tests ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=149993442 --- .../playbacktests/gts/DashHostedTest.java | 24 ++----- .../playbacktests/gts/DashTest.java | 72 ++++++++++--------- .../playbacktests/gts/DashTestData.java | 44 ++++++------ .../gts/DashWidevineOfflineTest.java | 18 +++-- 4 files changed, 74 insertions(+), 84 deletions(-) diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashHostedTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashHostedTest.java index 1cc220ba0a..b82a31f6cd 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashHostedTest.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashHostedTest.java @@ -135,13 +135,12 @@ public final class DashHostedTest extends ExoHostedTest { } public Builder setManifestUrl(String manifestUrl) { - this.manifestUrl = MANIFEST_URL_PREFIX + manifestUrl; + this.manifestUrl = manifestUrl; return this; } - public Builder setManifestUrlForWidevine(String manifestUrl, String videoMimeType) { - this.useL1Widevine = isL1WidevineAvailable(videoMimeType); - this.manifestUrl = getWidevineManifestUrl(manifestUrl, useL1Widevine); + public Builder setWidevineMimeType(String mimeType) { + this.useL1Widevine = isL1WidevineAvailable(mimeType); this.widevineLicenseUrl = getWidevineLicenseUrl(useL1Widevine); return this; } @@ -177,13 +176,6 @@ public final class DashHostedTest extends ExoHostedTest { private static final int MAX_CONSECUTIVE_DROPPED_VIDEO_FRAMES = 10; private static final float MAX_DROPPED_VIDEO_FRAME_FRACTION = 0.01f; - private static final String MANIFEST_URL_PREFIX = "https://storage.googleapis.com/exoplayer-test-" - + "media-1/gen-4/screens/dash-vod-single-segment/"; - - // TODO: Don't need separate suffixes. Clean up. - private static final String WIDEVINE_L1_SUFFIX = ".mpd"; - private static final String WIDEVINE_L3_SUFFIX = ".mpd"; - private static final String WIDEVINE_LICENSE_URL = "https://proxy.uat.widevine.com/proxy?provider=widevine_test&video_id="; private static final String WIDEVINE_SW_CRYPTO_CONTENT_ID = "exoplayer_test_1"; @@ -204,11 +196,6 @@ public final class DashHostedTest extends ExoHostedTest { boolean needsCddLimitedRetry; - public static String getWidevineManifestUrl(String manifestUrl, boolean useL1Widevine) { - return MANIFEST_URL_PREFIX + manifestUrl - + (useL1Widevine ? WIDEVINE_L1_SUFFIX : WIDEVINE_L3_SUFFIX); - } - public static String getWidevineLicenseUrl(boolean useL1Widevine) { return WIDEVINE_LICENSE_URL + (useL1Widevine ? WIDEVINE_HW_SECURE_DECODE_CONTENT_ID : WIDEVINE_SW_CRYPTO_CONTENT_ID); @@ -216,13 +203,12 @@ public final class DashHostedTest extends ExoHostedTest { @TargetApi(18) @SuppressWarnings("ResourceType") - public static boolean isL1WidevineAvailable(String videoMimeType) { + public static boolean isL1WidevineAvailable(String mimeType) { try { // Force L3 if secure decoder is not available. - if (MediaCodecUtil.getDecoderInfo(videoMimeType, true) == null) { + if (MediaCodecUtil.getDecoderInfo(mimeType, true) == null) { return false; } - MediaDrm mediaDrm = new MediaDrm(WIDEVINE_UUID); String securityProperty = mediaDrm.getPropertyString(SECURITY_LEVEL_PROPERTY); mediaDrm.release(); diff --git a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTest.java b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTest.java index 6ae66f24e1..c41cc1b0b7 100644 --- a/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTest.java +++ b/playbacktests/src/androidTest/java/com/google/android/exoplayer2/playbacktests/gts/DashTest.java @@ -214,7 +214,7 @@ public final class DashTest extends ActivityInstrumentationTestCase2 offlineLicenseHelper; private byte[] offlineLicenseKeySetId; @@ -52,18 +51,17 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa super.setUp(); builder = new DashHostedTest.Builder(TAG) .setStreamName("test_widevine_h264_fixed_offline") - .setManifestUrlForWidevine(DashTestData.WIDEVINE_H264_MANIFEST_PREFIX, MimeTypes.VIDEO_H264) + .setManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST) + .setWidevineMimeType(MimeTypes.VIDEO_H264) .setFullPlaybackNoSeeking(true) .setCanIncludeAdditionalVideoFormats(false) .setAudioVideoFormats(DashTestData.WIDEVINE_AAC_AUDIO_REPRESENTATION_ID, DashTestData.WIDEVINE_H264_CDD_FIXED); boolean useL1Widevine = DashHostedTest.isL1WidevineAvailable(MimeTypes.VIDEO_H264); - widevineManifestUrl = DashHostedTest - .getWidevineManifestUrl(DashTestData.WIDEVINE_H264_MANIFEST_PREFIX, useL1Widevine); String widevineLicenseUrl = DashHostedTest.getWidevineLicenseUrl(useL1Widevine); httpDataSourceFactory = new DefaultHttpDataSourceFactory(USER_AGENT); - offlineLicenseHelper = OfflineLicenseHelper.newWidevineInstance(widevineLicenseUrl, + offlineLicenseHelper = OfflineLicenseHelper.newWidevineInstance(widevineLicenseUrl, httpDataSourceFactory); } @@ -125,7 +123,7 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa downloadLicense(); // Wait until the license expires - long licenseDuration = + long licenseDuration = offlineLicenseHelper.getLicenseDurationRemainingSec(offlineLicenseKeySetId).first; assertTrue("License duration should be less than 30 sec. " + "Server settings might have changed.", licenseDuration < 30); @@ -134,7 +132,7 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa wait(licenseDuration * 1000 + 2000); } long previousDuration = licenseDuration; - licenseDuration = + licenseDuration = offlineLicenseHelper.getLicenseDurationRemainingSec(offlineLicenseKeySetId).first; assertTrue("License duration should be decreasing.", previousDuration > licenseDuration); } @@ -150,7 +148,7 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa downloadLicense(); // During playback pause until the license expires then continue playback - Pair licenseDurationRemainingSec = + Pair licenseDurationRemainingSec = offlineLicenseHelper.getLicenseDurationRemainingSec(offlineLicenseKeySetId); long licenseDuration = licenseDurationRemainingSec.first; assertTrue("License duration should be less than 30 sec. " @@ -163,10 +161,10 @@ public final class DashWidevineOfflineTest extends ActivityInstrumentationTestCa .setActionSchedule(schedule) .runTest(getActivity(), getInstrumentation()); } - + private void downloadLicense() throws InterruptedException, DrmSessionException, IOException { offlineLicenseKeySetId = offlineLicenseHelper.download( - httpDataSourceFactory.createDataSource(), widevineManifestUrl); + httpDataSourceFactory.createDataSource(), DashTestData.WIDEVINE_H264_MANIFEST); Assert.assertNotNull(offlineLicenseKeySetId); Assert.assertTrue(offlineLicenseKeySetId.length > 0); builder.setOfflineLicenseKeySetId(offlineLicenseKeySetId);