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 {
}
} else {
// 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);
return data.length;
......
......@@ -20,9 +20,8 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.fail;
import android.net.Uri;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.util.Util;
import java.io.IOException;
import java.nio.charset.Charset;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -46,16 +45,20 @@ public final class DataSchemeDataSourceTest {
DataSpec dataSpec = buildDataSpec("data:text/plain;base64,eyJwcm92aWRlciI6IndpZGV2aW5lX3Rlc3QiL"
+ "CJjb250ZW50X2lkIjoiTWpBeE5WOTBaV0Z5Y3c9PSIsImtleV9pZHMiOlsiMDAwMDAwMDAwMDAwMDAwMDAwMDAwM"
+ "DAwMDAwMDAwMDAiXX0=");
DataSourceAsserts.assertDataSourceContent(schemeDataDataSource, dataSpec,
("{\"provider\":\"widevine_test\",\"content_id\":\"MjAxNV90ZWFycw==\",\"key_ids\":"
+ "[\"00000000000000000000000000000000\"]}").getBytes(Charset.forName(C.UTF8_NAME)));
DataSourceAsserts.assertDataSourceContent(
schemeDataDataSource,
dataSpec,
Util.getUtf8Bytes(
"{\"provider\":\"widevine_test\",\"content_id\":\"MjAxNV90ZWFycw==\",\"key_ids\":"
+ "[\"00000000000000000000000000000000\"]}"));
}
@Test
public void testAsciiData() throws IOException {
DataSourceAsserts.assertDataSourceContent(schemeDataDataSource,
DataSourceAsserts.assertDataSourceContent(
schemeDataDataSource,
buildDataSpec("data:,A%20brief%20note"),
"A brief note".getBytes(Charset.forName(C.UTF8_NAME)));
Util.getUtf8Bytes("A brief note"));
}
@Test
......@@ -68,7 +71,7 @@ public final class DataSchemeDataSourceTest {
assertThat(schemeDataDataSource.read(buffer, 9, 15)).isEqualTo(9);
assertThat(schemeDataDataSource.read(buffer, 1, 0)).isEqualTo(0);
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
......
......@@ -28,8 +28,8 @@ import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public final class ReusableBufferedOutputStreamTest {
private static final byte[] TEST_DATA_1 = "test data 1".getBytes();
private static final byte[] TEST_DATA_2 = "2 test data".getBytes();
private static final byte[] TEST_DATA_1 = Util.getUtf8Bytes("test data 1");
private static final byte[] TEST_DATA_2 = Util.getUtf8Bytes("2 test data");
@Test
public void testReset() throws Exception {
......
......@@ -291,7 +291,7 @@ public final class PlayerEmsgHandler implements Handler.Callback {
private static long getManifestPublishTimeMsInEmsg(EventMessage eventMessage) {
try {
return parseXsDateTime(new String(eventMessage.messageData));
return parseXsDateTime(Util.fromUtf8Bytes(eventMessage.messageData));
} catch (ParserException ignored) {
// if we can't parse this event, ignore
return C.TIME_UNSET;
......
......@@ -862,7 +862,7 @@ public class DashManifestParser extends DefaultHandler
throws XmlPullParserException, IOException {
scratchOutputStream.reset();
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
// byte array.
xpp.nextToken();
......
......@@ -22,6 +22,7 @@ import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.metadata.emsg.EventMessage;
import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.util.Util;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Collections;
......@@ -117,7 +118,8 @@ public class DashManifestParserTest {
"",
1500000,
1,
("<![CDATA[<BroadcastEvent>\n"
Util.getUtf8Bytes(
"<![CDATA[<BroadcastEvent>\n"
+ " <Program crid=\"crid://broadcaster.example.com/ABCDEF\"/>\n"
+ " <InstanceDescription>\n"
+ " <Title xml:lang=\"en\">The title</Title>\n"
......@@ -128,8 +130,7 @@ public class DashManifestParserTest {
+ " <mpeg7:Region>GB</mpeg7:Region>\n"
+ " </ParentalGuidance>\n"
+ " </InstanceDescription>\n"
+ " </BroadcastEvent>]]>")
.getBytes(),
+ " </BroadcastEvent>]]>"),
300000000));
// assert xml-structured event stream
......@@ -142,12 +143,12 @@ public class DashManifestParserTest {
"",
1000000,
2,
("<scte35:Signal>\n"
Util.getUtf8Bytes(
"<scte35:Signal>\n"
+ " <scte35:Binary>\n"
+ " /DAIAAAAAAAAAAAQAAZ/I0VniQAQAgBDVUVJQAAAAH+cAAAAAA==\n"
+ " </scte35:Binary>\n"
+ " </scte35:Signal>")
.getBytes(),
+ " </scte35:Signal>"),
1000000000));
}
......
......@@ -148,7 +148,7 @@ public class TestUtil {
}
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 {
......
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