Merge "Add RescuePartyTests to postsubmits" into main
diff --git a/apex/jobscheduler/service/Android.bp b/apex/jobscheduler/service/Android.bp
index ace56d4..06c7d64 100644
--- a/apex/jobscheduler/service/Android.bp
+++ b/apex/jobscheduler/service/Android.bp
@@ -24,6 +24,7 @@
         "app-compat-annotations",
         "error_prone_annotations",
         "framework",
+        "keepanno-annotations",
         "services.core",
         "unsupportedappusage",
     ],
diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
index 19bc716..613678b 100644
--- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
+++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
@@ -130,6 +130,8 @@
 import com.android.server.LocalServices;
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.usage.AppIdleHistory.AppUsageHistory;
+import com.android.tools.r8.keepanno.annotations.KeepItemKind;
+import com.android.tools.r8.keepanno.annotations.UsedByReflection;
 
 import libcore.util.EmptyArray;
 
@@ -588,6 +590,8 @@
         }
     }
 
+    // This constructor is reflectively invoked from framework code in AppStandbyInternal.
+    @UsedByReflection(kind = KeepItemKind.CLASS_AND_METHODS)
     public AppStandbyController(Context context) {
         this(new Injector(context, AppSchedulingModuleThread.get().getLooper()));
     }
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 3ba0d59..8acaf3b 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -5143,9 +5143,9 @@
      * of negative QP and positive QP are chosen wisely, the overall viewing experience can be
      * improved.
      * <p>
-     * If byte array size is too small than the expected size, components may ignore the
-     * configuration silently. If the byte array exceeds the expected size, components shall use
-     * the initial portion and ignore the rest.
+     * If byte array size is smaller than the expected size, components will ignore the
+     * configuration and print an error message. If the byte array exceeds the expected size,
+     * components will use the initial portion and ignore the rest.
      * <p>
      * The scope of this key is throughout the encoding session until it is reconfigured during
      * running state.
@@ -5159,7 +5159,8 @@
      * Set the region of interest as QpOffset-Rects on the next queued input frame.
      * <p>
      * The associated value is a String in the format "Top1,Left1-Bottom1,Right1=Offset1;Top2,
-     * Left2-Bottom2,Right2=Offset2;...". Co-ordinates (Top, Left), (Top, Right), (Bottom, Left)
+     * Left2-Bottom2,Right2=Offset2;...". If the configuration doesn't follow this pattern,
+     * it will be ignored. Co-ordinates (Top, Left), (Top, Right), (Bottom, Left)
      * and (Bottom, Right) form the vertices of bounding box of region of interest in pixels.
      * Pixel (0, 0) points to the top-left corner of the frame. Offset is the suggested
      * quantization parameter (QP) offset of the blocks in the bounding box. The bounding box
@@ -5171,9 +5172,10 @@
      * negative QP and positive QP are chosen wisely, the overall viewing experience can be
      * improved.
      * <p>
-     * If Roi rect is not valid that is bounding box width is < 0 or bounding box height is < 0,
-     * components may ignore the configuration silently. If Roi rect extends outside frame
-     * boundaries, then rect shall be clamped to the frame boundaries.
+     * If roi (region of interest) rect is outside the frame boundaries, that is, left < 0 or
+     * top < 0 or right > width or bottom > height, then rect shall be clamped to the frame
+     * boundaries. If roi rect is not valid, that is left > right or top > bottom, then the
+     * parameter setting is ignored.
      * <p>
      * The scope of this key is throughout the encoding session until it is reconfigured during
      * running state.
diff --git a/packages/CrashRecovery/aconfig/flags.aconfig b/packages/CrashRecovery/aconfig/flags.aconfig
index 80412321..225f8c6 100644
--- a/packages/CrashRecovery/aconfig/flags.aconfig
+++ b/packages/CrashRecovery/aconfig/flags.aconfig
@@ -26,8 +26,8 @@
 }
 
 flag {
-    name: "reenable_settings_resets"
+    name: "deprecate_flags_and_settings_resets"
     namespace: "modularization"
-    description: "Re-enables settings resets only, deletes flag resets"
+    description: "Deletes flag and settings resets"
     bug: "333847376"
 }
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/OWNERS b/packages/SettingsLib/src/com/android/settingslib/bluetooth/OWNERS
index 7669e79b..f8c3a93 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/OWNERS
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/OWNERS
@@ -1,9 +1,4 @@
 # Default reviewers for this and subdirectories.
