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