mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Stop double-encoding CMCD query parameters
`Uri.appendQueryParameter` is documented to encode its arguments, so calling `Uri.encode` beforehand results in double-encoding. Issue: androidx/media#1075 #minor-release PiperOrigin-RevId: 604995441 (cherry picked from commit 7ebfed505c5ac42cb6e614a3dd9b7755af3e92b2)
This commit is contained in:
parent
245e6231d9
commit
1dc4377a4b
@ -10,6 +10,8 @@
|
||||
* Fix the regex used for validating custom Common Media Client Data (CMCD)
|
||||
key names by modifying it to only check for hyphen
|
||||
([#1028](https://github.com/androidx/media/issues/1028)).
|
||||
* Stop double-encoding CMCD query parameters
|
||||
([#1075](https://github.com/androidx/media/issues/1075)).
|
||||
* Transformer:
|
||||
* Track Selection:
|
||||
* Extractors:
|
||||
|
@ -417,8 +417,7 @@ public final class CmcdData {
|
||||
.uri
|
||||
.buildUpon()
|
||||
.appendQueryParameter(
|
||||
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY,
|
||||
Uri.encode(COMMA_JOINER.join(keyValuePairs)));
|
||||
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY, COMMA_JOINER.join(keyValuePairs));
|
||||
return dataSpec.buildUpon().setUri(uriBuilder.build()).build();
|
||||
}
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ public class CmcdDataTest {
|
||||
getCustomData() {
|
||||
return new ImmutableListMultimap.Builder<String, String>()
|
||||
.put("CMCD-Object", "key-1=1")
|
||||
.put("CMCD-Request", "key-2=\"stringValue1,stringValue2\"")
|
||||
.put("CMCD-Request", "key-2=\"stringVälue1,stringVälue2\"")
|
||||
.build();
|
||||
}
|
||||
|
||||
@ -143,11 +143,13 @@ public class CmcdDataTest {
|
||||
|
||||
dataSpec = cmcdData.addToDataSpec(dataSpec);
|
||||
|
||||
assertThat(
|
||||
Uri.decode(dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY)))
|
||||
// Confirm that the values above are URL-encoded
|
||||
assertThat(dataSpec.uri.toString()).doesNotContain("ä");
|
||||
assertThat(dataSpec.uri.toString()).contains(Uri.encode("ä"));
|
||||
assertThat(dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY))
|
||||
.isEqualTo(
|
||||
"bl=1800,br=840,bs,cid=\"mediaId\",d=3000,dl=900,key-1=1,"
|
||||
+ "key-2=\"stringValue1,stringValue2\",mtp=500,pr=2.00,rtp=1700,sf=d,"
|
||||
+ "key-2=\"stringVälue1,stringVälue2\",mtp=500,pr=2.00,rtp=1700,sf=d,"
|
||||
+ "sid=\"sessionId\",st=l,su,tb=1000");
|
||||
}
|
||||
|
||||
|
@ -532,9 +532,7 @@ public class DefaultDashChunkSourceTest {
|
||||
output);
|
||||
|
||||
assertThat(
|
||||
Uri.decode(
|
||||
output.chunk.dataSpec.uri.getQueryParameter(
|
||||
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY)))
|
||||
output.chunk.dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY))
|
||||
.isEqualTo(
|
||||
"bl=0,br=700,cid=\"mediaId\",com.example.test-key-1=1,d=4000,dl=0,"
|
||||
+ "key-2=\"stringValue\",mtp=1000,nor=\"..%2Fvideo_4000_700000.m4s\",nrr=\"0-\","
|
||||
|
@ -442,9 +442,7 @@ public class HlsChunkSourceTest {
|
||||
output);
|
||||
|
||||
assertThat(
|
||||
Uri.decode(
|
||||
output.chunk.dataSpec.uri.getQueryParameter(
|
||||
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY)))
|
||||
output.chunk.dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY))
|
||||
.isEqualTo(
|
||||
"bl=0,br=800,cid=\"mediaId\",com.example.test-key-1=1,d=4000,dl=0,"
|
||||
+ "key-2=\"stringValue\",nor=\"..%2F3.mp4\",nrr=\"0-\",ot=v,sf=h,"
|
||||
|
@ -283,9 +283,7 @@ public class DefaultSsChunkSourceTest {
|
||||
output);
|
||||
|
||||
assertThat(
|
||||
Uri.decode(
|
||||
output.chunk.dataSpec.uri.getQueryParameter(
|
||||
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY)))
|
||||
output.chunk.dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY))
|
||||
.isEqualTo(
|
||||
"bl=0,br=308,cid=\"mediaId\",com.example.test-key-1=1,d=1968,dl=0,"
|
||||
+ "key-2=\"stringValue\",mtp=1000,nor=\"..%2FFragments(video%3D19680000)\",ot=v,"
|
||||
|
Loading…
x
Reference in New Issue
Block a user