-siyuanh@google.com
-hughchen@google.com
-timhypeng@google.com
-robertluo@google.com
-songferngwang@google.com
 yqian@google.com
 chelseahao@google.com
 yiyishen@google.com
diff --git a/services/Android.bp b/services/Android.bp
index 0fbbd16..a0d3454 100644
--- a/services/Android.bp
+++ b/services/Android.bp
@@ -239,6 +239,7 @@
     libs: [
         "android.hidl.manager-V1.0-java",
         "framework-tethering.stubs.module_lib",
+        "keepanno-annotations",
         "service-art.stubs.system_server",
         "service-permission.stubs.system_server",
         "service-rkp.stubs.system_server",
diff --git a/services/core/Android.bp b/services/core/Android.bp
index 827c7b3..fa323fd 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -182,6 +182,7 @@
         "android.hardware.vibrator-V2-java",
         "app-compat-annotations",
         "framework-tethering.stubs.module_lib",
+        "keepanno-annotations",
         "service-art.stubs.system_server",
         "service-permission.stubs.system_server",
         "service-rkp.stubs.system_server",
diff --git a/services/core/java/com/android/server/RescueParty.java b/services/core/java/com/android/server/RescueParty.java
index 189b2495..dfd148d 100644
--- a/services/core/java/com/android/server/RescueParty.java
+++ b/services/core/java/com/android/server/RescueParty.java
@@ -58,7 +58,6 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -493,14 +492,6 @@
 
     private static void executeRescueLevelInternalOld(Context context, int level, @Nullable
             String failedPackage) throws Exception {
-
-        // Note: DeviceConfig reset is disabled currently and would be enabled using the flag,
-        // after we have figured out a way to reset flags without interfering with trunk
-        // development. TODO: b/287618292 For enabling flag resets.
-        if (!Flags.allowRescuePartyFlagResets() && level <= LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS) {
-            return;
-        }
-
         CrashRecoveryStatsLog.write(CrashRecoveryStatsLog.RESCUE_PARTY_RESET_REPORTED,
                 level, levelToString(level));
         // Try our best to reset all settings possible, and once finished
@@ -508,43 +499,10 @@
         Exception res = null;
         switch (level) {
             case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS:
-                try {
-                    resetAllSettingsIfNecessary(context, Settings.RESET_MODE_UNTRUSTED_DEFAULTS,
-                            level);
-                } catch (Exception e) {
-                    res = e;
-                }
-                try {
-                    resetDeviceConfig(context, /*isScoped=*/true, failedPackage);
-                } catch (Exception e) {
-                    res = e;
-                }
                 break;
             case LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES:
-                try {
-                    resetAllSettingsIfNecessary(context, Settings.RESET_MODE_UNTRUSTED_CHANGES,
-                            level);
-                } catch (Exception e) {
-                    res = e;
-                }
-                try {
-                    resetDeviceConfig(context, /*isScoped=*/true, failedPackage);
-                } catch (Exception e) {
-                    res = e;
-                }
                 break;
             case LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS:
-                try {
-                    resetAllSettingsIfNecessary(context, Settings.RESET_MODE_TRUSTED_DEFAULTS,
-                            level);
-                } catch (Exception e) {
-                    res = e;
-                }
-                try {
-                    resetDeviceConfig(context, /*isScoped=*/false, failedPackage);
-                } catch (Exception e) {
-                    res = e;
-                }
                 break;
             case LEVEL_WARM_REBOOT:
                 executeWarmReboot(context, level, failedPackage);
@@ -572,16 +530,8 @@
                 level, levelToString(level));
         switch (level) {
             case RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET:
-                // Enable deviceConfig reset behind flag
-                if (Flags.allowRescuePartyFlagResets()) {
-                    resetDeviceConfig(context, /*isScoped=*/true, failedPackage);
-                }
                 break;
             case RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET:
-                // Enable deviceConfig reset behind flag
-                if (Flags.allowRescuePartyFlagResets()) {
-                    resetDeviceConfig(context, /*isScoped=*/false, failedPackage);
-                }
                 break;
             case RESCUE_LEVEL_WARM_REBOOT:
                 executeWarmReboot(context, level, failedPackage);
@@ -732,61 +682,6 @@
         }
     }
 
-    private static void resetDeviceConfig(Context context, boolean isScoped,
-            @Nullable String failedPackage) throws Exception {
-        final ContentResolver resolver = context.getContentResolver();
-        try {
-            if (!isScoped || failedPackage == null) {
-                resetAllAffectedNamespaces(context);
-            } else {
-                performScopedReset(context, failedPackage);
-            }
-        } catch (Exception e) {
-            throw new RuntimeException("Failed to reset config settings", e);
-        }
-    }
-
-    private static void resetAllAffectedNamespaces(Context context) {
-        RescuePartyObserver rescuePartyObserver = RescuePartyObserver.getInstance(context);
-        Set<String> allAffectedNamespaces = rescuePartyObserver.getAllAffectedNamespaceSet();
-
-        Slog.w(TAG,
-                "Performing reset for all affected namespaces: "
-                        + Arrays.toString(allAffectedNamespaces.toArray()));
-        Iterator<String> it = allAffectedNamespaces.iterator();
-        while (it.hasNext()) {
-            String namespace = it.next();
-            // Don't let RescueParty reset the namespace for RescueParty switches.
-            if (NAMESPACE_CONFIGURATION.equals(namespace)) {
-                continue;
-            }
-            DeviceConfig.resetToDefaults(DEVICE_CONFIG_RESET_MODE, namespace);
-        }
-    }
-
-    private static void performScopedReset(Context context, @NonNull String failedPackage) {
-        RescuePartyObserver rescuePartyObserver = RescuePartyObserver.getInstance(context);
-        Set<String> affectedNamespaces = rescuePartyObserver.getAffectedNamespaceSet(
-                failedPackage);
-        // If we can't find namespaces affected for current package,
-        // skip this round of reset.
-        if (affectedNamespaces != null) {
-            Slog.w(TAG,
-                    "Performing scoped reset for package: " + failedPackage
-                            + ", affected namespaces: "
-                            + Arrays.toString(affectedNamespaces.toArray()));
-            Iterator<String> it = affectedNamespaces.iterator();
-            while (it.hasNext()) {
-                String namespace = it.next();
-                // Don't let RescueParty reset the namespace for RescueParty switches.
-                if (NAMESPACE_CONFIGURATION.equals(namespace)) {
-                    continue;
-                }
-                DeviceConfig.resetToDefaults(DEVICE_CONFIG_RESET_MODE, namespace);
-            }
-        }
-    }
-
     /**
      * Handle mitigation action for package failures. This observer will be register to Package
      * Watchdog and will receive calls about package failures. This observer is persistent so it
diff --git a/services/core/java/com/android/server/biometrics/sensors/BiometricServiceRegistry.java b/services/core/java/com/android/server/biometrics/sensors/BiometricServiceRegistry.java
index 6a2731d..5a493e4 100644
--- a/services/core/java/com/android/server/biometrics/sensors/BiometricServiceRegistry.java
+++ b/services/core/java/com/android/server/biometrics/sensors/BiometricServiceRegistry.java
@@ -120,11 +120,13 @@
         // Register each sensor individually with BiometricService
         final List<P> allProps = new ArrayList<>();
         for (T provider : providers) {
-            final List<P> props = provider.getSensorProperties();
-            for (P prop : props) {
-                registerService(biometricService, prop);
+            if(provider != null) {
+                final List<P> props = provider.getSensorProperties();
+                for (P prop : props) {
+                    registerService(biometricService, prop);
+                }
+                allProps.addAll(props);
             }
-            allProps.addAll(props);
         }
 
         finishRegistration(providers, allProps);
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index 88c24e0..cf4393b 100644
--- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
@@ -48,6 +48,7 @@
 import android.view.SurfaceControl;
 
 import com.android.internal.R;
+import com.android.internal.annotations.KeepForWeakReference;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.display.BrightnessSynchronizer;
 import com.android.internal.util.function.pooled.PooledLambda;
@@ -1394,8 +1395,9 @@
     }
 
     public static class Injector {
-        // Native callback.
+        // Ensure the callback is kept to preserve native weak reference lifecycle semantics.
         @SuppressWarnings("unused")
+        @KeepForWeakReference
         private ProxyDisplayEventReceiver mReceiver;
         public void setDisplayEventListenerLocked(Looper looper, DisplayEventListener listener) {
             mReceiver = new ProxyDisplayEventReceiver(looper, listener);
diff --git a/services/core/java/com/android/server/notification/RankingHelper.java b/services/core/java/com/android/server/notification/RankingHelper.java
index 773d10b..478868b 100644
--- a/services/core/java/com/android/server/notification/RankingHelper.java
+++ b/services/core/java/com/android/server/notification/RankingHelper.java
@@ -25,6 +25,10 @@
 import android.util.Slog;
 import android.util.proto.ProtoOutputStream;
 
+import com.android.tools.r8.keepanno.annotations.KeepItemKind;
+import com.android.tools.r8.keepanno.annotations.KeepTarget;
+import com.android.tools.r8.keepanno.annotations.UsesReflection;
+
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -41,7 +45,13 @@
     private final Context mContext;
     private final RankingHandler mRankingHandler;
 
-
+    @UsesReflection(
+            value = {
+                @KeepTarget(
+                        kind = KeepItemKind.CLASS_AND_MEMBERS,
+                        instanceOfClassConstantExclusive = NotificationSignalExtractor.class,
+                        methodName = "<init>")
+            })
     public RankingHelper(Context context, RankingHandler rankingHandler, RankingConfig config,
             ZenModeHelper zenHelper, NotificationUsageStats usageStats, String[] extractorNames) {
         mContext = context;
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 45ea2db3..2f2512d 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -131,6 +131,9 @@
 import com.android.server.wallpaper.WallpaperData.BindSource;
 import com.android.server.wm.ActivityTaskManagerInternal;
 import com.android.server.wm.WindowManagerInternal;
+import com.android.tools.r8.keepanno.annotations.KeepItemKind;
+import com.android.tools.r8.keepanno.annotations.KeepTarget;
+import com.android.tools.r8.keepanno.annotations.UsesReflection;
 
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -166,6 +169,13 @@
         }
 
         @Override
+        @UsesReflection(
+                value = {
+                    @KeepTarget(
+                            kind = KeepItemKind.CLASS_AND_MEMBERS,
+                            instanceOfClassConstantExclusive = IWallpaperManagerService.class,
+                            methodName = "<init>")
+                })
         public void onStart() {
             try {
                 final Class<? extends IWallpaperManagerService> klass =
diff --git a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java
index c18377d..3a4d02f 100644
--- a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java
@@ -40,6 +40,10 @@
 import android.os.Bundle;
 import android.text.TextUtils;
 
+import com.android.tools.r8.keepanno.annotations.KeepItemKind;
+import com.android.tools.r8.keepanno.annotations.KeepTarget;
+import com.android.tools.r8.keepanno.annotations.UsesReflection;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -179,6 +183,13 @@
         /**
          * Instantiates the device-specific {@link Provider}.
          */
+        @UsesReflection(
+                value = {
+                        @KeepTarget(
+                                kind = KeepItemKind.CLASS_AND_MEMBERS,
+                                instanceOfClassConstantExclusive = Provider.class,
+                                methodName = "<init>")
+                })
         static Provider fromResources(Resources res) {
             String name = res.getString(
                     com.android.internal.R.string.config_deviceSpecificDisplayAreaPolicyProvider);
diff --git a/services/proguard.flags b/services/proguard.flags
index a01e7dc..f84eff7 100644
--- a/services/proguard.flags
+++ b/services/proguard.flags
@@ -33,12 +33,6 @@
 -keep,allowoptimization,allowaccessmodification class * extends com.android.server.SystemService {
   public <methods>;
 }
--keep,allowoptimization,allowaccessmodification class * extends com.android.server.devicepolicy.BaseIDevicePolicyManager {
-  public <init>(...);
-}
--keep,allowoptimization,allowaccessmodification class com.android.server.wallpaper.WallpaperManagerService {
-  public <init>(...);
-}
 
 # Accessed from com.android.compos APEX
 -keep,allowoptimization,allowaccessmodification class com.android.internal.art.ArtStatsLog {
@@ -68,13 +62,6 @@
 -keep public class android.hidl.manager.** { *; }
 -keep public class com.android.server.wm.WindowManagerInternal { *; }
 
-# Notification extractors
-# TODO(b/210510433): Revisit and consider generating from frameworks/base/core/res/res/values/config.xml.
--keep,allowoptimization,allowaccessmodification public class com.android.server.notification.** implements com.android.server.notification.NotificationSignalExtractor
-
-# OEM provided DisplayAreaPolicy.Provider defined in frameworks/base/core/res/res/values/config.xml.
--keep,allowoptimization,allowaccessmodification class com.android.server.wm.** implements com.android.server.wm.DisplayAreaPolicy$Provider
-
 # JNI keep rules
 # The global keep rule for native methods allows stripping of such methods if they're unreferenced
 # in Java. However, because system_server explicitly registers these methods from native code,
@@ -118,9 +105,6 @@
 
 # Miscellaneous reflection keep rules
 # TODO(b/210510433): Revisit and fix with @Keep.
--keep,allowoptimization,allowaccessmodification class com.android.server.usage.AppStandbyController {
-  public <init>(...);
-}
 -keep,allowoptimization,allowaccessmodification class android.hardware.usb.gadget.** { *; }
 
 # Needed when optimizations enabled
diff --git a/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java b/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java
index 42814e7..3377899 100644
--- a/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java
@@ -74,7 +74,6 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 
@@ -227,9 +226,6 @@
         setCrashRecoveryPropRescueBootCount(0);
         SystemProperties.set(RescueParty.PROP_ENABLE_RESCUE, Boolean.toString(true));
         SystemProperties.set(PROP_DEVICE_CONFIG_DISABLE_FLAG, Boolean.toString(false));
-
-        // enable flag resets for tests
-        mSetFlagsRule.enableFlags(Flags.FLAG_ALLOW_RESCUE_PARTY_FLAG_RESETS);
     }
 
     @After
@@ -250,9 +246,6 @@
 
         noteBoot(1);
 
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_DEFAULTS, /*resetNamespaces=*/ null,
-                verifiedTimesMap);
-
         // Record DeviceConfig accesses
         RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext);
         DeviceConfig.MonitorCallback monitorCallback = mMonitorCallbackCaptor.getValue();
