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
This commit is contained in:
ibaker 2021-09-21 14:27:02 +01:00 committed by bachinger
parent 9932c12d77
commit dd39513a2e
7 changed files with 27 additions and 15 deletions

View File

@ -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);

View File

@ -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<String, String> entry : drmConfiguration.requestHeaders.entrySet()) {
for (Map.Entry<String, String> entry : drmConfiguration.licenseRequestHeaders.entrySet()) {
drmKeyRequestProperties[index++] = entry.getKey();
drmKeyRequestProperties[index++] = entry.getValue();
}

View File

@ -527,6 +527,6 @@ public class PlayerActivity extends AppCompatActivity
@Nullable
private static Map<String, String> getDrmRequestHeaders(MediaItem item) {
MediaItem.DrmConfiguration drmConfiguration = item.playbackProperties.drmConfiguration;
return drmConfiguration != null ? drmConfiguration.requestHeaders : null;
return drmConfiguration != null ? drmConfiguration.licenseRequestHeaders : null;
}
}

View File

@ -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;

View File

@ -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<String, String> requestHeaders;
/** @deprecated Use {@link #licenseRequestHeaders} instead. */
@Deprecated public final ImmutableMap<String, String> requestHeaders;
/** The headers to attach to requests sent to the DRM license server. */
public final ImmutableMap<String, String> 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);

View File

@ -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<String, String> 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<String, String> 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<String, String> 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();

View File

@ -101,7 +101,7 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager
drmConfiguration.licenseUri == null ? null : drmConfiguration.licenseUri.toString(),
drmConfiguration.forceDefaultLicenseUri,
dataSourceFactory);
for (Map.Entry<String, String> entry : drmConfiguration.requestHeaders.entrySet()) {
for (Map.Entry<String, String> entry : drmConfiguration.licenseRequestHeaders.entrySet()) {
httpDrmCallback.setKeyRequestProperty(entry.getKey(), entry.getValue());
}
DefaultDrmSessionManager drmSessionManager =