|
26 | 26 | import androidx.annotation.OptIn;
|
27 | 27 | import androidx.annotation.RequiresApi;
|
28 | 28 | import androidx.fragment.app.FragmentManager;
|
| 29 | +import androidx.media3.common.C; |
29 | 30 | import androidx.media3.common.DrmInitData;
|
30 | 31 | import androidx.media3.common.Format;
|
31 | 32 | import androidx.media3.common.MediaItem;
|
|
51 | 52 | import androidx.media3.exoplayer.trackselection.MappingTrackSelector.MappedTrackInfo;
|
52 | 53 | import java.io.IOException;
|
53 | 54 | import java.util.HashMap;
|
| 55 | +import java.util.UUID; |
54 | 56 | import java.util.concurrent.CopyOnWriteArraySet;
|
55 | 57 |
|
56 | 58 | /** Tracks media that has been downloaded. */
|
@@ -202,7 +204,7 @@ public void onPrepared(DownloadHelper helper) {
|
202 | 204 | return;
|
203 | 205 | }
|
204 | 206 | // TODO(internal b/163107948): Support cases where DrmInitData are not in the manifest.
|
205 |
| - if (!hasSchemaData(format.drmInitData)) { |
| 207 | + if (!hasNonNullWidevineSchemaData(format.drmInitData)) { |
206 | 208 | Toast.makeText(context, R.string.download_start_error_offline_license, Toast.LENGTH_LONG)
|
207 | 209 | .show();
|
208 | 210 | Log.e(
|
@@ -323,12 +325,14 @@ private void onDownloadPrepared(DownloadHelper helper) {
|
323 | 325 | }
|
324 | 326 |
|
325 | 327 | /**
|
326 |
| - * Returns whether any the {@link DrmInitData.SchemeData} contained in {@code drmInitData} has |
327 |
| - * non-null {@link DrmInitData.SchemeData#data}. |
| 328 | + * Returns whether any {@link DrmInitData.SchemeData} that {@linkplain |
| 329 | + * DrmInitData.SchemeData#matches(UUID) matches} {@link C#WIDEVINE_UUID} has non-null {@link |
| 330 | + * DrmInitData.SchemeData#data}. |
328 | 331 | */
|
329 |
| - private boolean hasSchemaData(DrmInitData drmInitData) { |
| 332 | + private boolean hasNonNullWidevineSchemaData(DrmInitData drmInitData) { |
330 | 333 | for (int i = 0; i < drmInitData.schemeDataCount; i++) {
|
331 |
| - if (drmInitData.get(i).hasData()) { |
| 334 | + DrmInitData.SchemeData schemeData = drmInitData.get(i); |
| 335 | + if (schemeData.matches(C.WIDEVINE_UUID) && schemeData.hasData()) { |
332 | 336 | return true;
|
333 | 337 | }
|
334 | 338 | }
|
|
0 commit comments