@@ -262,15 +255,8 @@
         final String[] expectedAllResetNamespaces = new String[]{NAMESPACE1, NAMESPACE2};
 
         noteBoot(2);
-
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_CHANGES, expectedAllResetNamespaces,
-                verifiedTimesMap);
-
         noteBoot(3);
 
-        verifySettingsResets(Settings.RESET_MODE_TRUSTED_DEFAULTS, expectedAllResetNamespaces,
-                verifiedTimesMap);
-
         noteBoot(4);
         assertTrue(RescueParty.isRebootPropertySet());
 
@@ -296,7 +282,6 @@
         final String[] expectedAllResetNamespaces = new String[]{NAMESPACE1, NAMESPACE2};
 
         noteBoot(1);
-        verifyDeviceConfigReset(expectedAllResetNamespaces, verifiedTimesMap);
 
         noteBoot(2);
         assertTrue(RescueParty.isRebootPropertySet());
@@ -321,20 +306,9 @@
         mSetFlagsRule.disableFlags(Flags.FLAG_RECOVERABILITY_DETECTION);
 
         noteAppCrash(1, true);
-
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_DEFAULTS, /*resetNamespaces=*/ null,
-                /*configResetVerifiedTimesMap=*/ null);
-
         noteAppCrash(2, true);
