Merge "[Ravenwood] Support "partial allowlisting"." into main
diff --git a/ADPF_OWNERS b/ADPF_OWNERS
index bcdc338..c7ff464 100644
--- a/ADPF_OWNERS
+++ b/ADPF_OWNERS
@@ -1,4 +1,5 @@
-sumir@google.com
+adyabr@google.com
 chingtangyu@google.com
-xwxw@google.com
 mattbuckley@google.com
+sumir@google.com
+xwxw@google.com
\ No newline at end of file
diff --git a/core/java/android/appwidget/OWNERS b/core/java/android/appwidget/OWNERS
index 0e85d5b..1dc4cbb 100644
--- a/core/java/android/appwidget/OWNERS
+++ b/core/java/android/appwidget/OWNERS
@@ -3,5 +3,4 @@
 pinyaoting@google.com
 suprabh@google.com
 sunnygoyal@google.com
-zakcohen@google.com
 shamalip@google.com
diff --git a/core/java/android/text/Html.java b/core/java/android/text/Html.java
index ae12132..a42eece 100644
--- a/core/java/android/text/Html.java
+++ b/core/java/android/text/Html.java
@@ -614,7 +614,7 @@
                 if (style[j] instanceof TypefaceSpan) {
                     String s = ((TypefaceSpan) style[j]).getFamily();
 
-                    if (s.equals("monospace")) {
+                    if ("monospace".equals(s)) {
                         out.append("</tt>");
                     }
                 }
diff --git a/core/java/android/view/textclassifier/intent/OWNERS b/core/java/android/view/textclassifier/intent/OWNERS
index 3465fe6..dc18514 100644
--- a/core/java/android/view/textclassifier/intent/OWNERS
+++ b/core/java/android/view/textclassifier/intent/OWNERS
@@ -1,6 +1,5 @@
 # Bug component: 709498
 
-mns@google.com
 toki@google.com
 svetoslavganov@android.com
 svetoslavganov@google.com
diff --git a/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java b/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java
index 7ee22f3..69c0480 100644
--- a/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java
+++ b/core/java/com/android/internal/pm/pkg/component/ParsedComponentImpl.java
@@ -157,7 +157,7 @@
 
     @Override
     public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.name);
+        sForInternedString.parcel(this.name, dest, flags);
         dest.writeInt(this.getIcon());
         dest.writeInt(this.getLabelRes());
         dest.writeCharSequence(this.getNonLocalizedLabel());
@@ -175,7 +175,7 @@
         // We use the boot classloader for all classes that we load.
         final ClassLoader boot = Object.class.getClassLoader();
         //noinspection ConstantConditions
-        this.name = in.readString();
+        this.name = sForInternedString.unparcel(in);
         this.icon = in.readInt();
         this.labelRes = in.readInt();
         this.nonLocalizedLabel = in.readCharSequence();
diff --git a/core/proto/OWNERS b/core/proto/OWNERS
index b51f72d..aa8f841 100644
--- a/core/proto/OWNERS
+++ b/core/proto/OWNERS
@@ -5,7 +5,6 @@
 singhtejinder@google.com
 yanmin@google.com
 yaochen@google.com
-yro@google.com
 zhouwenjie@google.com
 
 # Frameworks
diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp
index 715153b..77879cf 100644
--- a/libs/hwui/renderthread/RenderProxy.cpp
+++ b/libs/hwui/renderthread/RenderProxy.cpp
@@ -206,7 +206,7 @@
 }
 
 bool RenderProxy::copyLayerInto(DeferredLayerUpdater* layer, SkBitmap& bitmap) {
-    ATRACE_NAME("TextureView#getBitmap");
+    ATRACE_NAME("RenderProxy#copyLayerInto readback");
     auto& thread = RenderThread::getInstance();
     return thread.queue().runSync([&]() -> bool {
         return thread.readback().copyLayerInto(layer, &bitmap) == CopyResult::Success;
@@ -473,7 +473,7 @@
 }
 
 int RenderProxy::copyHWBitmapInto(Bitmap* hwBitmap, SkBitmap* bitmap) {
-    ATRACE_NAME("HardwareBitmap readback");
+    ATRACE_NAME("RenderProxy#copyHWBitmapInto readback");
     RenderThread& thread = RenderThread::getInstance();
     if (RenderThread::isCurrent()) {
         // TODO: fix everything that hits this. We should never be triggering a readback ourselves.
@@ -485,6 +485,7 @@
 }
 
 int RenderProxy::copyImageInto(const sk_sp<SkImage>& image, SkBitmap* bitmap) {
+    ATRACE_NAME("RenderProxy#copyImageInto readback");
     RenderThread& thread = RenderThread::getInstance();
     if (RenderThread::isCurrent()) {
         // TODO: fix everything that hits this. We should never be triggering a readback ourselves.
diff --git a/packages/NeuralNetworks/OWNERS b/packages/NeuralNetworks/OWNERS
index 6b39150..bf3c8fe 100644
--- a/packages/NeuralNetworks/OWNERS
+++ b/packages/NeuralNetworks/OWNERS
@@ -1,5 +1,4 @@
 # Bug component: 195575
 
 sandeepbandaru@google.com
-shivanker@google.com
-shiqing@google.com
\ No newline at end of file
+shiqing@google.com
diff --git a/packages/SettingsLib/src/com/android/settingslib/connectivity/OWNERS b/packages/SettingsLib/src/com/android/settingslib/connectivity/OWNERS
index 9f15c1b..b676d8d 100644
--- a/packages/SettingsLib/src/com/android/settingslib/connectivity/OWNERS
+++ b/packages/SettingsLib/src/com/android/settingslib/connectivity/OWNERS
@@ -1,6 +1,5 @@
 # Default reviewers for this and subdirectories.
 andychou@google.com
-arcwang@google.com
 changbetty@google.com
 qal@google.com
 wengsu@google.com
diff --git a/packages/SettingsLib/src/com/android/settingslib/qrcode/OWNERS b/packages/SettingsLib/src/com/android/settingslib/qrcode/OWNERS
index 372eb81..921ffed 100644
--- a/packages/SettingsLib/src/com/android/settingslib/qrcode/OWNERS
+++ b/packages/SettingsLib/src/com/android/settingslib/qrcode/OWNERS
@@ -1,5 +1,4 @@
 # Default reviewers for this and subdirectories.
-bonianchen@google.com
 changbetty@google.com
 wengsu@google.com
 zoeychen@google.com
diff --git a/packages/SystemUI/src/com/android/systemui/ailabs/OWNERS b/packages/SystemUI/src/com/android/systemui/ailabs/OWNERS
index 429b4b0..329aa07 100644
--- a/packages/SystemUI/src/com/android/systemui/ailabs/OWNERS
+++ b/packages/SystemUI/src/com/android/systemui/ailabs/OWNERS
@@ -3,6 +3,5 @@
 dupin@google.com
 linyuh@google.com
 pauldpong@google.com
-praveenj@google.com
 vicliang@google.com
 yuklimko@google.com
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
index cd59d4e..7b685f4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
@@ -384,6 +384,7 @@
         mAnimationScheduler.addCallback(mAnimationCallback);
         mUserInfoController.addCallback(mOnUserInfoChangedListener);
         mStatusBarStateController.addCallback(mStatusBarStateListener);
+        mStatusBarState = mStatusBarStateController.getState();
         mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback);
         mDisableStateTracker.startTracking(mCommandQueue, mView.getDisplay().getDisplayId());
         if (mTintedIconManager == null) {
diff --git a/packages/Vcn/TEST_MAPPING b/packages/Vcn/TEST_MAPPING
index 9722a83..9ca5304 100644
--- a/packages/Vcn/TEST_MAPPING
+++ b/packages/Vcn/TEST_MAPPING
@@ -14,5 +14,13 @@
     {
       "name": "CtsVcnTestCases"
     }
+  ],
+  "tethering-mainline-presubmit": [
+    {
+      "name": "FrameworksVcnTests"
+    },
+    {
+      "name": "CtsVcnTestCases"
+    }
   ]
 }
\ No newline at end of file
diff --git a/services/core/java/com/android/server/am/OWNERS b/services/core/java/com/android/server/am/OWNERS
index ebe1fe8..534247e 100644
--- a/services/core/java/com/android/server/am/OWNERS
+++ b/services/core/java/com/android/server/am/OWNERS
@@ -66,7 +66,7 @@
 per-file ActivityManager* = file:/ACTIVITY_SECURITY_OWNERS
 
 # Aconfig Flags
-per-file flags.aconfig = yamasani@google.com, bills@google.com, nalini@google.com
+per-file flags.aconfig = yamasani@google.com, nalini@google.com
 
 # Londoners
 michaelwr@google.com #{LAST_RESORT_SUGGESTION}
@@ -75,4 +75,4 @@
 # Default
 yamasani@google.com
 hackbod@google.com #{LAST_RESORT_SUGGESTION}
-omakoto@google.com #{LAST_RESORT_SUGGESTION}
\ No newline at end of file
+omakoto@google.com #{LAST_RESORT_SUGGESTION}
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/OWNERS b/services/core/java/com/android/server/locksettings/recoverablekeystore/OWNERS
index bb487fb..ebf7e6b 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/OWNERS
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/OWNERS
@@ -1,4 +1,3 @@
 aseemk@google.com
 bozhu@google.com
 dementyev@google.com
-robertberry@google.com
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 21212e5..fa97a1d 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -835,11 +835,12 @@
      */
     private final ToBooleanFunction<WindowState> mFindFocusedWindow = w -> {
         final ActivityRecord focusedApp = mFocusedApp;
+        final boolean canReceiveKeys = w.canReceiveKeys();
         ProtoLog.v(WM_DEBUG_FOCUS, "Looking for focus: %s, flags=%d, canReceive=%b, reason=%s",
-                w, w.mAttrs.flags, w.canReceiveKeys(),
+                w, w.mAttrs.flags, canReceiveKeys,
                 w.canReceiveKeysReason(false /* fromUserTouch */));
 
-        if (!w.canReceiveKeys()) {
+        if (!canReceiveKeys) {
             return false;
         }
 
@@ -3866,7 +3867,6 @@
         if (mTmpWindow == null) {
             ProtoLog.v(WM_DEBUG_FOCUS_LIGHT, "findFocusedWindow: No focusable windows, display=%d",
                     getDisplayId());
-            return null;
         }
         return mTmpWindow;
     }
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
index 87c9db2..acbce36 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
@@ -354,14 +354,20 @@
 
     @After
     public void tearDown_baseServices() throws Exception {
-        mStorage.closeDatabase();
+        if (mStorage != null) {
+            mStorage.closeDatabase();
+        }
         File db = InstrumentationRegistry.getContext().getDatabasePath("locksettings.db");
         assertTrue(!db.exists() || db.delete());
 
-        File storageDir = mStorage.mStorageDir;
-        assertTrue(FileUtils.deleteContents(storageDir));
+        if (mStorage != null) {
+            File storageDir = mStorage.mStorageDir;
+            assertTrue(FileUtils.deleteContents(storageDir));
+        }
 
-        mPasswordSlotManager.cleanup();
+        if (mPasswordSlotManager != null) {
+            mPasswordSlotManager.cleanup();
+        }
     }
 
     protected void flushHandlerTasks() {
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
index 02b86db..387b89a 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
@@ -124,7 +124,9 @@
 
     @After
     public void tearDown() throws Exception {
-        mStorage.closeDatabase();
+        if (mStorage != null) {
+            mStorage.closeDatabase();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java b/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java
index 2faf6a2..2c2b937 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/PasswordSlotManagerTests.java
@@ -49,7 +49,9 @@
 
     @After
     public void tearDown() throws Exception {
-        mManager.cleanup();
+        if (mManager != null) {
+            mManager.cleanup();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java
index 1514de0..5add74e 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/KeySyncTaskTest.java
@@ -156,9 +156,12 @@
 
     @After
     public void tearDown() {
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
-
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
         File file = new File(InstrumentationRegistry.getTargetContext().getFilesDir(),
                 SNAPSHOT_TOP_LEVEL_DIRECTORY);
         FileUtils.deleteContentsAndDir(file);
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java
index c09e09c..46eaba7 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java
@@ -117,8 +117,12 @@
 
     @After
     public void tearDown() {
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java
index 6413026..e6a6e36 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyGeneratorTest.java
@@ -89,8 +89,12 @@
         keyStore.load(/*param=*/ null);
         keyStore.deleteEntry(WRAPPING_KEY_ALIAS);
 
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java
index 7641fb9..878c838 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManagerTest.java
@@ -230,9 +230,15 @@
 
     @After
     public void tearDown() {
-        mRemoteLockscreenValidationSessionStorage.finishSession(mUserId);
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
+        if (mRemoteLockscreenValidationSessionStorage != null) {
+            mRemoteLockscreenValidationSessionStorage.finishSession(mUserId);
+        }
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java
index bbd9223..fb98fab 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelperTest.java
@@ -18,6 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.sqlite.SQLiteDatabase;
@@ -36,8 +38,6 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
-
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 public class RecoverableKeyStoreDbHelperTest {
@@ -110,7 +110,9 @@
 
     @After
     public void tearDown() throws Exception {
-        mDatabase.close();
+        if (mDatabase != null) {
+            mDatabase.close();
+        }
     }
 
     private void createV2Tables() throws Exception {
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java
index 8bc14fc..a77d8bc 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbTest.java
@@ -72,8 +72,12 @@
 
     @After
     public void tearDown() {
-        mRecoverableKeyStoreDb.close();
-        mDatabaseFile.delete();
+        if (mRecoverableKeyStoreDb != null) {
+            mRecoverableKeyStoreDb.close();
+        }
+        if (mDatabaseFile != null) {
+            mDatabaseFile.delete();
+        }
     }
 
     @Test
diff --git a/startop/OWNERS b/startop/OWNERS
index 11d5ad0..3414a74 100644
--- a/startop/OWNERS
+++ b/startop/OWNERS
@@ -1,2 +1 @@
 include platform/art:/OWNERS
-keunyoung@google.com
diff --git a/tests/SoundTriggerTestApp/OWNERS b/tests/SoundTriggerTestApp/OWNERS
index a0fcfc5..1e41886 100644
--- a/tests/SoundTriggerTestApp/OWNERS
+++ b/tests/SoundTriggerTestApp/OWNERS
@@ -1,2 +1 @@
 include /media/java/android/media/soundtrigger/OWNERS
-mdooley@google.com
diff --git a/tests/vcn/Android.bp b/tests/vcn/Android.bp
index 661ed07..5ad1d1dc 100644
--- a/tests/vcn/Android.bp
+++ b/tests/vcn/Android.bp
@@ -17,8 +17,9 @@
     // For access hidden connectivity methods in tests
     defaults: ["framework-connectivity-test-defaults"],
 
-    // TODO: b/374174952 Use 36 after Android B finalization
-    min_sdk_version: "35",
+    // Tethering module is released in R so this test needs to be installable
+    // on R
+    min_sdk_version: "30",
 
     srcs: [
         "java/**/*.java",
diff --git a/tests/vcn/AndroidManifest.xml b/tests/vcn/AndroidManifest.xml
index 08effbd..6e8b4ac 100644
--- a/tests/vcn/AndroidManifest.xml
+++ b/tests/vcn/AndroidManifest.xml
@@ -17,7 +17,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.frameworks.tests.vcn">
     <!-- TODO: b/374174952 Use 36 after Android B finalization -->
-    <uses-sdk android:minSdkVersion="35" android:targetSdkVersion="35" />
+    <uses-sdk android:minSdkVersion="30" android:targetSdkVersion="35" />
 
     <application>
         <uses-library android:name="android.test.runner" />