From dd39513a2e52c865c724a73639ce48aa242a691c Mon Sep 17 00:00:00 2001 From: ibaker Date: Tue, 21 Sep 2021 14:27:02 +0100 Subject: [PATCH] Rename `MediaItem.DrmConfiguration.requestHeaders` to add `license` Both license and provisioning requests could be considered 'DRM requests', and these headers are only sent on license requests, so rename them to reflect that. The old field remains deprecated for backwards compatibility. PiperOrigin-RevId: 397980021 --- .../android/exoplayer2/demo/DownloadTracker.java | 2 +- .../android/exoplayer2/demo/IntentUtil.java | 5 +++-- .../android/exoplayer2/demo/PlayerActivity.java | 2 +- .../ext/cast/DefaultMediaItemConverter.java | 6 +++--- .../com/google/android/exoplayer2/MediaItem.java | 15 ++++++++++----- .../google/android/exoplayer2/MediaItemTest.java | 10 ++++++++-- .../drm/DefaultDrmSessionManagerProvider.java | 2 +- 7 files changed, 27 insertions(+), 15 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 027d3846cf..caffeb8a6a 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 @@ -402,7 +402,7 @@ public class DownloadTracker { drmConfiguration.licenseUri.toString(), drmConfiguration.forceDefaultLicenseUri, httpDataSourceFactory, - drmConfiguration.requestHeaders, + drmConfiguration.licenseRequestHeaders, new DrmSessionEventListener.EventDispatcher()); try { keySetId = offlineLicenseHelper.downloadLicense(format); diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java index ec0495202f..e2bd51582b 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/IntentUtil.java @@ -212,9 +212,10 @@ public class IntentUtil { DRM_FORCE_DEFAULT_LICENSE_URI_EXTRA + extrasKeySuffix, drmConfiguration.forceDefaultLicenseUri); - String[] drmKeyRequestProperties = new String[drmConfiguration.requestHeaders.size() * 2]; + String[] drmKeyRequestProperties = + new String[drmConfiguration.licenseRequestHeaders.size() * 2]; int index = 0; - for (Map.Entry entry : drmConfiguration.requestHeaders.entrySet()) { + for (Map.Entry entry : drmConfiguration.licenseRequestHeaders.entrySet()) { drmKeyRequestProperties[index++] = entry.getKey(); drmKeyRequestProperties[index++] = entry.getValue(); } 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 43e134b565..2efd02b0e2 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 @@ -527,6 +527,6 @@ public class PlayerActivity extends AppCompatActivity @Nullable private static Map getDrmRequestHeaders(MediaItem item) { MediaItem.DrmConfiguration drmConfiguration = item.playbackProperties.drmConfiguration; - return drmConfiguration != null ? drmConfiguration.requestHeaders : null; + return drmConfiguration != null ? drmConfiguration.licenseRequestHeaders : null; } } diff --git a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java index d3ef14cf73..88b0a47abd 100644 --- a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java +++ b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java @@ -146,7 +146,7 @@ public final class DefaultMediaItemConverter implements MediaItemConverter { JSONObject json = new JSONObject(); json.put(KEY_UUID, drmConfiguration.scheme); json.put(KEY_LICENSE_URI, drmConfiguration.licenseUri); - json.put(KEY_REQUEST_HEADERS, new JSONObject(drmConfiguration.requestHeaders)); + json.put(KEY_REQUEST_HEADERS, new JSONObject(drmConfiguration.licenseRequestHeaders)); return json; } @@ -173,8 +173,8 @@ public final class DefaultMediaItemConverter implements MediaItemConverter { if (drmConfiguration.licenseUri != null) { exoPlayerConfigJson.put("licenseUrl", drmConfiguration.licenseUri); } - if (!drmConfiguration.requestHeaders.isEmpty()) { - exoPlayerConfigJson.put("headers", new JSONObject(drmConfiguration.requestHeaders)); + if (!drmConfiguration.licenseRequestHeaders.isEmpty()) { + exoPlayerConfigJson.put("headers", new JSONObject(drmConfiguration.licenseRequestHeaders)); } return exoPlayerConfigJson; diff --git a/library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java b/library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java index ad6167042f..ce6adde1b8 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java @@ -555,7 +555,7 @@ public final class MediaItem implements Bundleable { private Builder(DrmConfiguration drmConfiguration) { this.scheme = drmConfiguration.scheme; this.licenseUri = drmConfiguration.licenseUri; - this.licenseRequestHeaders = drmConfiguration.requestHeaders; + this.licenseRequestHeaders = drmConfiguration.licenseRequestHeaders; this.multiSession = drmConfiguration.multiSession; this.playClearContentWithoutKey = drmConfiguration.playClearContentWithoutKey; this.forceDefaultLicenseUri = drmConfiguration.forceDefaultLicenseUri; @@ -690,8 +690,11 @@ public final class MediaItem implements Bundleable { */ @Nullable public final Uri licenseUri; - /** The headers to attach to the request to the DRM license server. */ - public final ImmutableMap requestHeaders; + /** @deprecated Use {@link #licenseRequestHeaders} instead. */ + @Deprecated public final ImmutableMap requestHeaders; + + /** The headers to attach to requests sent to the DRM license server. */ + public final ImmutableMap licenseRequestHeaders; /** Whether the DRM configuration is multi session enabled. */ public final boolean multiSession; @@ -713,12 +716,14 @@ public final class MediaItem implements Bundleable { @Nullable private final byte[] keySetId; + @SuppressWarnings("deprecation") // Setting deprecated field private DrmConfiguration(Builder builder) { checkState(!(builder.forceDefaultLicenseUri && builder.licenseUri == null)); this.scheme = checkNotNull(builder.scheme); this.uuid = scheme; this.licenseUri = builder.licenseUri; this.requestHeaders = builder.licenseRequestHeaders; + this.licenseRequestHeaders = builder.licenseRequestHeaders; this.multiSession = builder.multiSession; this.forceDefaultLicenseUri = builder.forceDefaultLicenseUri; this.playClearContentWithoutKey = builder.playClearContentWithoutKey; @@ -752,7 +757,7 @@ public final class MediaItem implements Bundleable { DrmConfiguration other = (DrmConfiguration) obj; return scheme.equals(other.scheme) && Util.areEqual(licenseUri, other.licenseUri) - && Util.areEqual(requestHeaders, other.requestHeaders) + && Util.areEqual(licenseRequestHeaders, other.licenseRequestHeaders) && multiSession == other.multiSession && forceDefaultLicenseUri == other.forceDefaultLicenseUri && playClearContentWithoutKey == other.playClearContentWithoutKey @@ -764,7 +769,7 @@ public final class MediaItem implements Bundleable { public int hashCode() { int result = scheme.hashCode(); result = 31 * result + (licenseUri != null ? licenseUri.hashCode() : 0); - result = 31 * result + requestHeaders.hashCode(); + result = 31 * result + licenseRequestHeaders.hashCode(); result = 31 * result + (multiSession ? 1 : 0); result = 31 * result + (forceDefaultLicenseUri ? 1 : 0); result = 31 * result + (playClearContentWithoutKey ? 1 : 0); diff --git a/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java b/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java index dc232c4bcf..d00a49ab67 100644 --- a/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java +++ b/library/common/src/test/java/com/google/android/exoplayer2/MediaItemTest.java @@ -86,7 +86,7 @@ public class MediaItemTest { } @Test - @SuppressWarnings("deprecation") // Testing deprecated methods + @SuppressWarnings("deprecation") // Testing deprecated methods and fields public void builderSetDrmPropertiesIndividually() { Uri licenseUri = Uri.parse(URI_STRING); Map requestHeaders = new HashMap<>(); @@ -111,6 +111,8 @@ public class MediaItemTest { assertThat(mediaItem.playbackProperties.drmConfiguration.licenseUri).isEqualTo(licenseUri); assertThat(mediaItem.playbackProperties.drmConfiguration.requestHeaders) .isEqualTo(requestHeaders); + assertThat(mediaItem.playbackProperties.drmConfiguration.licenseRequestHeaders) + .isEqualTo(requestHeaders); assertThat(mediaItem.playbackProperties.drmConfiguration.multiSession).isTrue(); assertThat(mediaItem.playbackProperties.drmConfiguration.forceDefaultLicenseUri).isTrue(); assertThat(mediaItem.playbackProperties.drmConfiguration.playClearContentWithoutKey).isTrue(); @@ -120,7 +122,7 @@ public class MediaItemTest { } @Test - @SuppressWarnings("deprecation") // Testing deprecated methods + @SuppressWarnings("deprecation") // Testing deprecated methods and fields public void builderSetDrmConfigurationOverwritesIndividualProperties() { Uri licenseUri = Uri.parse(URI_STRING); Map requestHeaders = new HashMap<>(); @@ -145,6 +147,7 @@ public class MediaItemTest { assertThat(mediaItem.playbackProperties.drmConfiguration.uuid).isEqualTo(C.CLEARKEY_UUID); assertThat(mediaItem.playbackProperties.drmConfiguration.licenseUri).isNull(); assertThat(mediaItem.playbackProperties.drmConfiguration.requestHeaders).isEmpty(); + assertThat(mediaItem.playbackProperties.drmConfiguration.licenseRequestHeaders).isEmpty(); assertThat(mediaItem.playbackProperties.drmConfiguration.multiSession).isFalse(); assertThat(mediaItem.playbackProperties.drmConfiguration.forceDefaultLicenseUri).isFalse(); assertThat(mediaItem.playbackProperties.drmConfiguration.playClearContentWithoutKey).isFalse(); @@ -153,6 +156,7 @@ public class MediaItemTest { } @Test + @SuppressWarnings("deprecation") // Testing deprecated field public void builderSetDrmConfiguration() { Uri licenseUri = Uri.parse(URI_STRING); Map requestHeaders = new HashMap<>(); @@ -179,6 +183,8 @@ public class MediaItemTest { assertThat(mediaItem.playbackProperties.drmConfiguration.licenseUri).isEqualTo(licenseUri); assertThat(mediaItem.playbackProperties.drmConfiguration.requestHeaders) .isEqualTo(requestHeaders); + assertThat(mediaItem.playbackProperties.drmConfiguration.licenseRequestHeaders) + .isEqualTo(requestHeaders); assertThat(mediaItem.playbackProperties.drmConfiguration.multiSession).isTrue(); assertThat(mediaItem.playbackProperties.drmConfiguration.forceDefaultLicenseUri).isTrue(); assertThat(mediaItem.playbackProperties.drmConfiguration.playClearContentWithoutKey).isTrue(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManagerProvider.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManagerProvider.java index e9cd7aa1de..65140c050c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManagerProvider.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManagerProvider.java @@ -101,7 +101,7 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager drmConfiguration.licenseUri == null ? null : drmConfiguration.licenseUri.toString(), drmConfiguration.forceDefaultLicenseUri, dataSourceFactory); - for (Map.Entry entry : drmConfiguration.requestHeaders.entrySet()) { + for (Map.Entry entry : drmConfiguration.licenseRequestHeaders.entrySet()) { httpDrmCallback.setKeyRequestProperty(entry.getKey(), entry.getValue()); } DefaultDrmSessionManager drmSessionManager =