-
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_CHANGES, /*resetNamespaces=*/ null,
-                /*configResetVerifiedTimesMap=*/ null);
-
         noteAppCrash(3, true);
 
-        verifySettingsResets(Settings.RESET_MODE_TRUSTED_DEFAULTS, /*resetNamespaces=*/ null,
-                /*configResetVerifiedTimesMap=*/ null);
-
         noteAppCrash(4, true);
         assertTrue(RescueParty.isRebootPropertySet());
 
@@ -362,10 +336,8 @@
         final String[] expectedAllResetNamespaces = new String[]{NAMESPACE1, NAMESPACE2};
 
         noteAppCrash(1, true);
-        verifyDeviceConfigReset(expectedResetNamespaces, verifiedTimesMap);
 
         noteAppCrash(2, true);
-        verifyDeviceConfigReset(expectedAllResetNamespaces, verifiedTimesMap);
 
         noteAppCrash(3, true);
         assertTrue(RescueParty.isRebootPropertySet());
@@ -385,26 +357,13 @@
     }
 
     @Test
-    public void testNonPersistentAppOnlyPerformsFlagResets() {
+    public void testNonPersistentAppDoesntDoAnything() {
         // this is old test where the flag needs to be disabled
         mSetFlagsRule.disableFlags(Flags.FLAG_RECOVERABILITY_DETECTION);
 
         noteAppCrash(1, false);
-
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_DEFAULTS, /*resetNamespaces=*/ null,
-                /*configResetVerifiedTimesMap=*/ null);
-
         noteAppCrash(2, false);
-
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_CHANGES, /*resetNamespaces=*/ null,
-                /*configResetVerifiedTimesMap=*/ null);
-
         noteAppCrash(3, false);
