From d5f5d311d2f0f99726c7b38b26686c0e5297340c Mon Sep 17 00:00:00 2001 From: christosts Date: Fri, 13 Nov 2020 13:18:54 +0000 Subject: [PATCH] Pass drm_key_request_properties in offline DRM downloads Pass the drm_key_request_properties specified in the json list when donwloading thee offline Widevide license in the demo app. PiperOrigin-RevId: 342243441 --- .../android/exoplayer2/demo/DownloadTracker.java | 12 +++++++----- .../android/exoplayer2/demo/PlayerActivity.java | 11 ++++++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java index 07f4dd2f6e..cbae6fdc06 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java @@ -223,7 +223,7 @@ public class DownloadTracker { widevineOfflineLicenseFetchTask = new WidevineOfflineLicenseFetchTask( format, - mediaItem.playbackProperties.drmConfiguration.licenseUri, + mediaItem.playbackProperties.drmConfiguration, httpDataSourceFactory, /* dialogHelper= */ this, helper); @@ -373,7 +373,7 @@ public class DownloadTracker { private static final class WidevineOfflineLicenseFetchTask extends AsyncTask { private final Format format; - private final Uri licenseUri; + private final MediaItem.DrmConfiguration drmConfiguration; private final HttpDataSource.Factory httpDataSourceFactory; private final StartDownloadDialogHelper dialogHelper; private final DownloadHelper downloadHelper; @@ -383,12 +383,12 @@ public class DownloadTracker { public WidevineOfflineLicenseFetchTask( Format format, - Uri licenseUri, + MediaItem.DrmConfiguration drmConfiguration, HttpDataSource.Factory httpDataSourceFactory, StartDownloadDialogHelper dialogHelper, DownloadHelper downloadHelper) { this.format = format; - this.licenseUri = licenseUri; + this.drmConfiguration = drmConfiguration; this.httpDataSourceFactory = httpDataSourceFactory; this.dialogHelper = dialogHelper; this.downloadHelper = downloadHelper; @@ -398,8 +398,10 @@ public class DownloadTracker { protected Void doInBackground(Void... voids) { OfflineLicenseHelper offlineLicenseHelper = OfflineLicenseHelper.newWidevineInstance( - licenseUri.toString(), + drmConfiguration.licenseUri.toString(), + drmConfiguration.forceDefaultLicenseUri, httpDataSourceFactory, + drmConfiguration.requestHeaders, new DrmSessionEventListener.EventDispatcher()); try { keySetId = offlineLicenseHelper.downloadLicense(format); diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java index 60bdcf1986..c79f213d39 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java @@ -65,6 +65,7 @@ import java.net.CookiePolicy; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Map; /** An activity that plays media using {@link SimpleExoPlayer}. */ public class PlayerActivity extends AppCompatActivity @@ -542,7 +543,9 @@ public class PlayerActivity extends AppCompatActivity .setCustomCacheKey(downloadRequest.customCacheKey) .setMimeType(downloadRequest.mimeType) .setStreamKeys(downloadRequest.streamKeys) - .setDrmKeySetId(downloadRequest.keySetId); + .setDrmKeySetId(downloadRequest.keySetId) + .setDrmLicenseRequestHeaders(getDrmRequestHeaders(item)); + mediaItems.add(builder.build()); } else { mediaItems.add(item); @@ -550,4 +553,10 @@ public class PlayerActivity extends AppCompatActivity } return mediaItems; } + + @Nullable + private static Map getDrmRequestHeaders(MediaItem item) { + MediaItem.DrmConfiguration drmConfiguration = item.playbackProperties.drmConfiguration; + return drmConfiguration != null ? drmConfiguration.requestHeaders : null; + } }