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)
|
* Fix the regex used for validating custom Common Media Client Data (CMCD)
|
||||||
key names by modifying it to only check for hyphen
|
key names by modifying it to only check for hyphen
|
||||||
([#1028](https://github.com/androidx/media/issues/1028)).
|
([#1028](https://github.com/androidx/media/issues/1028)).
|
||||||
|
* Stop double-encoding CMCD query parameters
|
||||||
|
([#1075](https://github.com/androidx/media/issues/1075)).
|
||||||
* Transformer:
|
* Transformer:
|
||||||
* Track Selection:
|
* Track Selection:
|
||||||
* Extractors:
|
* Extractors:
|
||||||
|
@ -417,8 +417,7 @@ public final class CmcdData {
|
|||||||
.uri
|
.uri
|
||||||
.buildUpon()
|
.buildUpon()
|
||||||
.appendQueryParameter(
|
.appendQueryParameter(
|
||||||
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY,
|
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY, COMMA_JOINER.join(keyValuePairs));
|
||||||
Uri.encode(COMMA_JOINER.join(keyValuePairs)));
|
|
||||||
return dataSpec.buildUpon().setUri(uriBuilder.build()).build();
|
return dataSpec.buildUpon().setUri(uriBuilder.build()).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ public class CmcdDataTest {
|
|||||||
getCustomData() {
|
getCustomData() {
|
||||||
return new ImmutableListMultimap.Builder<String, String>()
|
return new ImmutableListMultimap.Builder<String, String>()
|
||||||
.put("CMCD-Object", "key-1=1")
|
.put("CMCD-Object", "key-1=1")
|
||||||
.put("CMCD-Request", "key-2=\"stringValue1,stringValue2\"")
|
.put("CMCD-Request", "key-2=\"stringVälue1,stringVälue2\"")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,11 +143,13 @@ public class CmcdDataTest {
|
|||||||
|
|
||||||
dataSpec = cmcdData.addToDataSpec(dataSpec);
|
dataSpec = cmcdData.addToDataSpec(dataSpec);
|
||||||
|
|
||||||
assertThat(
|
// Confirm that the values above are URL-encoded
|
||||||
Uri.decode(dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY)))
|
assertThat(dataSpec.uri.toString()).doesNotContain("ä");
|
||||||
|
assertThat(dataSpec.uri.toString()).contains(Uri.encode("ä"));
|
||||||
|
assertThat(dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY))
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"bl=1800,br=840,bs,cid=\"mediaId\",d=3000,dl=900,key-1=1,"
|
"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");
|
+ "sid=\"sessionId\",st=l,su,tb=1000");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -532,9 +532,7 @@ public class DefaultDashChunkSourceTest {
|
|||||||
output);
|
output);
|
||||||
|
|
||||||
assertThat(
|
assertThat(
|
||||||
Uri.decode(
|
output.chunk.dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY))
|
||||||
output.chunk.dataSpec.uri.getQueryParameter(
|
|
||||||
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY)))
|
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"bl=0,br=700,cid=\"mediaId\",com.example.test-key-1=1,d=4000,dl=0,"
|
"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-\","
|
+ "key-2=\"stringValue\",mtp=1000,nor=\"..%2Fvideo_4000_700000.m4s\",nrr=\"0-\","
|
||||||
|
@ -442,9 +442,7 @@ public class HlsChunkSourceTest {
|
|||||||
output);
|
output);
|
||||||
|
|
||||||
assertThat(
|
assertThat(
|
||||||
Uri.decode(
|
output.chunk.dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY))
|
||||||
output.chunk.dataSpec.uri.getQueryParameter(
|
|
||||||
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY)))
|
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"bl=0,br=800,cid=\"mediaId\",com.example.test-key-1=1,d=4000,dl=0,"
|
"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,"
|
+ "key-2=\"stringValue\",nor=\"..%2F3.mp4\",nrr=\"0-\",ot=v,sf=h,"
|
||||||
|
@ -283,9 +283,7 @@ public class DefaultSsChunkSourceTest {
|
|||||||
output);
|
output);
|
||||||
|
|
||||||
assertThat(
|
assertThat(
|
||||||
Uri.decode(
|
output.chunk.dataSpec.uri.getQueryParameter(CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY))
|
||||||
output.chunk.dataSpec.uri.getQueryParameter(
|
|
||||||
CmcdConfiguration.CMCD_QUERY_PARAMETER_KEY)))
|
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"bl=0,br=308,cid=\"mediaId\",com.example.test-key-1=1,d=1968,dl=0,"
|
"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,"
|
+ "key-2=\"stringValue\",mtp=1000,nor=\"..%2FFragments(video%3D19680000)\",ot=v,"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user