-
-        verifySettingsResets(Settings.RESET_MODE_TRUSTED_DEFAULTS, /*resetNamespaces=*/ null,
-                /*configResetVerifiedTimesMap=*/ null);
-
-        noteAppCrash(4, false);
         assertFalse(RescueParty.isRebootPropertySet());
 
         noteAppCrash(5, false);
@@ -430,10 +389,8 @@
         final String[] expectedAllResetNamespaces = new String[]{NAMESPACE1, NAMESPACE2};
 
         noteAppCrash(1, false);
-        verifyDeviceConfigReset(expectedResetNamespaces, verifiedTimesMap);
 
         noteAppCrash(2, false);
-        verifyDeviceConfigReset(expectedAllResetNamespaces, verifiedTimesMap);
 
         noteAppCrash(3, false);
         assertFalse(RescueParty.isRebootPropertySet());
@@ -488,87 +445,12 @@
         HashMap<String, Integer> verifiedTimesMap = new HashMap<String, Integer>();
         observer.execute(new VersionedPackage(
                 CALLING_PACKAGE1, 1), PackageWatchdog.FAILURE_REASON_APP_CRASH, 1);
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_DEFAULTS, expectedResetNamespaces,
-                verifiedTimesMap);
 
         observer.execute(new VersionedPackage(
                 CALLING_PACKAGE1, 1), PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 2);
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_CHANGES, expectedResetNamespaces,
-                verifiedTimesMap);
 
         observer.execute(new VersionedPackage(
                 CALLING_PACKAGE1, 1), PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 3);
