Use StringReader rather than InputStream with getBytes for verifyPGMap
The getBytes will create another array containing the bytes for the
data. We only consume data and do not modify under the verification
thus it should be OK to keep the original data.
Bug: 128416563
Change-Id: I6729ed49a0d7c010dc09e4b4a51078947cfba702
diff --git a/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java b/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java
index 00ec506..0aeae73 100644
--- a/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java
+++ b/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java
@@ -18,8 +18,8 @@
import com.google.common.collect.BiMap;
import com.google.common.collect.ImmutableBiMap;
import com.google.common.collect.ImmutableMap;
+import com.google.common.io.CharSource;
import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -68,12 +68,8 @@
}
public static ClassNameMapper mapperFromInputStream(InputStream in) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
- try (ProguardMapReader proguardReader = new ProguardMapReader(reader)) {
- ClassNameMapper.Builder builder = ClassNameMapper.builder();
- proguardReader.parse(builder);
- return builder.build();
- }
+ return mapperFromBufferedReader(
+ new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)));
}
public static ClassNameMapper mapperFromFile(Path path) throws IOException {
@@ -92,8 +88,16 @@
}
public static ClassNameMapper mapperFromString(String contents) throws IOException {
- return mapperFromInputStream(
- new ByteArrayInputStream(contents.getBytes(StandardCharsets.UTF_8)));
+ return mapperFromBufferedReader(CharSource.wrap(contents).openBufferedStream());
+ }
+
+ private static ClassNameMapper mapperFromBufferedReader(BufferedReader reader)
+ throws IOException {
+ try (ProguardMapReader proguardReader = new ProguardMapReader(reader)) {
+ ClassNameMapper.Builder builder = ClassNameMapper.builder();
+ proguardReader.parse(builder);
+ return builder.build();
+ }
}
private final ImmutableMap<String, ClassNamingForNameMapper> classNameMappings;
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreLatestTreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreLatestTreeShakeJarVerificationTest.java
index cfe297e..a8da699 100644
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreLatestTreeShakeJarVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/R8GMSCoreLatestTreeShakeJarVerificationTest.java
@@ -10,7 +10,6 @@
import com.android.tools.r8.utils.AndroidApp;
import com.google.common.collect.ImmutableList;
import java.util.List;
-import org.junit.Ignore;
import org.junit.Test;
public class R8GMSCoreLatestTreeShakeJarVerificationTest
@@ -19,7 +18,6 @@
private String proguardMap1 = null;
private String proguardMap2 = null;
- @Ignore("b/128416563")
@Test
public void buildAndTreeShakeFromDeployJar() throws Exception {
List<String> additionalProguardConfiguration =