Add YouTube 16.12
Change-Id: I968e74fe0ddde0777857beea034f1bd03eedb6cb
diff --git a/build.gradle b/build.gradle
index 18cbc2a..12efa84 100644
--- a/build.gradle
+++ b/build.gradle
@@ -442,7 +442,8 @@
"youtube/youtube.android_14.44",
"youtube/youtube.android_15.08",
"youtube/youtube.android_15.09",
- "youtube/youtube.android_15.33"
+ "youtube/youtube.android_15.33",
+ "youtube/youtube.android_16.12"
],
]
diff --git a/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java b/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java
index b165f4b..83a8577 100644
--- a/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java
+++ b/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java
@@ -18,8 +18,8 @@
import com.android.tools.r8.R8Command;
import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
import com.android.tools.r8.ResourceException;
-import com.android.tools.r8.TestBase;
import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase;
import com.android.tools.r8.naming.MemberNaming.FieldSignature;
import com.android.tools.r8.naming.MemberNaming.MethodSignature;
import com.android.tools.r8.utils.AndroidApiLevel;
@@ -38,9 +38,6 @@
import com.android.tools.r8.utils.codeinspector.FoundMethodSubject;
import com.google.common.io.ByteStreams;
import com.google.common.io.Closer;
-import it.unimi.dsi.fastutil.ints.IntList;
-import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
-import it.unimi.dsi.fastutil.ints.IntSet;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -64,7 +61,7 @@
import org.junit.Rule;
import org.junit.rules.TemporaryFolder;
-public abstract class CompilationTestBase extends TestBase {
+public abstract class CompilationTestBase extends DesugaredLibraryTestBase {
protected KeepingDiagnosticHandler handler;
protected Reporter reporter;
diff --git a/src/test/java/com/android/tools/r8/internal/D8YouTubeDeployJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/D8YouTubeDeployJarVerificationTest.java
index 202878c..f6de3f9 100644
--- a/src/test/java/com/android/tools/r8/internal/D8YouTubeDeployJarVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/D8YouTubeDeployJarVerificationTest.java
@@ -7,7 +7,7 @@
import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
import org.junit.Test;
-public class D8YouTubeDeployJarVerificationTest extends YouTubeCompilationBase {
+public class D8YouTubeDeployJarVerificationTest extends YouTubeCompilationTestBase {
public D8YouTubeDeployJarVerificationTest() {
super(12, 17);
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeCompilationBase.java b/src/test/java/com/android/tools/r8/internal/YouTubeCompilationTestBase.java
similarity index 84%
rename from src/test/java/com/android/tools/r8/internal/YouTubeCompilationBase.java
rename to src/test/java/com/android/tools/r8/internal/YouTubeCompilationTestBase.java
index c8be865..1e87434 100644
--- a/src/test/java/com/android/tools/r8/internal/YouTubeCompilationBase.java
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeCompilationTestBase.java
@@ -3,6 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.internal;
+import static org.junit.Assert.assertTrue;
+
import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
import com.android.tools.r8.ToolHelper;
@@ -14,7 +16,7 @@
import java.util.ArrayList;
import java.util.List;
-public abstract class YouTubeCompilationBase extends CompilationTestBase {
+public abstract class YouTubeCompilationTestBase extends CompilationTestBase {
static final String APK = "YouTubeRelease_unsigned.apk";
static final String DEPLOY_JAR = "YouTubeRelease_deploy.jar";
@@ -26,7 +28,7 @@
final String base;
- public YouTubeCompilationBase(int majorVersion, int minorVersion) {
+ public YouTubeCompilationTestBase(int majorVersion, int minorVersion) {
this.base =
"third_party/youtube/youtube.android_"
+ majorVersion
@@ -49,7 +51,14 @@
}
protected List<Path> getLibraryFiles() {
- return ImmutableList.of(Paths.get(base, "legacy_YouTubeRelease_combined_library_jars.jar"));
+ Path filtered =
+ Paths.get(base).resolve("legacy_YouTubeRelease_combined_library_jars_filtered.jar");
+ if (filtered.toFile().exists()) {
+ return ImmutableList.of(filtered);
+ }
+ Path unfiltered = Paths.get(base, "legacy_YouTubeRelease_combined_library_jars.jar");
+ assertTrue(unfiltered.toFile().exists());
+ return ImmutableList.of(unfiltered);
}
protected List<Path> getMainDexRuleFiles() {
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeDeployJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/YouTubeDeployJarVerificationTest.java
index 5bf893d..f6b78f6 100644
--- a/src/test/java/com/android/tools/r8/internal/YouTubeDeployJarVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeDeployJarVerificationTest.java
@@ -7,7 +7,7 @@
import com.android.tools.r8.R8RunArtTestsTest.CompilerUnderTest;
import org.junit.Test;
-public class YouTubeDeployJarVerificationTest extends YouTubeCompilationBase {
+public class YouTubeDeployJarVerificationTest extends YouTubeCompilationTestBase {
public YouTubeDeployJarVerificationTest() {
super(12, 17);
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeDexVerificationTest.java b/src/test/java/com/android/tools/r8/internal/YouTubeDexVerificationTest.java
index a01ee01..32b7973 100644
--- a/src/test/java/com/android/tools/r8/internal/YouTubeDexVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeDexVerificationTest.java
@@ -6,7 +6,7 @@
import com.android.tools.r8.CompilationMode;
import org.junit.Test;
-public class YouTubeDexVerificationTest extends YouTubeCompilationBase {
+public class YouTubeDexVerificationTest extends YouTubeCompilationTestBase {
public YouTubeDexVerificationTest() {
super(12, 17);
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeProguardJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/YouTubeProguardJarVerificationTest.java
index 5092831..ffe4e14 100644
--- a/src/test/java/com/android/tools/r8/internal/YouTubeProguardJarVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeProguardJarVerificationTest.java
@@ -8,7 +8,7 @@
import com.google.common.collect.ImmutableList;
import org.junit.Test;
-public class YouTubeProguardJarVerificationTest extends YouTubeCompilationBase {
+public class YouTubeProguardJarVerificationTest extends YouTubeCompilationTestBase {
public YouTubeProguardJarVerificationTest() {
super(12, 17);
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeV1217TreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/YouTubeV1217TreeShakeJarVerificationTest.java
index 69b4748..5f39a31 100644
--- a/src/test/java/com/android/tools/r8/internal/YouTubeV1217TreeShakeJarVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeV1217TreeShakeJarVerificationTest.java
@@ -14,7 +14,7 @@
import java.nio.file.Path;
import org.junit.Test;
-public class YouTubeV1217TreeShakeJarVerificationTest extends YouTubeCompilationBase {
+public class YouTubeV1217TreeShakeJarVerificationTest extends YouTubeCompilationTestBase {
public YouTubeV1217TreeShakeJarVerificationTest() {
super(12, 17);
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeV1419TreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/YouTubeV1419TreeShakeJarVerificationTest.java
index 15d8928..42fc8f7 100644
--- a/src/test/java/com/android/tools/r8/internal/YouTubeV1419TreeShakeJarVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeV1419TreeShakeJarVerificationTest.java
@@ -23,7 +23,7 @@
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
-public class YouTubeV1419TreeShakeJarVerificationTest extends YouTubeCompilationBase {
+public class YouTubeV1419TreeShakeJarVerificationTest extends YouTubeCompilationTestBase {
private static final int MAX_SIZE = 27500000;
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeV1444TreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/YouTubeV1444TreeShakeJarVerificationTest.java
index f2afcb4..a998521 100644
--- a/src/test/java/com/android/tools/r8/internal/YouTubeV1444TreeShakeJarVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeV1444TreeShakeJarVerificationTest.java
@@ -23,7 +23,7 @@
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
-public class YouTubeV1444TreeShakeJarVerificationTest extends YouTubeCompilationBase {
+public class YouTubeV1444TreeShakeJarVerificationTest extends YouTubeCompilationTestBase {
private static final boolean DUMP = false;
private static final int MAX_SIZE = 27500000;
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeV1508TreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/YouTubeV1508TreeShakeJarVerificationTest.java
index 406ff62..eccb336d 100644
--- a/src/test/java/com/android/tools/r8/internal/YouTubeV1508TreeShakeJarVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeV1508TreeShakeJarVerificationTest.java
@@ -23,7 +23,7 @@
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
-public class YouTubeV1508TreeShakeJarVerificationTest extends YouTubeCompilationBase {
+public class YouTubeV1508TreeShakeJarVerificationTest extends YouTubeCompilationTestBase {
private static final boolean DUMP = false;
private static final int MAX_SIZE = 27500000;
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeV1533TreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/YouTubeV1533TreeShakeJarVerificationTest.java
index 8bb7f4c..1fe6af5 100644
--- a/src/test/java/com/android/tools/r8/internal/YouTubeV1533TreeShakeJarVerificationTest.java
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeV1533TreeShakeJarVerificationTest.java
@@ -20,7 +20,7 @@
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
-public class YouTubeV1533TreeShakeJarVerificationTest extends YouTubeCompilationBase {
+public class YouTubeV1533TreeShakeJarVerificationTest extends YouTubeCompilationTestBase {
private static final boolean DUMP = false;
private static final int MAX_SIZE = 27500000;
@@ -56,7 +56,6 @@
.addMainDexRuleFiles(getMainDexRuleFiles())
.addIgnoreWarnings()
.allowDiagnosticMessages()
- .allowStdoutMessages()
.allowUnusedDontWarnPatterns()
.allowUnusedProguardConfigurationRules()
.setMinApi(AndroidApiLevel.H_MR2)
diff --git a/src/test/java/com/android/tools/r8/internal/YouTubeV1612TreeShakeJarVerificationTest.java b/src/test/java/com/android/tools/r8/internal/YouTubeV1612TreeShakeJarVerificationTest.java
new file mode 100644
index 0000000..81be8fe
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/internal/YouTubeV1612TreeShakeJarVerificationTest.java
@@ -0,0 +1,92 @@
+// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.internal;
+
+import static com.android.tools.r8.ToolHelper.isLocalDevelopment;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
+
+import com.android.tools.r8.R8TestCompileResult;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.graph.DexItemFactory;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.codeinspector.CodeInspector;
+import com.android.tools.r8.utils.codeinspector.analysis.ProtoApplicationStats;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class YouTubeV1612TreeShakeJarVerificationTest extends YouTubeCompilationTestBase {
+
+ private static final boolean DUMP = false;
+ private static final int MAX_SIZE = 30000000;
+
+ @Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withNoneRuntime().build();
+ }
+
+ public YouTubeV1612TreeShakeJarVerificationTest(TestParameters parameters) {
+ super(16, 12);
+ parameters.assertNoneRuntime();
+ }
+
+ @Test
+ public void testR8() throws Exception {
+ assumeTrue(isLocalDevelopment());
+
+ KeepRuleConsumer keepRuleConsumer = new PresentKeepRuleConsumer();
+ R8TestCompileResult compileResult =
+ testForR8(Backend.DEX)
+ .addProgramFiles(getProgramFiles())
+ .addLibraryFiles(getLibraryFiles())
+ .addKeepRuleFiles(getKeepRuleFiles())
+ .addIgnoreWarnings()
+ .allowDiagnosticMessages()
+ .allowUnusedDontWarnPatterns()
+ .allowUnusedProguardConfigurationRules()
+ .setMinApi(AndroidApiLevel.L)
+ .enableCoreLibraryDesugaring(AndroidApiLevel.L, keepRuleConsumer)
+ .compile();
+
+ if (ToolHelper.isLocalDevelopment()) {
+ if (DUMP) {
+ long time = System.currentTimeMillis();
+ compileResult.writeToZip(Paths.get("YouTubeV1612-" + time + ".zip"));
+ compileResult.writeProguardMap(Paths.get("YouTubeV1612-" + time + ".map"));
+ }
+
+ DexItemFactory dexItemFactory = new DexItemFactory();
+ ProtoApplicationStats original =
+ new ProtoApplicationStats(dexItemFactory, new CodeInspector(getProgramFiles()));
+ ProtoApplicationStats actual =
+ new ProtoApplicationStats(dexItemFactory, compileResult.inspector(), original);
+ ProtoApplicationStats baseline =
+ new ProtoApplicationStats(
+ dexItemFactory, new CodeInspector(getReleaseApk(), getReleaseProguardMap()));
+ System.out.println(actual.getStats(baseline));
+ }
+
+ long applicationSize = compileResult.getApp().applicationSize();
+ System.out.println("Dex size (app, excluding desugared library): " + applicationSize);
+
+ Path desugaredLibrary = buildDesugaredLibrary(AndroidApiLevel.L, keepRuleConsumer.get());
+ long desugaredLibrarySize = Files.size(desugaredLibrary);
+ System.out.println("Dex size (desugared library): " + desugaredLibrarySize);
+
+ long totalApplicationSize = applicationSize + desugaredLibrarySize;
+ System.out.println("Dex size (total): " + totalApplicationSize);
+
+ assertTrue(
+ "Expected max size of " + MAX_SIZE + ", got " + totalApplicationSize,
+ totalApplicationSize < MAX_SIZE);
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/internal/proto/YouTubeV1508ProtoRewritingTest.java b/src/test/java/com/android/tools/r8/internal/proto/YouTubeV1508ProtoRewritingTest.java
index 7cdab46..dbdeed0 100644
--- a/src/test/java/com/android/tools/r8/internal/proto/YouTubeV1508ProtoRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/internal/proto/YouTubeV1508ProtoRewritingTest.java
@@ -13,7 +13,7 @@
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.internal.LibrarySanitizer;
-import com.android.tools.r8.internal.YouTubeCompilationBase;
+import com.android.tools.r8.internal.YouTubeCompilationTestBase;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import org.junit.Test;
@@ -22,7 +22,7 @@
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
-public class YouTubeV1508ProtoRewritingTest extends YouTubeCompilationBase {
+public class YouTubeV1508ProtoRewritingTest extends YouTubeCompilationTestBase {
@Parameters(name = "{0}")
public static TestParametersCollection data() {
diff --git a/third_party/youtube/youtube.android_16.12.tar.gz.sha1 b/third_party/youtube/youtube.android_16.12.tar.gz.sha1
new file mode 100644
index 0000000..b4ba7e4
--- /dev/null
+++ b/third_party/youtube/youtube.android_16.12.tar.gz.sha1
@@ -0,0 +1 @@
+8e572873935b39dc65790631ffcdcd0a8f749c0f
\ No newline at end of file