-        verifySettingsResets(Settings.RESET_MODE_TRUSTED_DEFAULTS, expectedAllResetNamespaces,
-                verifiedTimesMap);
-
-        observer.execute(new VersionedPackage(
-                CALLING_PACKAGE1, 1), PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 4);
-        assertFalse(RescueParty.isRebootPropertySet());
-
-        observer.execute(new VersionedPackage(
-                CALLING_PACKAGE1, 1), PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 5);
-        assertFalse(RescueParty.isFactoryResetPropertySet());
-    }
-
-    @Test
-    public void testNonDeviceConfigSettingsOnlyResetOncePerLevel() {
-        // this is old test where the flag needs to be disabled
-        mSetFlagsRule.disableFlags(Flags.FLAG_RECOVERABILITY_DETECTION);
-
-        RescueParty.onSettingsProviderPublished(mMockContext);
-        verify(() -> DeviceConfig.setMonitorCallback(eq(mMockContentResolver),
-                any(Executor.class),
-                mMonitorCallbackCaptor.capture()));
-
-        // Record DeviceConfig accesses
-        RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext);
-        DeviceConfig.MonitorCallback monitorCallback = mMonitorCallbackCaptor.getValue();
-        monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE1);
-        monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE1, NAMESPACE2);
-        monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE2, NAMESPACE2);
-        monitorCallback.onDeviceConfigAccess(CALLING_PACKAGE2, NAMESPACE3);
-        // Fake DeviceConfig value changes
-        monitorCallback.onNamespaceUpdate(NAMESPACE1);
-        monitorCallback.onNamespaceUpdate(NAMESPACE2);
-        monitorCallback.onNamespaceUpdate(NAMESPACE3);
-        // Perform and verify scoped resets
-        final String[] expectedPackage1ResetNamespaces = new String[]{NAMESPACE1, NAMESPACE2};
-        final String[] expectedPackage2ResetNamespaces = new String[]{NAMESPACE2, NAMESPACE3};
-        final String[] expectedAllResetNamespaces =
-                new String[]{NAMESPACE1, NAMESPACE2, NAMESPACE3};
-        HashMap<String, Integer> verifiedTimesMap = new HashMap<String, Integer>();
-        observer.execute(new VersionedPackage(
-                CALLING_PACKAGE1, 1), PackageWatchdog.FAILURE_REASON_APP_CRASH, 1);
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_DEFAULTS,
-                expectedPackage1ResetNamespaces, verifiedTimesMap);
-
-        // Settings.Global & Settings.Secure should still remain the same execution times.
-        observer.execute(new VersionedPackage(
-                CALLING_PACKAGE2, 1), PackageWatchdog.FAILURE_REASON_APP_CRASH, 1);
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_DEFAULTS,
-                expectedPackage2ResetNamespaces, verifiedTimesMap);
-
-        observer.execute(new VersionedPackage(
-                CALLING_PACKAGE1, 1), PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 2);
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_CHANGES,
-                expectedPackage1ResetNamespaces, verifiedTimesMap);
-
-        // Settings.Global & Settings.Secure should still remain the same execution times.
-        observer.execute(new VersionedPackage(
-                CALLING_PACKAGE2, 1), PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 2);
-        verifySettingsResets(Settings.RESET_MODE_UNTRUSTED_CHANGES,
-                expectedPackage2ResetNamespaces, verifiedTimesMap);
-
-        observer.execute(new VersionedPackage(
-                CALLING_PACKAGE1, 1), PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 3);
-        verifySettingsResets(Settings.RESET_MODE_TRUSTED_DEFAULTS, expectedAllResetNamespaces,
-                verifiedTimesMap);
-
-        // Settings.Global & Settings.Secure should still remain the same execution times.
-        observer.execute(new VersionedPackage(
-                CALLING_PACKAGE2, 1), PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 3);
-        verifySettingsResets(Settings.RESET_MODE_TRUSTED_DEFAULTS, expectedAllResetNamespaces,
-                verifiedTimesMap);
 
         observer.execute(new VersionedPackage(
                 CALLING_PACKAGE1, 1), PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 4);
