From 35121a2d3dda1658c2baea5dc4ff3b2f6821e34d Mon Sep 17 00:00:00 2001 From: ibaker Date: Mon, 16 Oct 2023 03:03:51 -0700 Subject: [PATCH] Add `RawResourceDataSource` test for `android.resource:///id` URI This is the documented format of this URI. The previous test was exercising an undocumented format. Support for the previous format is kept (and documented) because it seems to be relatively common (despite the package name not being needed or used). PiperOrigin-RevId: 573756190 --- .../RawResourceDataSourceContractTest.java | 12 ++++++------ .../media3/datasource/RawResourceDataSource.java | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libraries/datasource/src/androidTest/java/androidx/media3/datasource/RawResourceDataSourceContractTest.java b/libraries/datasource/src/androidTest/java/androidx/media3/datasource/RawResourceDataSourceContractTest.java index 5853f4f3d4..77c9ab86e0 100644 --- a/libraries/datasource/src/androidTest/java/androidx/media3/datasource/RawResourceDataSourceContractTest.java +++ b/libraries/datasource/src/androidTest/java/androidx/media3/datasource/RawResourceDataSourceContractTest.java @@ -78,12 +78,12 @@ public final class RawResourceDataSourceContractTest extends DataSourceContractT .build(), new TestResource.Builder() .setName("android.resource:// with ID") - .setUri( - Uri.parse( - "android.resource://" - + ApplicationProvider.getApplicationContext().getPackageName() - + "/" - + R.raw.resource1)) + .setUri(Uri.parse("android.resource:///" + R.raw.resource1)) + .setExpectedBytes(RESOURCE_1_DATA) + .build(), + new TestResource.Builder() + .setName("android.resource:// with (unused) package and ID") + .setUri(Uri.parse("android.resource://unused.package.name/" + R.raw.resource1)) .setExpectedBytes(RESOURCE_1_DATA) .build()); } diff --git a/libraries/datasource/src/main/java/androidx/media3/datasource/RawResourceDataSource.java b/libraries/datasource/src/main/java/androidx/media3/datasource/RawResourceDataSource.java index f7090d2120..e07651fcd9 100644 --- a/libraries/datasource/src/main/java/androidx/media3/datasource/RawResourceDataSource.java +++ b/libraries/datasource/src/main/java/androidx/media3/datasource/RawResourceDataSource.java @@ -51,6 +51,11 @@ import java.nio.channels.FileChannel; * efficient. * * + *

URIs of the form {@code android.resource://package/id} are also supported, although the + * package part is not needed and is not used. This support is due to this format being prevalent in + * the ecosystem (including being recommended on Stack + * Overflow). + * *

{@link #buildRawResourceUri(int)} can be used to build supported {@link Uri}s. */ @UnstableApi