From 701be41534bcab4d25e92de9816d54da8e7aa717 Mon Sep 17 00:00:00 2001 From: ibaker Date: Fri, 17 Sep 2021 16:47:12 +0100 Subject: [PATCH] Demo app: Fail fast if parsing invalid DRM config from JSON These fields can't be used if `drm_uuid` isn't set. Make that case throw an exception, so it's obvious to a developer what's wrong. Most of the fields 'obviously' need `drm_uuid` to be set, but it's not obvious for `drm_session_for_clear_content` (because it might be reasonable to assume it's possible to play clear content without specifying a UUID). This tripped me up in https://github.com/google/ExoPlayer/issues/8842#issuecomment-833659808. PiperOrigin-RevId: 397328556 --- .../exoplayer2/demo/SampleChooserActivity.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java index 16174d5a3f..ac6a5037d4 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java @@ -448,6 +448,18 @@ public class SampleChooserActivity extends AppCompatActivity .setMultiSession(drmMultiSession) .setForceDefaultLicenseUri(drmForceDefaultLicenseUri) .build()); + } else { + checkState(drmLicenseUri == null, "drm_uuid is required if drm_license_uri is set."); + checkState( + drmLicenseRequestHeaders == null, + "drm_uuid is required if drm_key_request_properties is set."); + checkState( + !drmSessionForClearContent, + "drm_uuid is required if drm_session_for_clear_content is set."); + checkState(!drmMultiSession, "drm_uuid is required if drm_multi_session is set."); + checkState( + !drmForceDefaultLicenseUri, + "drm_uuid is required if drm_force_default_license_uri is set."); } if (subtitleUri != null) { MediaItem.Subtitle subtitle =