@@ -863,27 +745,27 @@
 
         assertEquals(observer.onHealthCheckFailed(sFailingPackage,
                 PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 2),
-                PackageHealthObserverImpact.USER_IMPACT_LEVEL_20);
+                PackageHealthObserverImpact.USER_IMPACT_LEVEL_40);
 
         assertEquals(observer.onHealthCheckFailed(sFailingPackage,
                 PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 3),
-                PackageHealthObserverImpact.USER_IMPACT_LEVEL_20);
+                PackageHealthObserverImpact.USER_IMPACT_LEVEL_40);
 
         assertEquals(observer.onHealthCheckFailed(sFailingPackage,
                 PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 4),
-                PackageHealthObserverImpact.USER_IMPACT_LEVEL_20);
+                PackageHealthObserverImpact.USER_IMPACT_LEVEL_40);
 
         assertEquals(observer.onHealthCheckFailed(sFailingPackage,
                 PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 5),
-                PackageHealthObserverImpact.USER_IMPACT_LEVEL_20);
+                PackageHealthObserverImpact.USER_IMPACT_LEVEL_40);
 
         assertEquals(observer.onHealthCheckFailed(sFailingPackage,
                 PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 6),
-                PackageHealthObserverImpact.USER_IMPACT_LEVEL_20);
+                PackageHealthObserverImpact.USER_IMPACT_LEVEL_40);
 
         assertEquals(observer.onHealthCheckFailed(sFailingPackage,
                 PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING, 7),
-                PackageHealthObserverImpact.USER_IMPACT_LEVEL_20);
+                PackageHealthObserverImpact.USER_IMPACT_LEVEL_40);
     }
 
     @Test
