Commit 38386c48 by olly Committed by Oliver Woodman

Be explicit about character set.

The default character set is always UTF-8 anyway on Android, but
we don't want our code to behave any differently where it's not
(e.g. robolectric test runs could potentially run in an environment
where UTF-8 isn't the default?).

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=211953885
parent 77a529f0
...@@ -59,7 +59,7 @@ public final class DataSchemeDataSource extends BaseDataSource { ...@@ -59,7 +59,7 @@ public final class DataSchemeDataSource extends BaseDataSource {
} }
} else { } else {
// TODO: Add support for other charsets. // TODO: Add support for other charsets.
data = URLDecoder.decode(dataString, C.ASCII_NAME).getBytes(); data = Util.getUtf8Bytes(URLDecoder.decode(dataString, C.ASCII_NAME));
} }
transferStarted(dataSpec); transferStarted(dataSpec);
return data.length; return data.length;
......
...@@ -20,9 +20,8 @@ import static com.google.common.truth.Truth.assertThat; ...@@ -20,9 +20,8 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import android.net.Uri; import android.net.Uri;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.util.Util;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.Charset;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -46,16 +45,20 @@ public final class DataSchemeDataSourceTest { ...@@ -46,16 +45,20 @@ public final class DataSchemeDataSourceTest {
DataSpec dataSpec = buildDataSpec("data:text/plain;base64,eyJwcm92aWRlciI6IndpZGV2aW5lX3Rlc3QiL" DataSpec dataSpec = buildDataSpec("data:text/plain;base64,eyJwcm92aWRlciI6IndpZGV2aW5lX3Rlc3QiL"
+ "CJjb250ZW50X2lkIjoiTWpBeE5WOTBaV0Z5Y3c9PSIsImtleV9pZHMiOlsiMDAwMDAwMDAwMDAwMDAwMDAwMDAwM" + "CJjb250ZW50X2lkIjoiTWpBeE5WOTBaV0Z5Y3c9PSIsImtleV9pZHMiOlsiMDAwMDAwMDAwMDAwMDAwMDAwMDAwM"
+ "DAwMDAwMDAwMDAiXX0="); + "DAwMDAwMDAwMDAiXX0=");
DataSourceAsserts.assertDataSourceContent(schemeDataDataSource, dataSpec, DataSourceAsserts.assertDataSourceContent(
("{\"provider\":\"widevine_test\",\"content_id\":\"MjAxNV90ZWFycw==\",\"key_ids\":" schemeDataDataSource,
+ "[\"00000000000000000000000000000000\"]}").getBytes(Charset.forName(C.UTF8_NAME))); dataSpec,
Util.getUtf8Bytes(
"{\"provider\":\"widevine_test\",\"content_id\":\"MjAxNV90ZWFycw==\",\"key_ids\":"
+ "[\"00000000000000000000000000000000\"]}"));
} }
@Test @Test
public void testAsciiData() throws IOException { public void testAsciiData() throws IOException {
DataSourceAsserts.assertDataSourceContent(schemeDataDataSource, DataSourceAsserts.assertDataSourceContent(
schemeDataDataSource,
buildDataSpec("data:,A%20brief%20note"), buildDataSpec("data:,A%20brief%20note"),
"A brief note".getBytes(Charset.forName(C.UTF8_NAME))); Util.getUtf8Bytes("A brief note"));
} }
@Test @Test
...@@ -68,7 +71,7 @@ public final class DataSchemeDataSourceTest { ...@@ -68,7 +71,7 @@ public final class DataSchemeDataSourceTest {
assertThat(schemeDataDataSource.read(buffer, 9, 15)).isEqualTo(9); assertThat(schemeDataDataSource.read(buffer, 9, 15)).isEqualTo(9);
assertThat(schemeDataDataSource.read(buffer, 1, 0)).isEqualTo(0); assertThat(schemeDataDataSource.read(buffer, 1, 0)).isEqualTo(0);
assertThat(schemeDataDataSource.read(buffer, 1, 1)).isEqualTo(RESULT_END_OF_INPUT); assertThat(schemeDataDataSource.read(buffer, 1, 1)).isEqualTo(RESULT_END_OF_INPUT);
assertThat(new String(buffer, 0, 18, C.UTF8_NAME)).isEqualTo("012345678901234567"); assertThat(Util.fromUtf8Bytes(buffer, 0, 18)).isEqualTo("012345678901234567");
} }
@Test @Test
......
...@@ -28,8 +28,8 @@ import org.robolectric.RobolectricTestRunner; ...@@ -28,8 +28,8 @@ import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public final class ReusableBufferedOutputStreamTest { public final class ReusableBufferedOutputStreamTest {
private static final byte[] TEST_DATA_1 = "test data 1".getBytes(); private static final byte[] TEST_DATA_1 = Util.getUtf8Bytes("test data 1");
private static final byte[] TEST_DATA_2 = "2 test data".getBytes(); private static final byte[] TEST_DATA_2 = Util.getUtf8Bytes("2 test data");
@Test @Test
public void testReset() throws Exception { public void testReset() throws Exception {
......
...@@ -291,7 +291,7 @@ public final class PlayerEmsgHandler implements Handler.Callback { ...@@ -291,7 +291,7 @@ public final class PlayerEmsgHandler implements Handler.Callback {
private static long getManifestPublishTimeMsInEmsg(EventMessage eventMessage) { private static long getManifestPublishTimeMsInEmsg(EventMessage eventMessage) {
try { try {
return parseXsDateTime(new String(eventMessage.messageData)); return parseXsDateTime(Util.fromUtf8Bytes(eventMessage.messageData));
} catch (ParserException ignored) { } catch (ParserException ignored) {
// if we can't parse this event, ignore // if we can't parse this event, ignore
return C.TIME_UNSET; return C.TIME_UNSET;
......
...@@ -862,7 +862,7 @@ public class DashManifestParser extends DefaultHandler ...@@ -862,7 +862,7 @@ public class DashManifestParser extends DefaultHandler
throws XmlPullParserException, IOException { throws XmlPullParserException, IOException {
scratchOutputStream.reset(); scratchOutputStream.reset();
XmlSerializer xmlSerializer = Xml.newSerializer(); XmlSerializer xmlSerializer = Xml.newSerializer();
xmlSerializer.setOutput(scratchOutputStream, null); xmlSerializer.setOutput(scratchOutputStream, C.UTF8_NAME);
// Start reading everything between <Event> and </Event>, and serialize them into an Xml // Start reading everything between <Event> and </Event>, and serialize them into an Xml
// byte array. // byte array.
xpp.nextToken(); xpp.nextToken();
......
...@@ -22,6 +22,7 @@ import com.google.android.exoplayer2.C; ...@@ -22,6 +22,7 @@ import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.metadata.emsg.EventMessage; import com.google.android.exoplayer2.metadata.emsg.EventMessage;
import com.google.android.exoplayer2.testutil.TestUtil; import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.util.Util;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.Collections; import java.util.Collections;
...@@ -117,7 +118,8 @@ public class DashManifestParserTest { ...@@ -117,7 +118,8 @@ public class DashManifestParserTest {
"", "",
1500000, 1500000,
1, 1,
("<![CDATA[<BroadcastEvent>\n" Util.getUtf8Bytes(
"<![CDATA[<BroadcastEvent>\n"
+ " <Program crid=\"crid://broadcaster.example.com/ABCDEF\"/>\n" + " <Program crid=\"crid://broadcaster.example.com/ABCDEF\"/>\n"
+ " <InstanceDescription>\n" + " <InstanceDescription>\n"
+ " <Title xml:lang=\"en\">The title</Title>\n" + " <Title xml:lang=\"en\">The title</Title>\n"
...@@ -128,8 +130,7 @@ public class DashManifestParserTest { ...@@ -128,8 +130,7 @@ public class DashManifestParserTest {
+ " <mpeg7:Region>GB</mpeg7:Region>\n" + " <mpeg7:Region>GB</mpeg7:Region>\n"
+ " </ParentalGuidance>\n" + " </ParentalGuidance>\n"
+ " </InstanceDescription>\n" + " </InstanceDescription>\n"
+ " </BroadcastEvent>]]>") + " </BroadcastEvent>]]>"),
.getBytes(),
300000000)); 300000000));
// assert xml-structured event stream // assert xml-structured event stream
...@@ -142,12 +143,12 @@ public class DashManifestParserTest { ...@@ -142,12 +143,12 @@ public class DashManifestParserTest {
"", "",
1000000, 1000000,
2, 2,
("<scte35:Signal>\n" Util.getUtf8Bytes(
"<scte35:Signal>\n"
+ " <scte35:Binary>\n" + " <scte35:Binary>\n"
+ " /DAIAAAAAAAAAAAQAAZ/I0VniQAQAgBDVUVJQAAAAH+cAAAAAA==\n" + " /DAIAAAAAAAAAAAQAAZ/I0VniQAQAgBDVUVJQAAAAH+cAAAAAA==\n"
+ " </scte35:Binary>\n" + " </scte35:Binary>\n"
+ " </scte35:Signal>") + " </scte35:Signal>"),
.getBytes(),
1000000000)); 1000000000));
} }
......
...@@ -148,7 +148,7 @@ public class TestUtil { ...@@ -148,7 +148,7 @@ public class TestUtil {
} }
public static String getString(Context context, String fileName) throws IOException { public static String getString(Context context, String fileName) throws IOException {
return new String(getByteArray(context, fileName)); return Util.fromUtf8Bytes(getByteArray(context, fileName));
} }
public static Bitmap readBitmapFromFile(Context context, String fileName) throws IOException { public static Bitmap readBitmapFromFile(Context context, String fileName) throws IOException {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment