Update API database based on android-35 SDK revision 1
Fixes: b/343127842
Change-Id: I3f27dc0a9fdf36ed22f383e77ec9b22ceb7b6930
diff --git a/scripts/add-android-jar.sh b/scripts/add-android-jar.sh
index e2fe239..3f575b4 100755
--- a/scripts/add-android-jar.sh
+++ b/scripts/add-android-jar.sh
@@ -16,7 +16,7 @@
SDK_HOME=$HOME/Android/Sdk
# Modify these to match the SDK android.jar to add.
-SDK_DIR_NAME=android-VanillaIceCream
+SDK_DIR_NAME=android-35
SDK_VERSION=35
SDK_DIR=$SDK_HOME/platforms/$SDK_DIR_NAME
diff --git a/src/main/java/com/android/tools/r8/androidapi/AndroidApiLevelDatabaseHelper.java b/src/main/java/com/android/tools/r8/androidapi/AndroidApiLevelDatabaseHelper.java
index af5a909..e4222dd 100644
--- a/src/main/java/com/android/tools/r8/androidapi/AndroidApiLevelDatabaseHelper.java
+++ b/src/main/java/com/android/tools/r8/androidapi/AndroidApiLevelDatabaseHelper.java
@@ -16,16 +16,39 @@
public class AndroidApiLevelDatabaseHelper {
public static Set<String> notModeledTypes() {
- // The below types are known not to be modeled by any api-versions.
+ // The types below are known not to be modeled by any api-versions.
Set<String> notModeledTypes = new HashSet<>();
notModeledTypes.add("androidx.annotation.RecentlyNullable");
notModeledTypes.add("androidx.annotation.RecentlyNonNull");
notModeledTypes.add("android.annotation.Nullable");
notModeledTypes.add("android.annotation.NonNull");
notModeledTypes.add("android.annotation.FlaggedApi");
+ notModeledTypes.add("android.adservices.customaudience.PartialCustomAudience");
+ notModeledTypes.add("android.adservices.customaudience.PartialCustomAudience$Builder");
+ notModeledTypes.add(
+ "android.adservices.customaudience.ScheduleCustomAudienceUpdateRequest$Builder");
+ notModeledTypes.add("android.adservices.customaudience.ScheduleCustomAudienceUpdateRequest");
return notModeledTypes;
}
+ public static Set<String> notModeledFields() {
+ // The fields below are known not to be modeled by any api-versions.
+ Set<String> notModeledFields = new HashSet<>();
+ notModeledFields.add("int android.app.appsearch.AppSearchResult.RESULT_DENIED");
+ notModeledFields.add("int android.app.appsearch.AppSearchResult.RESULT_RATE_LIMITED");
+ return notModeledFields;
+ }
+
+ public static Set<String> notModeledMethods() {
+ // The methods below are known not to be modeled by any api-versions.
+ Set<String> notModelledMethods = new HashSet<>();
+ notModelledMethods.add(
+ "void android.adservices.customaudience.CustomAudienceManager.scheduleCustomAudienceUpdate(android.adservices.customaudience.ScheduleCustomAudienceUpdateRequest,"
+ + " java.util.concurrent.Executor,"
+ + " android.adservices.common.AdServicesOutcomeReceiver)");
+ return notModelledMethods;
+ }
+
static void visitAdditionalKnownApiReferences(
DexItemFactory factory, BiConsumer<DexReference, AndroidApiLevel> apiLevelConsumer) {
addStringBuilderAndBufferMethods(factory, apiLevelConsumer);
diff --git a/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGenerator.java b/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGenerator.java
index 4bdba09..58a8ac6 100644
--- a/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGenerator.java
+++ b/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGenerator.java
@@ -48,6 +48,7 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.stream.Collectors;
public class AndroidApiHashingDatabaseBuilderGenerator extends TestBase {
@@ -199,7 +200,31 @@
expectedMissingMembers.add(factory.createType("Landroid/nfc/tech/NfcB;"));
expectedMissingMembers.add(factory.createType("Landroid/nfc/tech/Ndef;"));
expectedMissingMembers.add(factory.createType("Landroid/webkit/CookieSyncManager;"));
- assertEquals(expectedMissingMembers, missingMemberInformation.keySet());
+ expectedMissingMembers.add(
+ factory.createType("Landroid/adservices/customaudience/CustomAudienceManager;"));
+ expectedMissingMembers.add(
+ factory.createType("Landroid/adservices/customaudience/PartialCustomAudience$Builder;"));
+ expectedMissingMembers.add(
+ factory.createType("Landroid/adservices/customaudience/PartialCustomAudience;"));
+ expectedMissingMembers.add(
+ factory.createType(
+ "Landroid/adservices/customaudience/ScheduleCustomAudienceUpdateRequest$Builder;"));
+ expectedMissingMembers.add(
+ factory.createType(
+ "Landroid/adservices/customaudience/ScheduleCustomAudienceUpdateRequest;"));
+ expectedMissingMembers.add(factory.createType("Landroid/app/appsearch/AppSearchResult;"));
+ assertEquals(
+ expectedMissingMembers.stream()
+ .map(DexType::toDescriptorString)
+ .sorted()
+ .collect(Collectors.joining("\n"))
+ + "\n---\n"
+ + missingMemberInformation.keySet().stream()
+ .map(DexType::toDescriptorString)
+ .sorted()
+ .collect(Collectors.joining("\n")),
+ expectedMissingMembers,
+ missingMemberInformation.keySet());
return true;
}
diff --git a/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGeneratorTest.java b/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGeneratorTest.java
index 1244c0f..0521f40 100644
--- a/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGeneratorTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGeneratorTest.java
@@ -4,6 +4,8 @@
package com.android.tools.r8.apimodel;
+import static com.android.tools.r8.androidapi.AndroidApiLevelDatabaseHelper.notModeledFields;
+import static com.android.tools.r8.androidapi.AndroidApiLevelDatabaseHelper.notModeledMethods;
import static com.android.tools.r8.androidapi.AndroidApiLevelDatabaseHelper.notModeledTypes;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import static org.junit.Assert.assertEquals;
@@ -110,9 +112,9 @@
methodReferences.forEach(field -> numberOfMethods.increment())));
});
// These numbers will change when updating api-versions.xml
- assertEquals(5971, parsedApiClasses.size());
+ assertEquals(5972, parsedApiClasses.size());
assertEquals(30341, numberOfFields.get());
- assertEquals(46572, numberOfMethods.get());
+ assertEquals(46576, numberOfMethods.get());
}
@Test
@@ -134,6 +136,8 @@
private static void ensureAllPublicMethodsAreMapped(
AppView<AppInfoWithClassHierarchy> appView, AndroidApiLevelCompute apiLevelCompute) {
Set<String> notModeledTypes = notModeledTypes();
+ Set<String> notModeledFields = notModeledFields();
+ Set<String> notModeledMethods = notModeledMethods();
for (DexLibraryClass clazz : appView.app().asDirect().libraryClasses()) {
if (notModeledTypes.contains(clazz.getClassReference().getTypeName())) {
continue;
@@ -144,7 +148,9 @@
.isKnownApiLevel());
clazz.forEachClassField(
field -> {
- if (field.getAccessFlags().isPublic() && !field.toSourceString().contains("this$0")) {
+ if (field.getAccessFlags().isPublic()
+ && !field.toSourceString().contains("this$0")
+ && !notModeledFields.contains(field.toSourceString())) {
assertTrue(
apiLevelCompute
.computeApiLevelForLibraryReference(field.getReference())
@@ -153,7 +159,8 @@
});
clazz.forEachClassMethod(
method -> {
- if (method.getAccessFlags().isPublic()) {
+ if (method.getAccessFlags().isPublic()
+ && !notModeledMethods.contains(method.toSourceString())) {
assertTrue(
apiLevelCompute
.computeApiLevelForLibraryReference(method.getReference())
diff --git a/src/test/java/com/android/tools/r8/apimodel/AndroidApiVersionsXmlParser.java b/src/test/java/com/android/tools/r8/apimodel/AndroidApiVersionsXmlParser.java
index 7617ca1..e87664f 100644
--- a/src/test/java/com/android/tools/r8/apimodel/AndroidApiVersionsXmlParser.java
+++ b/src/test/java/com/android/tools/r8/apimodel/AndroidApiVersionsXmlParser.java
@@ -53,13 +53,11 @@
private Set<String> getDeletedTypesMissingRemovedAttribute() {
Set<String> removedTypeNames = new HashSet<>();
if (maxApiLevel.isGreaterThanOrEqualTo(AndroidApiLevel.U)) {
- removedTypeNames.add("com.android.internal.util.Predicate");
+ if (maxApiLevel.isLessThan(AndroidApiLevel.V)) {
+ removedTypeNames.add("com.android.internal.util.Predicate");
+ }
removedTypeNames.add("android.adservices.AdServicesVersion");
}
- if (maxApiLevel.isGreaterThanOrEqualTo(AndroidApiLevel.V)) {
- removedTypeNames.add("android.media.MediaDrm$HdcpLevel");
- removedTypeNames.add("android.media.MediaDrm$SecurityLevel");
- }
return removedTypeNames;
}
diff --git a/third_party/android_jar/lib-v35.tar.gz.sha1 b/third_party/android_jar/lib-v35.tar.gz.sha1
index 3543c83..0db22a6 100644
--- a/third_party/android_jar/lib-v35.tar.gz.sha1
+++ b/third_party/android_jar/lib-v35.tar.gz.sha1
@@ -1 +1 @@
-9ac3858ee6859c45500fa7c5254592516c5e73b7
\ No newline at end of file
+661a1420aa7b08e8d8f2e670a808d064ef3edd65
\ No newline at end of file
diff --git a/third_party/api_database/api_database.tar.gz.sha1 b/third_party/api_database/api_database.tar.gz.sha1
index 0d2c06c..966e156c 100644
--- a/third_party/api_database/api_database.tar.gz.sha1
+++ b/third_party/api_database/api_database.tar.gz.sha1
@@ -1 +1 @@
-b043b19332f3f7cd2578874b6d051462b55ac56a
\ No newline at end of file
+0aab829fe216f39035a282024966bbd26bea3a26
\ No newline at end of file