@@ -906,7 +788,7 @@
         mSetFlagsRule.enableFlags(Flags.FLAG_RECOVERABILITY_DETECTION);
         RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext);
 
-        assertEquals(observer.onBootLoop(1), PackageHealthObserverImpact.USER_IMPACT_LEVEL_20);
+        assertEquals(observer.onBootLoop(1), PackageHealthObserverImpact.USER_IMPACT_LEVEL_40);
         assertEquals(observer.onBootLoop(2), PackageHealthObserverImpact.USER_IMPACT_LEVEL_50);
         assertEquals(observer.onBootLoop(3), PackageHealthObserverImpact.USER_IMPACT_LEVEL_71);
         assertEquals(observer.onBootLoop(4), PackageHealthObserverImpact.USER_IMPACT_LEVEL_75);
@@ -1037,7 +919,6 @@
     private void verifySettingsResets(int resetMode, String[] resetNamespaces,
             HashMap<String, Integer> configResetVerifiedTimesMap) {
         verifyOnlySettingsReset(resetMode);
-        verifyDeviceConfigReset(resetNamespaces, configResetVerifiedTimesMap);
     }
 
     private void verifyOnlySettingsReset(int resetMode) {
@@ -1054,26 +935,6 @@
                 eq(resetMode), anyInt()), never());
     }
 
-    private void verifyDeviceConfigReset(String[] resetNamespaces,
-            Map<String, Integer> configResetVerifiedTimesMap) {
-        if (resetNamespaces == null) {
-            verify(() -> DeviceConfig.resetToDefaults(anyInt(), anyString()), never());
-        } else {
-            for (String namespace : resetNamespaces) {
-                int verifiedTimes = 0;
-                if (configResetVerifiedTimesMap != null
-                        && configResetVerifiedTimesMap.get(namespace) != null) {
-                    verifiedTimes = configResetVerifiedTimesMap.get(namespace);
-                }
-                verify(() -> DeviceConfig.resetToDefaults(RescueParty.DEVICE_CONFIG_RESET_MODE,
-                        namespace), times(verifiedTimes + 1));
-                if (configResetVerifiedTimesMap != null) {
-                    configResetVerifiedTimesMap.put(namespace, verifiedTimes + 1);
-                }
-            }
-        }
-    }
-
     private void noteBoot(int mitigationCount) {
         RescuePartyObserver.getInstance(mMockContext).executeBootLoopMitigation(mitigationCount);
     }
diff --git a/tools/lint/OWNERS b/tools/lint/OWNERS
index 33e237d..8e4569e 100644
--- a/tools/lint/OWNERS
+++ b/tools/lint/OWNERS
@@ -1,4 +1,5 @@
-brufino@google.com
+mattgilbride@google.com
+azharaa@google.com
 jsharkey@google.com
 
 per-file *CallingSettingsNonUserGetterMethods* = file:/packages/SettingsProvider/OWNERS