Merge "media: adding MediaFormat.KEY_IMPORTANCE" into main
diff --git a/core/api/current.txt b/core/api/current.txt
index 8bda142..98b326f 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -18753,21 +18753,21 @@
     method @Nullable public java.security.Signature getSignature();
   }
 
-  @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public interface PromptContentListItem {
+  @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public interface PromptContentItem {
   }
 
-  @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptContentListItemBulletedText implements android.os.Parcelable android.hardware.biometrics.PromptContentListItem {
-    ctor public PromptContentListItemBulletedText(@NonNull CharSequence);
+  @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptContentItemBulletedText implements android.os.Parcelable android.hardware.biometrics.PromptContentItem {
+    ctor public PromptContentItemBulletedText(@NonNull CharSequence);
     method public int describeContents();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.biometrics.PromptContentListItemBulletedText> CREATOR;
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.biometrics.PromptContentItemBulletedText> CREATOR;
   }
 
-  @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptContentListItemPlainText implements android.os.Parcelable android.hardware.biometrics.PromptContentListItem {
-    ctor public PromptContentListItemPlainText(@NonNull CharSequence);
+  @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptContentItemPlainText implements android.os.Parcelable android.hardware.biometrics.PromptContentItem {
+    ctor public PromptContentItemPlainText(@NonNull CharSequence);
     method public int describeContents();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.biometrics.PromptContentListItemPlainText> CREATOR;
+    field @NonNull public static final android.os.Parcelable.Creator<android.hardware.biometrics.PromptContentItemPlainText> CREATOR;
   }
 
   @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public interface PromptContentView {
@@ -18776,7 +18776,7 @@
   @FlaggedApi("android.hardware.biometrics.custom_biometric_prompt") public final class PromptVerticalListContentView implements android.os.Parcelable android.hardware.biometrics.PromptContentView {
     method public int describeContents();
     method @Nullable public CharSequence getDescription();
-    method @NonNull public java.util.List<android.hardware.biometrics.PromptContentListItem> getListItems();
+    method @NonNull public java.util.List<android.hardware.biometrics.PromptContentItem> getListItems();
     method public static int getMaxEachItemCharacterNumber();
     method public static int getMaxItemCount();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -18785,7 +18785,8 @@
 
   public static final class PromptVerticalListContentView.Builder {
     ctor public PromptVerticalListContentView.Builder();
-    method @NonNull public android.hardware.biometrics.PromptVerticalListContentView.Builder addListItem(@NonNull android.hardware.biometrics.PromptContentListItem);
+    method @NonNull public android.hardware.biometrics.PromptVerticalListContentView.Builder addListItem(@NonNull android.hardware.biometrics.PromptContentItem);
+    method @NonNull public android.hardware.biometrics.PromptVerticalListContentView.Builder addListItem(@NonNull android.hardware.biometrics.PromptContentItem, int);
     method @NonNull public android.hardware.biometrics.PromptVerticalListContentView build();
     method @NonNull public android.hardware.biometrics.PromptVerticalListContentView.Builder setDescription(@NonNull CharSequence);
   }
@@ -26670,12 +26671,16 @@
 
   public static final class TvContract.Channels implements android.media.tv.TvContract.BaseTvColumns {
     method @Nullable public static String getVideoResolution(String);
+    field @FlaggedApi("android.media.tv.flags.broadcast_visibility_types") public static final int BROADCAST_VISIBILITY_TYPE_INVISIBLE = 2; // 0x2
+    field @FlaggedApi("android.media.tv.flags.broadcast_visibility_types") public static final int BROADCAST_VISIBILITY_TYPE_NUMERIC_SELECTABLE_ONLY = 1; // 0x1
+    field @FlaggedApi("android.media.tv.flags.broadcast_visibility_types") public static final int BROADCAST_VISIBILITY_TYPE_VISIBLE = 0; // 0x0
     field public static final String COLUMN_APP_LINK_COLOR = "app_link_color";
     field public static final String COLUMN_APP_LINK_ICON_URI = "app_link_icon_uri";
     field public static final String COLUMN_APP_LINK_INTENT_URI = "app_link_intent_uri";
     field public static final String COLUMN_APP_LINK_POSTER_ART_URI = "app_link_poster_art_uri";
     field public static final String COLUMN_APP_LINK_TEXT = "app_link_text";
     field public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
+    field @FlaggedApi("android.media.tv.flags.broadcast_visibility_types") public static final String COLUMN_BROADCAST_VISIBILITY_TYPE = "broadcast_visibility_type";
     field public static final String COLUMN_BROWSABLE = "browsable";
     field public static final String COLUMN_CHANNEL_LIST_ID = "channel_list_id";
     field public static final String COLUMN_DESCRIPTION = "description";
diff --git a/core/java/android/hardware/biometrics/PromptContentListItem.java b/core/java/android/hardware/biometrics/PromptContentItem.java
similarity index 88%
rename from core/java/android/hardware/biometrics/PromptContentListItem.java
rename to core/java/android/hardware/biometrics/PromptContentItem.java
index fa3783d..c47b37a 100644
--- a/core/java/android/hardware/biometrics/PromptContentListItem.java
+++ b/core/java/android/hardware/biometrics/PromptContentItem.java
@@ -21,9 +21,9 @@
 import android.annotation.FlaggedApi;
 
 /**
- * A list item shown on {@link PromptVerticalListContentView}.
+ * An item shown on {@link PromptContentView}.
  */
 @FlaggedApi(FLAG_CUSTOM_BIOMETRIC_PROMPT)
-public interface PromptContentListItem {
+public interface PromptContentItem {
 }
 
diff --git a/core/java/android/hardware/biometrics/PromptContentListItemBulletedText.java b/core/java/android/hardware/biometrics/PromptContentItemBulletedText.java
similarity index 75%
rename from core/java/android/hardware/biometrics/PromptContentListItemBulletedText.java
rename to core/java/android/hardware/biometrics/PromptContentItemBulletedText.java
index c31f8a6..c5e5a80 100644
--- a/core/java/android/hardware/biometrics/PromptContentListItemBulletedText.java
+++ b/core/java/android/hardware/biometrics/PromptContentItemBulletedText.java
@@ -27,7 +27,7 @@
  * A list item with bulleted text shown on {@link PromptVerticalListContentView}.
  */
 @FlaggedApi(FLAG_CUSTOM_BIOMETRIC_PROMPT)
-public final class PromptContentListItemBulletedText implements PromptContentListItemParcelable {
+public final class PromptContentItemBulletedText implements PromptContentItemParcelable {
     private final CharSequence mText;
 
     /**
@@ -35,7 +35,7 @@
      *
      * @param text The text of this list item.
      */
-    public PromptContentListItemBulletedText(@NonNull CharSequence text) {
+    public PromptContentItemBulletedText(@NonNull CharSequence text) {
         mText = text;
     }
 
@@ -67,15 +67,15 @@
      * @see Parcelable.Creator
      */
     @NonNull
-    public static final Creator<PromptContentListItemBulletedText> CREATOR = new Creator<>() {
+    public static final Creator<PromptContentItemBulletedText> CREATOR = new Creator<>() {
         @Override
-        public PromptContentListItemBulletedText createFromParcel(Parcel in) {
-            return new PromptContentListItemBulletedText(in.readCharSequence());
+        public PromptContentItemBulletedText createFromParcel(Parcel in) {
+            return new PromptContentItemBulletedText(in.readCharSequence());
         }
 
         @Override
-        public PromptContentListItemBulletedText[] newArray(int size) {
-            return new PromptContentListItemBulletedText[size];
+        public PromptContentItemBulletedText[] newArray(int size) {
+            return new PromptContentItemBulletedText[size];
         }
     };
 }
diff --git a/core/java/android/hardware/biometrics/PromptContentListItemParcelable.java b/core/java/android/hardware/biometrics/PromptContentItemParcelable.java
similarity index 79%
rename from core/java/android/hardware/biometrics/PromptContentListItemParcelable.java
rename to core/java/android/hardware/biometrics/PromptContentItemParcelable.java
index 15271f0..668912cf 100644
--- a/core/java/android/hardware/biometrics/PromptContentListItemParcelable.java
+++ b/core/java/android/hardware/biometrics/PromptContentItemParcelable.java
@@ -22,9 +22,9 @@
 import android.os.Parcelable;
 
 /**
- * A parcelable {@link PromptContentListItem}.
+ * A parcelable {@link PromptContentItem}.
  */
 @FlaggedApi(FLAG_CUSTOM_BIOMETRIC_PROMPT)
-sealed interface PromptContentListItemParcelable extends PromptContentListItem, Parcelable
-        permits PromptContentListItemPlainText, PromptContentListItemBulletedText {
+sealed interface PromptContentItemParcelable extends PromptContentItem, Parcelable
+        permits PromptContentItemPlainText, PromptContentItemBulletedText {
 }
diff --git a/core/java/android/hardware/biometrics/PromptContentListItemPlainText.java b/core/java/android/hardware/biometrics/PromptContentItemPlainText.java
similarity index 76%
rename from core/java/android/hardware/biometrics/PromptContentListItemPlainText.java
rename to core/java/android/hardware/biometrics/PromptContentItemPlainText.java
index d72a758..6434c59 100644
--- a/core/java/android/hardware/biometrics/PromptContentListItemPlainText.java
+++ b/core/java/android/hardware/biometrics/PromptContentItemPlainText.java
@@ -27,7 +27,7 @@
  * A list item with plain text shown on {@link PromptVerticalListContentView}.
  */
 @FlaggedApi(FLAG_CUSTOM_BIOMETRIC_PROMPT)
-public final class PromptContentListItemPlainText implements PromptContentListItemParcelable {
+public final class PromptContentItemPlainText implements PromptContentItemParcelable {
     private final CharSequence mText;
 
     /**
@@ -35,7 +35,7 @@
      *
      * @param text The text of this list item.
      */
-    public PromptContentListItemPlainText(@NonNull CharSequence text) {
+    public PromptContentItemPlainText(@NonNull CharSequence text) {
         mText = text;
     }
 
@@ -67,15 +67,15 @@
      * @see Parcelable.Creator
      */
     @NonNull
-    public static final Creator<PromptContentListItemPlainText> CREATOR = new Creator<>() {
+    public static final Creator<PromptContentItemPlainText> CREATOR = new Creator<>() {
         @Override
-        public PromptContentListItemPlainText createFromParcel(Parcel in) {
-            return new PromptContentListItemPlainText(in.readCharSequence());
+        public PromptContentItemPlainText createFromParcel(Parcel in) {
+            return new PromptContentItemPlainText(in.readCharSequence());
         }
 
         @Override
-        public PromptContentListItemPlainText[] newArray(int size) {
-            return new PromptContentListItemPlainText[size];
+        public PromptContentItemPlainText[] newArray(int size) {
+            return new PromptContentItemPlainText[size];
         }
     };
 }
diff --git a/core/java/android/hardware/biometrics/PromptVerticalListContentView.java b/core/java/android/hardware/biometrics/PromptVerticalListContentView.java
index f3cb189..f3e6290 100644
--- a/core/java/android/hardware/biometrics/PromptVerticalListContentView.java
+++ b/core/java/android/hardware/biometrics/PromptVerticalListContentView.java
@@ -40,9 +40,9 @@
  *     .setSubTitle(...)
  *     .setContentView(new PromptVerticalListContentView.Builder()
  *         .setDescription("test description")
- *         .addListItem(new PromptContentListItemPlainText("test item 1"))
- *         .addListItem(new PromptContentListItemPlainText("test item 2"))
- *         .addListItem(new PromptContentListItemBulletedText("test item 3"))
+ *         .addListItem(new PromptContentItemPlainText("test item 1"))
+ *         .addListItem(new PromptContentItemPlainText("test item 2"))
+ *         .addListItem(new PromptContentItemBulletedText("test item 3"))
  *         .build())
  *     .build();
  * </pre>
@@ -51,11 +51,11 @@
 public final class PromptVerticalListContentView implements PromptContentViewParcelable {
     private static final int MAX_ITEM_NUMBER = 20;
     private static final int MAX_EACH_ITEM_CHARACTER_NUMBER = 640;
-    private final List<PromptContentListItemParcelable> mContentList;
+    private final List<PromptContentItemParcelable> mContentList;
     private final CharSequence mDescription;
 
     private PromptVerticalListContentView(
-            @NonNull List<PromptContentListItemParcelable> contentList,
+            @NonNull List<PromptContentItemParcelable> contentList,
             @NonNull CharSequence description) {
         mContentList = contentList;
         mDescription = description;
@@ -63,8 +63,8 @@
 
     private PromptVerticalListContentView(Parcel in) {
         mContentList = in.readArrayList(
-                PromptContentListItemParcelable.class.getClassLoader(),
-                PromptContentListItemParcelable.class);
+                PromptContentItemParcelable.class.getClassLoader(),
+                PromptContentItemParcelable.class);
         mDescription = in.readCharSequence();
     }
 
@@ -94,13 +94,13 @@
     }
 
     /**
-     * Gets the list of ListItem on the content view, as set by
-     * {@link PromptVerticalListContentView.Builder#addListItem(PromptContentListItem)}.
+     * Gets the list of items on the content view, as set by
+     * {@link PromptVerticalListContentView.Builder#addListItem(PromptContentItem)}.
      *
      * @return The item list on the content view.
      */
     @NonNull
-    public List<PromptContentListItem> getListItems() {
+    public List<PromptContentItem> getListItems() {
         return new ArrayList<>(mContentList);
     }
 
@@ -142,7 +142,7 @@
      * A builder that collects arguments to be shown on the vertical list view.
      */
     public static final class Builder {
-        private final List<PromptContentListItemParcelable> mContentList = new ArrayList<>();
+        private final List<PromptContentItemParcelable> mContentList = new ArrayList<>();
         private CharSequence mDescription;
 
         /**
@@ -159,28 +159,50 @@
 
         /**
          * Optional: Adds a list item in the current row. Maximum {@value MAX_ITEM_NUMBER} items in
-         * total.
+         * total. The maximum length for each item is {@value MAX_EACH_ITEM_CHARACTER_NUMBER}
+         * characters.
          *
          * @param listItem The list item view to display
          * @return This builder.
          */
         @NonNull
-        public Builder addListItem(@NonNull PromptContentListItem listItem) {
+        public Builder addListItem(@NonNull PromptContentItem listItem) {
             if (doesListItemExceedsCharLimit(listItem)) {
                 throw new IllegalStateException(
                         "The character number of list item exceeds "
                                 + MAX_EACH_ITEM_CHARACTER_NUMBER);
             }
-            mContentList.add((PromptContentListItemParcelable) listItem);
+            mContentList.add((PromptContentItemParcelable) listItem);
             return this;
         }
 
-        private boolean doesListItemExceedsCharLimit(PromptContentListItem listItem) {
-            if (listItem instanceof PromptContentListItemPlainText) {
-                return ((PromptContentListItemPlainText) listItem).getText().length()
+
+        /**
+         * Optional: Adds a list item in the current row. Maximum {@value MAX_ITEM_NUMBER} items in
+         * total. The maximum length for each item is {@value MAX_EACH_ITEM_CHARACTER_NUMBER}
+         * characters.
+         *
+         * @param listItem The list item view to display
+         * @param index The position at which to add the item
+         * @return This builder.
+         */
+        @NonNull
+        public Builder addListItem(@NonNull PromptContentItem listItem, int index) {
+            if (doesListItemExceedsCharLimit(listItem)) {
+                throw new IllegalStateException(
+                        "The character number of list item exceeds "
+                                + MAX_EACH_ITEM_CHARACTER_NUMBER);
+            }
+            mContentList.add(index, (PromptContentItemParcelable) listItem);
+            return this;
+        }
+
+        private boolean doesListItemExceedsCharLimit(PromptContentItem listItem) {
+            if (listItem instanceof PromptContentItemPlainText) {
+                return ((PromptContentItemPlainText) listItem).getText().length()
                         > MAX_EACH_ITEM_CHARACTER_NUMBER;
-            } else if (listItem instanceof PromptContentListItemBulletedText) {
-                return ((PromptContentListItemBulletedText) listItem).getText().length()
+            } else if (listItem instanceof PromptContentItemBulletedText) {
+                return ((PromptContentItemBulletedText) listItem).getText().length()
                         > MAX_EACH_ITEM_CHARACTER_NUMBER;
             } else {
                 return false;
diff --git a/graphics/java/android/graphics/text/LineBreakConfig.java b/graphics/java/android/graphics/text/LineBreakConfig.java
index ddae673..b21bf11 100644
--- a/graphics/java/android/graphics/text/LineBreakConfig.java
+++ b/graphics/java/android/graphics/text/LineBreakConfig.java
@@ -23,9 +23,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.app.compat.CompatChanges;
-import android.compat.annotation.ChangeId;
-import android.compat.annotation.EnabledSince;
+import android.app.ActivityThread;
 import android.os.Build;
 import android.os.LocaleList;
 import android.os.Parcel;
@@ -43,15 +41,6 @@
  * line-break property</a> for more information.
  */
 public final class LineBreakConfig implements Parcelable {
-
-    /**
-     * A feature ID for automatic line break word style.
-     * @hide
-     */
-    @ChangeId
-    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM)
-    public static final long WORD_STYLE_AUTO = 280005585L;
-
     /**
      * No hyphenation preference is specified.
      *
@@ -487,8 +476,15 @@
      * @hide
      */
     public static @LineBreakStyle int getResolvedLineBreakStyle(@Nullable LineBreakConfig config) {
-        final int defaultStyle = CompatChanges.isChangeEnabled(WORD_STYLE_AUTO)
-                ? LINE_BREAK_STYLE_AUTO : LINE_BREAK_STYLE_NONE;
+        final int targetSdkVersion = ActivityThread.currentApplication().getApplicationInfo()
+                .targetSdkVersion;
+        final int defaultStyle;
+        final int vicVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM;
+        if (targetSdkVersion >= vicVersion) {
+            defaultStyle = LINE_BREAK_STYLE_AUTO;
+        } else {
+            defaultStyle = LINE_BREAK_STYLE_NONE;
+        }
         if (config == null) {
             return defaultStyle;
         }
@@ -515,8 +511,15 @@
      */
     public static @LineBreakWordStyle int getResolvedLineBreakWordStyle(
             @Nullable LineBreakConfig config) {
-        final int defaultWordStyle = CompatChanges.isChangeEnabled(WORD_STYLE_AUTO)
-                ? LINE_BREAK_WORD_STYLE_AUTO : LINE_BREAK_WORD_STYLE_NONE;
+        final int targetSdkVersion = ActivityThread.currentApplication().getApplicationInfo()
+                .targetSdkVersion;
+        final int defaultWordStyle;
+        final int vicVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM;
+        if (targetSdkVersion >= vicVersion) {
+            defaultWordStyle = LINE_BREAK_WORD_STYLE_AUTO;
+        } else {
+            defaultWordStyle = LINE_BREAK_WORD_STYLE_NONE;
+        }
         if (config == null) {
             return defaultWordStyle;
         }
diff --git a/media/java/android/media/tv/TvContract.java b/media/java/android/media/tv/TvContract.java
index db01950..7f8f1a3 100644
--- a/media/java/android/media/tv/TvContract.java
+++ b/media/java/android/media/tv/TvContract.java
@@ -16,6 +16,7 @@
 
 package android.media.tv;
 
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -29,6 +30,7 @@
 import android.content.ContentUris;
 import android.content.Context;
 import android.content.Intent;
+import android.media.tv.flags.Flags;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.IBinder;
@@ -2540,9 +2542,9 @@
          * <p>This is used to indicate the broadcast visibility type defined in the underlying
          * broadcast standard or country/operator profile, if applicable. For example,
          * {@code visible_service_flag} and {@code numeric_selection_flag} of
-         * {@code service_attribute_descriptor} in D-Book, {@code visible_service_flag} and
-         * {@code selectable_service_flag} of {@code ciplus_service_descriptor} in CI Plus 1.3
-         * specification.
+         * {@code service_attribute_descriptor} in D-Book, the specification for UK-based TV
+         * products, {@code visible_service_flag} and {@code selectable_service_flag} of
+         * {@code ciplus_service_descriptor} in the CI Plus 1.3 specification.
          *
          * <p>The value should match one of the following:
          * {@link #BROADCAST_VISIBILITY_TYPE_VISIBLE},
@@ -2553,8 +2555,8 @@
          * by default.
          *
          * <p>Type: INTEGER
-         * @hide
          */
+        @FlaggedApi(Flags.FLAG_BROADCAST_VISIBILITY_TYPES)
         public static final String COLUMN_BROADCAST_VISIBILITY_TYPE = "broadcast_visibility_type";
 
         /** @hide */
@@ -2571,8 +2573,8 @@
          * visible from users and selectable by users via normal service navigation mechanisms.
          *
          * @see #COLUMN_BROADCAST_VISIBILITY_TYPE
-         * @hide
          */
+        @FlaggedApi(Flags.FLAG_BROADCAST_VISIBILITY_TYPES)
         public static final int BROADCAST_VISIBILITY_TYPE_VISIBLE = 0;
 
         /**
@@ -2581,18 +2583,18 @@
          * the logical channel number.
          *
          * @see #COLUMN_BROADCAST_VISIBILITY_TYPE
-         * @hide
          */
+        @FlaggedApi(Flags.FLAG_BROADCAST_VISIBILITY_TYPES)
         public static final int BROADCAST_VISIBILITY_TYPE_NUMERIC_SELECTABLE_ONLY = 1;
 
         /**
          * The broadcast visibility type for invisible services. Use this type when the service
-         * is invisible from users and unselectable by users via any of normal service navigation
-         * mechanisms.
+         * is invisible from users and not able to be selected by users via any of the normal
+         * service navigation mechanisms.
          *
          * @see #COLUMN_BROADCAST_VISIBILITY_TYPE
-         * @hide
          */
+        @FlaggedApi(Flags.FLAG_BROADCAST_VISIBILITY_TYPES)
         public static final int BROADCAST_VISIBILITY_TYPE_INVISIBLE = 2;
 
         private Channels() {}
diff --git a/nfc/Android.bp b/nfc/Android.bp
index 87da299..74bec3e 100644
--- a/nfc/Android.bp
+++ b/nfc/Android.bp
@@ -69,6 +69,7 @@
     jarjar_rules: ":nfc-jarjar-rules",
     lint: {
         strict_updatability_linting: true,
+        baseline_filename: "lint-baseline.xml",
     },
     apex_available: [
         "//apex_available:platform",
diff --git a/nfc/lint-baseline.xml b/nfc/lint-baseline.xml
new file mode 100644
index 0000000..1dfdd29
--- /dev/null
+++ b/nfc/lint-baseline.xml
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues format="6" by="lint 8.4.0-alpha01" type="baseline" client="" dependencies="true" name="" variant="all" version="8.4.0-alpha01">
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `new android.nfc.cardemulation.AidGroup`"
+        errorLine1="        AidGroup aidGroup = new AidGroup(aids, category);"
+        errorLine2="                            ~~~~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="377"
+            column="29"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.AidGroup#getAids`"
+        errorLine1="            return (group != null ? group.getAids() : null);"
+        errorLine2="                                          ~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="537"
+            column="43"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.AidGroup#getAids`"
+        errorLine1="                return (group != null ? group.getAids() : null);"
+        errorLine2="                                              ~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="547"
+            column="47"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#getAids`"
+        errorLine1="            return (serviceInfo != null ? serviceInfo.getAids() : null);"
+        errorLine2="                                                      ~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="714"
+            column="55"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#getAids`"
+        errorLine1="                return (serviceInfo != null ? serviceInfo.getAids() : null);"
+        errorLine2="                                                          ~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="724"
+            column="59"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#isOnHost`"
+        errorLine1="                if (!serviceInfo.isOnHost()) {"
+        errorLine2="                                 ~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="755"
+            column="34"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#getOffHostSecureElement`"
+        errorLine1="                    return serviceInfo.getOffHostSecureElement() == null ?"
+        errorLine2="                                       ~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="756"
+            column="40"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#getOffHostSecureElement`"
+        errorLine1='                            "OffHost" : serviceInfo.getOffHostSecureElement();'
+        errorLine2="                                                    ~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="757"
+            column="53"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#isOnHost`"
+        errorLine1="                    if (!serviceInfo.isOnHost()) {"
+        errorLine2="                                     ~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="772"
+            column="38"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#getOffHostSecureElement`"
+        errorLine1="                        return serviceInfo.getOffHostSecureElement() == null ?"
+        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="773"
+            column="44"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#getOffHostSecureElement`"
+        errorLine1='                                "Offhost" : serviceInfo.getOffHostSecureElement();'
+        errorLine2="                                                        ~~~~~~~~~~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="774"
+            column="57"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#getDescription`"
+        errorLine1="            return (serviceInfo != null ? serviceInfo.getDescription() : null);"
+        errorLine2="                                                      ~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="798"
+            column="55"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.nfc.cardemulation.ApduServiceInfo#getDescription`"
+        errorLine1="                return (serviceInfo != null ? serviceInfo.getDescription() : null);"
+        errorLine2="                                                          ~~~~~~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="808"
+            column="59"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.app.Activity#isResumed`"
+        errorLine1="        if (!activity.isResumed()) {"
+        errorLine2="                      ~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="1032"
+            column="23"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.app.Activity#isResumed`"
+        errorLine1="        if (!activity.isResumed()) {"
+        errorLine2="                      ~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/CardEmulation.java"
+            line="1066"
+            column="23"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.app.Activity#isResumed`"
+        errorLine1="            resumed = activity.isResumed();"
+        errorLine2="                               ~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/NfcActivityManager.java"
+            line="124"
+            column="32"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.app.Activity#isResumed`"
+        errorLine1="        if (!activity.isResumed()) {"
+        errorLine2="                      ~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/NfcAdapter.java"
+            line="2457"
+            column="23"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.app.Activity#isResumed`"
+        errorLine1="        if (!activity.isResumed()) {"
+        errorLine2="                      ~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/NfcFCardEmulation.java"
+            line="315"
+            column="23"/>
+    </issue>
+
+    <issue
+        id="NewApi"
+        message="Call requires API level 35 (current min is 34): `android.app.Activity#isResumed`"
+        errorLine1="        if (!activity.isResumed()) {"
+        errorLine2="                      ~~~~~~~~~">
+        <location
+            file="frameworks/base/nfc/java/android/nfc/cardemulation/NfcFCardEmulation.java"
+            line="351"
+            column="23"/>
+    </issue>
+
+</issues>
\ No newline at end of file
diff --git a/packages/SystemUI/aconfig/accessibility.aconfig b/packages/SystemUI/aconfig/accessibility.aconfig
index f7b1a26..7ba889b 100644
--- a/packages/SystemUI/aconfig/accessibility.aconfig
+++ b/packages/SystemUI/aconfig/accessibility.aconfig
@@ -36,3 +36,10 @@
     description: "Animates the floating menu's transition between curved and jagged edges."
     bug: "281140482"
 }
+
+flag {
+    name: "create_windowless_window_magnifier"
+    namespace: "accessibility"
+    description: "Uses SurfaceControlViewHost to create the magnifier for window magnification."
+    bug: "280992417"
+}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricCustomizedViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricCustomizedViewBinder.kt
index 22b02da..16e7f05 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricCustomizedViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricCustomizedViewBinder.kt
@@ -20,9 +20,9 @@
 import android.content.res.Resources
 import android.content.res.Resources.Theme
 import android.graphics.Paint
-import android.hardware.biometrics.PromptContentListItem
-import android.hardware.biometrics.PromptContentListItemBulletedText
-import android.hardware.biometrics.PromptContentListItemPlainText
+import android.hardware.biometrics.PromptContentItem
+import android.hardware.biometrics.PromptContentItemBulletedText
+import android.hardware.biometrics.PromptContentItemPlainText
 import android.hardware.biometrics.PromptContentView
 import android.hardware.biometrics.PromptVerticalListContentView
 import android.text.SpannableString
@@ -111,21 +111,21 @@
     return inflater.inflate(R.layout.biometric_prompt_content_row_layout, null) as LinearLayout
 }
 
-private fun PromptContentListItem.doesExceedMaxLinesIfTwoColumn(
+private fun PromptContentItem.doesExceedMaxLinesIfTwoColumn(
     resources: Resources,
 ): Boolean {
     val passedInText: CharSequence =
         when (this) {
-            is PromptContentListItemPlainText -> text
-            is PromptContentListItemBulletedText -> text
+            is PromptContentItemPlainText -> text
+            is PromptContentItemBulletedText -> text
             else -> {
-                throw IllegalStateException("No such ListItem: $this")
+                throw IllegalStateException("No such PromptContentItem: $this")
             }
         }
 
     when (this) {
-        is PromptContentListItemPlainText,
-        is PromptContentListItemBulletedText -> {
+        is PromptContentItemPlainText,
+        is PromptContentItemBulletedText -> {
             val dialogMargin =
                 resources.getDimensionPixelSize(R.dimen.biometric_dialog_border_padding)
             val halfDialogWidth =
@@ -155,12 +155,12 @@
             return numLines > maxLines
         }
         else -> {
-            throw IllegalStateException("No such ListItem: $this")
+            throw IllegalStateException("No such PromptContentItem: $this")
         }
     }
 }
 
-private fun PromptContentListItem.toView(
+private fun PromptContentItem.toView(
     resources: Resources,
     inflater: LayoutInflater,
     theme: Theme,
@@ -171,10 +171,10 @@
     textView.layoutParams = lp
 
     when (this) {
-        is PromptContentListItemPlainText -> {
+        is PromptContentItemPlainText -> {
             textView.text = text
         }
-        is PromptContentListItemBulletedText -> {
+        is PromptContentItemBulletedText -> {
             val bulletedText = SpannableString(text)
             val span =
                 BulletSpan(
@@ -186,25 +186,25 @@
             textView.text = bulletedText
         }
         else -> {
-            throw IllegalStateException("No such ListItem: $this")
+            throw IllegalStateException("No such PromptContentItem: $this")
         }
     }
     return textView
 }
 
-private fun PromptContentListItem.getListItemPadding(resources: Resources): Int {
+private fun PromptContentItem.getListItemPadding(resources: Resources): Int {
     var listItemPadding =
         resources.getDimensionPixelSize(
             R.dimen.biometric_prompt_content_list_item_padding_horizontal
         ) * 2
     when (this) {
-        is PromptContentListItemPlainText -> {}
-        is PromptContentListItemBulletedText -> {
+        is PromptContentItemPlainText -> {}
+        is PromptContentItemBulletedText -> {
             listItemPadding +=
                 getListItemBulletRadius(resources) * 2 + getListItemBulletGapWidth(resources)
         }
         else -> {
-            throw IllegalStateException("No such ListItem: $this")
+            throw IllegalStateException("No such PromptContentItem: $this")
         }
     }
     return listItemPadding
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java
index 2afb3a1..d86d123 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationAnimationControllerTest.java
@@ -640,11 +640,10 @@
     @Test
     public void deleteWindowMagnification_enabling_expectedValuesAndInvokeCallback()
             throws RemoteException {
-
         enableWindowMagnificationAndWaitAnimating(mWaitPartialAnimationDuration,
                 mAnimationCallback);
 
-        Mockito.reset(mSpyController);
+        resetMockObjects();
         getInstrumentation().runOnMainSync(() -> {
             mWindowMagnificationAnimationController.deleteWindowMagnification(
                     mAnimationCallback2);
@@ -658,6 +657,11 @@
             mValueAnimator.end();
         });
 
+        // wait for animation returns
+        waitForIdleSync();
+
+        // {@link ValueAnimator.AnimatorUpdateListener#onAnimationUpdate(ValueAnimator)} will only
+        // be triggered once in {@link ValueAnimator#end()}
         verify(mSpyController).enableWindowMagnificationInternal(
                 mScaleCaptor.capture(),
                 mCenterXCaptor.capture(), mCenterYCaptor.capture(),
@@ -717,7 +721,11 @@
         deleteWindowMagnificationAndWaitAnimating(mWaitPartialAnimationDuration,
                 mAnimationCallback);
 
-        deleteWindowMagnificationAndWaitAnimating(0, null);
+        // Verifying that WindowMagnificationController#deleteWindowMagnification is never called
+        // in previous steps
+        verify(mSpyController, never()).deleteWindowMagnification();
+
+        deleteWindowMagnificationWithoutAnimation();
 
         verify(mSpyController).deleteWindowMagnification();
         verifyFinalSpec(Float.NaN, Float.NaN, Float.NaN);
@@ -810,6 +818,8 @@
             mWindowMagnificationAnimationController.enableWindowMagnification(
                     targetScale, targetCenterX, targetCenterY, null);
         });
+        // wait for animation returns
+        waitForIdleSync();
     }
 
     private void enableWindowMagnificationAndWaitAnimating(long duration,
@@ -829,12 +839,16 @@
                     targetScale, targetCenterX, targetCenterY, callback);
             advanceTimeBy(duration);
         });
+        // wait for animation returns
+        waitForIdleSync();
     }
 
     private void deleteWindowMagnificationWithoutAnimation() {
         getInstrumentation().runOnMainSync(() -> {
             mWindowMagnificationAnimationController.deleteWindowMagnification(null);
         });
+        // wait for animation returns
+        waitForIdleSync();
     }
 
     private void deleteWindowMagnificationAndWaitAnimating(long duration,
@@ -843,6 +857,8 @@
             mWindowMagnificationAnimationController.deleteWindowMagnification(callback);
             advanceTimeBy(duration);
         });
+        // wait for animation returns
+        waitForIdleSync();
     }
 
     private void verifyStartValue(ArgumentCaptor<Float> captor, float startValue) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt
index bd4973d..a57b890 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/domain/model/BiometricPromptRequestTest.kt
@@ -1,6 +1,6 @@
 package com.android.systemui.biometrics.domain.model
 
-import android.hardware.biometrics.PromptContentListItemBulletedText
+import android.hardware.biometrics.PromptContentItemBulletedText
 import android.hardware.biometrics.PromptVerticalListContentView
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
@@ -28,7 +28,8 @@
         val contentView =
             PromptVerticalListContentView.Builder()
                 .setDescription("content description")
-                .addListItem(PromptContentListItemBulletedText("content text"))
+                .addListItem(PromptContentItemBulletedText("content item 1"))
+                .addListItem(PromptContentItemBulletedText("content item 2"), 1)
                 .build()
 
         val fpPros = fingerprintSensorPropertiesInternal().first()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
index bf61c2e..3944054 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
@@ -18,7 +18,7 @@
 
 import android.content.res.Configuration
 import android.graphics.Point
-import android.hardware.biometrics.PromptContentListItemBulletedText
+import android.hardware.biometrics.PromptContentItemBulletedText
 import android.hardware.biometrics.PromptContentView
 import android.hardware.biometrics.PromptInfo
 import android.hardware.biometrics.PromptVerticalListContentView
@@ -140,7 +140,8 @@
         selector.resetPrompt()
         promptContentView =
             PromptVerticalListContentView.Builder()
-                .addListItem(PromptContentListItemBulletedText("test"))
+                .addListItem(PromptContentItemBulletedText("content item 1"))
+                .addListItem(PromptContentItemBulletedText("content item 2"), 1)
                 .build()
 
         viewModel =