1// Signature format: 2.0
2package com.android.server {
3
4  @FlaggedApi("android.crashrecovery.flags.enable_crashrecovery") public class PackageWatchdog {
5    method public void dump(@NonNull java.io.PrintWriter);
6    method @NonNull public static com.android.server.PackageWatchdog getInstance(@NonNull android.content.Context);
7    method public static boolean isRecoveryTriggeredReboot();
8    method public void notifyPackageFailure(@NonNull java.util.List<android.content.pm.VersionedPackage>, int);
9    method public void registerHealthObserver(@NonNull com.android.server.PackageWatchdog.PackageHealthObserver, @NonNull java.util.concurrent.Executor);
10    method public void startExplicitHealthCheck(@NonNull com.android.server.PackageWatchdog.PackageHealthObserver, @NonNull java.util.List<java.lang.String>, long);
11    method public void unregisterHealthObserver(@NonNull com.android.server.PackageWatchdog.PackageHealthObserver);
12    field public static final int FAILURE_REASON_APP_CRASH = 3; // 0x3
13    field public static final int FAILURE_REASON_APP_NOT_RESPONDING = 4; // 0x4
14    field public static final int FAILURE_REASON_BOOT_LOOP = 5; // 0x5
15    field public static final int FAILURE_REASON_EXPLICIT_HEALTH_CHECK = 2; // 0x2
16    field public static final int FAILURE_REASON_NATIVE_CRASH = 1; // 0x1
17    field public static final int FAILURE_REASON_UNKNOWN = 0; // 0x0
18    field public static final int USER_IMPACT_THRESHOLD_HIGH = 71; // 0x47
19    field public static final int USER_IMPACT_THRESHOLD_MEDIUM = 20; // 0x14
20    field public static final int USER_IMPACT_THRESHOLD_NONE = 0; // 0x0
21  }
22
23  public static interface PackageWatchdog.PackageHealthObserver {
24    method @NonNull public String getUniqueIdentifier();
25    method public default boolean isPersistent();
26    method public default boolean mayObservePackage(@NonNull String);
27    method public default int onBootLoop(int);
28    method public default boolean onExecuteBootLoopMitigation(int);
29    method public boolean onExecuteHealthCheckMitigation(@Nullable android.content.pm.VersionedPackage, int, int);
30    method public int onHealthCheckFailed(@Nullable android.content.pm.VersionedPackage, int, int);
31  }
32
33}
34
35package com.android.server.rollback {
36
37  @FlaggedApi("android.crashrecovery.flags.enable_crashrecovery") public final class RollbackPackageHealthObserver implements com.android.server.PackageWatchdog.PackageHealthObserver {
38    ctor public RollbackPackageHealthObserver(@NonNull android.content.Context);
39    method @NonNull public String getUniqueIdentifier();
40    method public boolean isPersistent();
41    method public boolean mayObservePackage(@NonNull String);
42    method @AnyThread @NonNull public void notifyRollbackAvailable(@NonNull android.content.rollback.RollbackInfo);
43    method @AnyThread public void onBootCompletedAsync();
44    method public int onBootLoop(int);
45    method public boolean onExecuteBootLoopMitigation(int);
46    method public boolean onExecuteHealthCheckMitigation(@Nullable android.content.pm.VersionedPackage, int, int);
47    method public int onHealthCheckFailed(@Nullable android.content.pm.VersionedPackage, int, int);
48  }
49
50}
51
52