Loading apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java +17 −75 Original line number Diff line number Diff line Loading @@ -32,8 +32,6 @@ import android.annotation.SystemService; import android.annotation.UserHandleAware; import android.content.Context; import com.android.internal.util.FrameworkStatsLog; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Collections; Loading Loading @@ -453,62 +451,6 @@ public class PowerExemptionManager { @Retention(RetentionPolicy.SOURCE) public @interface ReasonCode {} private static final int EXEMPTION_REASON_SYSTEM_UID = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_SYSTEM_UID; private static final int EXEMPTION_REASON_ALLOWLISTED_PACKAGE = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_ALLOWLISTED_PACKAGE; private static final int EXEMPTION_REASON_COMPANION_DEVICE_MANAGER = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_COMPANION_DEVICE_MANAGER; private static final int EXEMPTION_REASON_DEVICE_DEMO_MODE = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_DEVICE_DEMO_MODE; private static final int EXEMPTION_REASON_DEVICE_OWNER = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_DEVICE_OWNER; private static final int EXEMPTION_REASON_PROFILE_OWNER = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_PROFILE_OWNER; private static final int EXEMPTION_REASON_PROC_STATE_PERSISTENT = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_PROC_STATE_PERSISTENT; private static final int EXEMPTION_REASON_PROC_STATE_PERSISTENT_UI = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_PROC_STATE_PERSISTENT_UI; private static final int EXEMPTION_REASON_OP_ACTIVATE_VPN = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_OP_ACTIVATE_VPN; private static final int EXEMPTION_REASON_OP_ACTIVATE_PLATFORM_VPN = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_OP_ACTIVATE_PLATFORM_VPN; private static final int EXEMPTION_REASON_SYSTEM_MODULE = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_SYSTEM_MODULE; private static final int EXEMPTION_REASON_CARRIER_PRIVILEGED_APP = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_CARRIER_PRIVILEGED_APP; private static final int EXEMPTION_REASON_SYSTEM_ALLOW_LISTED = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_SYSTEM_ALLOW_LISTED; private static final int EXEMPTION_REASON_ROLE_DIALER = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_ROLE_DIALER; private static final int EXEMPTION_REASON_ROLE_EMERGENCY = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_ROLE_EMERGENCY; private static final int EXEMPTION_REASON_DENIED = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_DENIED; /** * List of exemption reason codes used for statsd logging in AppBackgroundRestrictionsInfo atom. * @hide */ @IntDef(prefix = { "EXEMPTION_REASON_" }, value = { EXEMPTION_REASON_SYSTEM_UID, EXEMPTION_REASON_ALLOWLISTED_PACKAGE, EXEMPTION_REASON_COMPANION_DEVICE_MANAGER, EXEMPTION_REASON_DEVICE_DEMO_MODE, EXEMPTION_REASON_DEVICE_OWNER, EXEMPTION_REASON_PROFILE_OWNER, EXEMPTION_REASON_PROC_STATE_PERSISTENT, EXEMPTION_REASON_PROC_STATE_PERSISTENT_UI, EXEMPTION_REASON_OP_ACTIVATE_VPN, EXEMPTION_REASON_OP_ACTIVATE_PLATFORM_VPN, EXEMPTION_REASON_SYSTEM_MODULE, EXEMPTION_REASON_CARRIER_PRIVILEGED_APP, EXEMPTION_REASON_SYSTEM_ALLOW_LISTED, EXEMPTION_REASON_ROLE_DIALER, EXEMPTION_REASON_ROLE_EMERGENCY, EXEMPTION_REASON_DENIED, }) public @interface ExemptionReason {} /** * @hide */ Loading Loading @@ -679,40 +621,40 @@ public class PowerExemptionManager { * @hide * @return the reason code mapped to statsd for the AppBackgroundRestrictionsInfo atom. */ public static @ExemptionReason int getExemptionReasonForStatsd(@ReasonCode int reasonCode) { public static int getExemptionReasonForStatsd(@ReasonCode int reasonCode) { switch (reasonCode) { case REASON_SYSTEM_UID: return EXEMPTION_REASON_SYSTEM_UID; return AppBackgroundRestrictionsInfo.REASON_SYSTEM_UID; case REASON_ALLOWLISTED_PACKAGE: return EXEMPTION_REASON_ALLOWLISTED_PACKAGE; return AppBackgroundRestrictionsInfo.REASON_ALLOWLISTED_PACKAGE; case REASON_COMPANION_DEVICE_MANAGER: return EXEMPTION_REASON_COMPANION_DEVICE_MANAGER; return AppBackgroundRestrictionsInfo.REASON_COMPANION_DEVICE_MANAGER; case REASON_DEVICE_DEMO_MODE: return EXEMPTION_REASON_DEVICE_DEMO_MODE; return AppBackgroundRestrictionsInfo.REASON_DEVICE_DEMO_MODE; case REASON_DEVICE_OWNER: return EXEMPTION_REASON_DEVICE_OWNER; return AppBackgroundRestrictionsInfo.REASON_DEVICE_OWNER; case REASON_PROFILE_OWNER: return EXEMPTION_REASON_PROFILE_OWNER; return AppBackgroundRestrictionsInfo.REASON_PROFILE_OWNER; case REASON_PROC_STATE_PERSISTENT: return EXEMPTION_REASON_PROC_STATE_PERSISTENT; return AppBackgroundRestrictionsInfo.REASON_PROC_STATE_PERSISTENT; case REASON_PROC_STATE_PERSISTENT_UI: return EXEMPTION_REASON_PROC_STATE_PERSISTENT_UI; return AppBackgroundRestrictionsInfo.REASON_PROC_STATE_PERSISTENT_UI; case REASON_OP_ACTIVATE_VPN: return EXEMPTION_REASON_OP_ACTIVATE_VPN; return AppBackgroundRestrictionsInfo.REASON_OP_ACTIVATE_VPN; case REASON_OP_ACTIVATE_PLATFORM_VPN: return EXEMPTION_REASON_OP_ACTIVATE_PLATFORM_VPN; return AppBackgroundRestrictionsInfo.REASON_OP_ACTIVATE_PLATFORM_VPN; case REASON_SYSTEM_MODULE: return EXEMPTION_REASON_SYSTEM_MODULE; return AppBackgroundRestrictionsInfo.REASON_SYSTEM_MODULE; case REASON_CARRIER_PRIVILEGED_APP: return EXEMPTION_REASON_CARRIER_PRIVILEGED_APP; return AppBackgroundRestrictionsInfo.REASON_CARRIER_PRIVILEGED_APP; case REASON_SYSTEM_ALLOW_LISTED: return EXEMPTION_REASON_SYSTEM_ALLOW_LISTED; return AppBackgroundRestrictionsInfo.REASON_SYSTEM_ALLOW_LISTED; case REASON_ROLE_DIALER: return EXEMPTION_REASON_ROLE_DIALER; return AppBackgroundRestrictionsInfo.REASON_ROLE_DIALER; case REASON_ROLE_EMERGENCY: return EXEMPTION_REASON_ROLE_EMERGENCY; return AppBackgroundRestrictionsInfo.REASON_ROLE_EMERGENCY; default: return EXEMPTION_REASON_DENIED; return AppBackgroundRestrictionsInfo.REASON_DENIED; } } Loading services/core/java/com/android/server/am/AppBatteryTracker.java +6 −12 Original line number Diff line number Diff line Loading @@ -266,22 +266,16 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> } FrameworkStatsLog.write(FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO, uid, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNKNOWN, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_UNKNOWN, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__UNKNOWN_TRACKER, AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN, // RestrictionLevel AppBackgroundRestrictionsInfo.THRESHOLD_UNKNOWN, AppBackgroundRestrictionsInfo.UNKNOWN_TRACKER, null /*byte[] fgs_tracker_info*/, getBatteryTrackerInfoProtoLocked(uid) /*byte[] battery_tracker_info*/, null /*byte[] broadcast_events_tracker_info*/, null /*byte[] bind_service_events_tracker_info*/, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_UNKNOWN, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__UNKNOWN, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN, AppBackgroundRestrictionsInfo.REASON_UNKNOWN, // ExemptionReason AppBackgroundRestrictionsInfo.UNKNOWN, // OptimizationLevel AppBackgroundRestrictionsInfo.SDK_UNKNOWN, // TargetSdk isLowRamDeviceStatic()); } } Loading services/core/java/com/android/server/am/AppRestrictionController.java +34 −52 Original line number Diff line number Diff line Loading @@ -116,6 +116,7 @@ import android.content.pm.ServiceInfo.ForegroundServiceType; import android.database.ContentObserver; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.AppBackgroundRestrictionsInfo; import android.os.Build; import android.os.Environment; import android.os.Handler; Loading @@ -123,7 +124,6 @@ import android.os.HandlerExecutor; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.os.PowerExemptionManager.ExemptionReason; import android.os.PowerExemptionManager.ReasonCode; import android.os.RemoteException; import android.os.SystemClock; Loading Loading @@ -1916,76 +1916,59 @@ public final class AppRestrictionController { private int getRestrictionLevelStatsd(@RestrictionLevel int level) { switch (level) { case RESTRICTION_LEVEL_UNKNOWN: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNKNOWN; return AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN; case RESTRICTION_LEVEL_UNRESTRICTED: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNRESTRICTED; return AppBackgroundRestrictionsInfo.LEVEL_UNRESTRICTED; case RESTRICTION_LEVEL_EXEMPTED: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_EXEMPTED; return AppBackgroundRestrictionsInfo.LEVEL_EXEMPTED; case RESTRICTION_LEVEL_ADAPTIVE_BUCKET: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_ADAPTIVE_BUCKET; return AppBackgroundRestrictionsInfo.LEVEL_ADAPTIVE_BUCKET; case RESTRICTION_LEVEL_RESTRICTED_BUCKET: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_RESTRICTED_BUCKET; return AppBackgroundRestrictionsInfo.LEVEL_RESTRICTED_BUCKET; case RESTRICTION_LEVEL_BACKGROUND_RESTRICTED: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_BACKGROUND_RESTRICTED; return AppBackgroundRestrictionsInfo.LEVEL_BACKGROUND_RESTRICTED; case RESTRICTION_LEVEL_HIBERNATION: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_HIBERNATION; return AppBackgroundRestrictionsInfo.LEVEL_HIBERNATION; default: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNKNOWN; return AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN; } } private int getThresholdStatsd(int reason) { switch (reason) { case REASON_MAIN_FORCED_BY_SYSTEM: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_RESTRICTED; return AppBackgroundRestrictionsInfo.THRESHOLD_RESTRICTED; case REASON_MAIN_FORCED_BY_USER: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_USER; return AppBackgroundRestrictionsInfo.THRESHOLD_USER; default: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_UNKNOWN; return AppBackgroundRestrictionsInfo.THRESHOLD_UNKNOWN; } } private int getTrackerTypeStatsd(@TrackerType int type) { switch (type) { case TRACKER_TYPE_BATTERY: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BATTERY_TRACKER; return AppBackgroundRestrictionsInfo.BATTERY_TRACKER; case TRACKER_TYPE_BATTERY_EXEMPTION: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BATTERY_EXEMPTION_TRACKER; return AppBackgroundRestrictionsInfo.BATTERY_EXEMPTION_TRACKER; case TRACKER_TYPE_FGS: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__FGS_TRACKER; return AppBackgroundRestrictionsInfo.FGS_TRACKER; case TRACKER_TYPE_MEDIA_SESSION: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__MEDIA_SESSION_TRACKER; return AppBackgroundRestrictionsInfo.MEDIA_SESSION_TRACKER; case TRACKER_TYPE_PERMISSION: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__PERMISSION_TRACKER; return AppBackgroundRestrictionsInfo.PERMISSION_TRACKER; case TRACKER_TYPE_BROADCAST_EVENTS: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BROADCAST_EVENTS_TRACKER; return AppBackgroundRestrictionsInfo.BROADCAST_EVENTS_TRACKER; case TRACKER_TYPE_BIND_SERVICE_EVENTS: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BIND_SERVICE_EVENTS_TRACKER; return AppBackgroundRestrictionsInfo.BIND_SERVICE_EVENTS_TRACKER; default: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__UNKNOWN_TRACKER; return AppBackgroundRestrictionsInfo.UNKNOWN_TRACKER; } } private @ExemptionReason int getExemptionReasonStatsd(int uid, @RestrictionLevel int level) { private int getExemptionReasonStatsd(int uid, @RestrictionLevel int level) { if (level != RESTRICTION_LEVEL_EXEMPTED) { return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_DENIED; return AppBackgroundRestrictionsInfo.REASON_DENIED; } @ReasonCode final int reasonCode = getBackgroundRestrictionExemptionReason(uid); Loading @@ -1995,16 +1978,15 @@ public final class AppRestrictionController { private int getOptimizationLevelStatsd(@RestrictionLevel int level) { switch (level) { case RESTRICTION_LEVEL_UNKNOWN: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__UNKNOWN; return AppBackgroundRestrictionsInfo.UNKNOWN; case RESTRICTION_LEVEL_UNRESTRICTED: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__NOT_OPTIMIZED; return AppBackgroundRestrictionsInfo.NOT_OPTIMIZED; case RESTRICTION_LEVEL_ADAPTIVE_BUCKET: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__OPTIMIZED; return AppBackgroundRestrictionsInfo.OPTIMIZED; case RESTRICTION_LEVEL_BACKGROUND_RESTRICTED: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__BACKGROUND_RESTRICTED; return AppBackgroundRestrictionsInfo.BACKGROUND_RESTRICTED; default: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__UNKNOWN; return AppBackgroundRestrictionsInfo.UNKNOWN; } } Loading @@ -2012,26 +1994,26 @@ public final class AppRestrictionController { private int getTargetSdkStatsd(String packageName) { final PackageManager pm = mInjector.getPackageManager(); if (pm == null) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN; } try { final PackageInfo pkg = pm.getPackageInfo(packageName, 0 /* flags */); if (pkg == null || pkg.applicationInfo == null) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN; } final int targetSdk = pkg.applicationInfo.targetSdkVersion; if (targetSdk < Build.VERSION_CODES.S) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_PRE_S; return AppBackgroundRestrictionsInfo.SDK_PRE_S; } else if (targetSdk < Build.VERSION_CODES.TIRAMISU) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_S; return AppBackgroundRestrictionsInfo.SDK_S; } else if (targetSdk == Build.VERSION_CODES.TIRAMISU) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_T; return AppBackgroundRestrictionsInfo.SDK_T; } else { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN; } } catch (PackageManager.NameNotFoundException ignored) { } return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN; } private void applyRestrictionLevel(String pkgName, int uid, Loading Loading
apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java +17 −75 Original line number Diff line number Diff line Loading @@ -32,8 +32,6 @@ import android.annotation.SystemService; import android.annotation.UserHandleAware; import android.content.Context; import com.android.internal.util.FrameworkStatsLog; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Collections; Loading Loading @@ -453,62 +451,6 @@ public class PowerExemptionManager { @Retention(RetentionPolicy.SOURCE) public @interface ReasonCode {} private static final int EXEMPTION_REASON_SYSTEM_UID = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_SYSTEM_UID; private static final int EXEMPTION_REASON_ALLOWLISTED_PACKAGE = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_ALLOWLISTED_PACKAGE; private static final int EXEMPTION_REASON_COMPANION_DEVICE_MANAGER = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_COMPANION_DEVICE_MANAGER; private static final int EXEMPTION_REASON_DEVICE_DEMO_MODE = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_DEVICE_DEMO_MODE; private static final int EXEMPTION_REASON_DEVICE_OWNER = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_DEVICE_OWNER; private static final int EXEMPTION_REASON_PROFILE_OWNER = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_PROFILE_OWNER; private static final int EXEMPTION_REASON_PROC_STATE_PERSISTENT = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_PROC_STATE_PERSISTENT; private static final int EXEMPTION_REASON_PROC_STATE_PERSISTENT_UI = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_PROC_STATE_PERSISTENT_UI; private static final int EXEMPTION_REASON_OP_ACTIVATE_VPN = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_OP_ACTIVATE_VPN; private static final int EXEMPTION_REASON_OP_ACTIVATE_PLATFORM_VPN = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_OP_ACTIVATE_PLATFORM_VPN; private static final int EXEMPTION_REASON_SYSTEM_MODULE = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_SYSTEM_MODULE; private static final int EXEMPTION_REASON_CARRIER_PRIVILEGED_APP = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_CARRIER_PRIVILEGED_APP; private static final int EXEMPTION_REASON_SYSTEM_ALLOW_LISTED = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_SYSTEM_ALLOW_LISTED; private static final int EXEMPTION_REASON_ROLE_DIALER = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_ROLE_DIALER; private static final int EXEMPTION_REASON_ROLE_EMERGENCY = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_ROLE_EMERGENCY; private static final int EXEMPTION_REASON_DENIED = FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_DENIED; /** * List of exemption reason codes used for statsd logging in AppBackgroundRestrictionsInfo atom. * @hide */ @IntDef(prefix = { "EXEMPTION_REASON_" }, value = { EXEMPTION_REASON_SYSTEM_UID, EXEMPTION_REASON_ALLOWLISTED_PACKAGE, EXEMPTION_REASON_COMPANION_DEVICE_MANAGER, EXEMPTION_REASON_DEVICE_DEMO_MODE, EXEMPTION_REASON_DEVICE_OWNER, EXEMPTION_REASON_PROFILE_OWNER, EXEMPTION_REASON_PROC_STATE_PERSISTENT, EXEMPTION_REASON_PROC_STATE_PERSISTENT_UI, EXEMPTION_REASON_OP_ACTIVATE_VPN, EXEMPTION_REASON_OP_ACTIVATE_PLATFORM_VPN, EXEMPTION_REASON_SYSTEM_MODULE, EXEMPTION_REASON_CARRIER_PRIVILEGED_APP, EXEMPTION_REASON_SYSTEM_ALLOW_LISTED, EXEMPTION_REASON_ROLE_DIALER, EXEMPTION_REASON_ROLE_EMERGENCY, EXEMPTION_REASON_DENIED, }) public @interface ExemptionReason {} /** * @hide */ Loading Loading @@ -679,40 +621,40 @@ public class PowerExemptionManager { * @hide * @return the reason code mapped to statsd for the AppBackgroundRestrictionsInfo atom. */ public static @ExemptionReason int getExemptionReasonForStatsd(@ReasonCode int reasonCode) { public static int getExemptionReasonForStatsd(@ReasonCode int reasonCode) { switch (reasonCode) { case REASON_SYSTEM_UID: return EXEMPTION_REASON_SYSTEM_UID; return AppBackgroundRestrictionsInfo.REASON_SYSTEM_UID; case REASON_ALLOWLISTED_PACKAGE: return EXEMPTION_REASON_ALLOWLISTED_PACKAGE; return AppBackgroundRestrictionsInfo.REASON_ALLOWLISTED_PACKAGE; case REASON_COMPANION_DEVICE_MANAGER: return EXEMPTION_REASON_COMPANION_DEVICE_MANAGER; return AppBackgroundRestrictionsInfo.REASON_COMPANION_DEVICE_MANAGER; case REASON_DEVICE_DEMO_MODE: return EXEMPTION_REASON_DEVICE_DEMO_MODE; return AppBackgroundRestrictionsInfo.REASON_DEVICE_DEMO_MODE; case REASON_DEVICE_OWNER: return EXEMPTION_REASON_DEVICE_OWNER; return AppBackgroundRestrictionsInfo.REASON_DEVICE_OWNER; case REASON_PROFILE_OWNER: return EXEMPTION_REASON_PROFILE_OWNER; return AppBackgroundRestrictionsInfo.REASON_PROFILE_OWNER; case REASON_PROC_STATE_PERSISTENT: return EXEMPTION_REASON_PROC_STATE_PERSISTENT; return AppBackgroundRestrictionsInfo.REASON_PROC_STATE_PERSISTENT; case REASON_PROC_STATE_PERSISTENT_UI: return EXEMPTION_REASON_PROC_STATE_PERSISTENT_UI; return AppBackgroundRestrictionsInfo.REASON_PROC_STATE_PERSISTENT_UI; case REASON_OP_ACTIVATE_VPN: return EXEMPTION_REASON_OP_ACTIVATE_VPN; return AppBackgroundRestrictionsInfo.REASON_OP_ACTIVATE_VPN; case REASON_OP_ACTIVATE_PLATFORM_VPN: return EXEMPTION_REASON_OP_ACTIVATE_PLATFORM_VPN; return AppBackgroundRestrictionsInfo.REASON_OP_ACTIVATE_PLATFORM_VPN; case REASON_SYSTEM_MODULE: return EXEMPTION_REASON_SYSTEM_MODULE; return AppBackgroundRestrictionsInfo.REASON_SYSTEM_MODULE; case REASON_CARRIER_PRIVILEGED_APP: return EXEMPTION_REASON_CARRIER_PRIVILEGED_APP; return AppBackgroundRestrictionsInfo.REASON_CARRIER_PRIVILEGED_APP; case REASON_SYSTEM_ALLOW_LISTED: return EXEMPTION_REASON_SYSTEM_ALLOW_LISTED; return AppBackgroundRestrictionsInfo.REASON_SYSTEM_ALLOW_LISTED; case REASON_ROLE_DIALER: return EXEMPTION_REASON_ROLE_DIALER; return AppBackgroundRestrictionsInfo.REASON_ROLE_DIALER; case REASON_ROLE_EMERGENCY: return EXEMPTION_REASON_ROLE_EMERGENCY; return AppBackgroundRestrictionsInfo.REASON_ROLE_EMERGENCY; default: return EXEMPTION_REASON_DENIED; return AppBackgroundRestrictionsInfo.REASON_DENIED; } } Loading
services/core/java/com/android/server/am/AppBatteryTracker.java +6 −12 Original line number Diff line number Diff line Loading @@ -266,22 +266,16 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy> } FrameworkStatsLog.write(FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO, uid, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNKNOWN, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_UNKNOWN, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__UNKNOWN_TRACKER, AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN, // RestrictionLevel AppBackgroundRestrictionsInfo.THRESHOLD_UNKNOWN, AppBackgroundRestrictionsInfo.UNKNOWN_TRACKER, null /*byte[] fgs_tracker_info*/, getBatteryTrackerInfoProtoLocked(uid) /*byte[] battery_tracker_info*/, null /*byte[] broadcast_events_tracker_info*/, null /*byte[] bind_service_events_tracker_info*/, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_UNKNOWN, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__UNKNOWN, FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN, AppBackgroundRestrictionsInfo.REASON_UNKNOWN, // ExemptionReason AppBackgroundRestrictionsInfo.UNKNOWN, // OptimizationLevel AppBackgroundRestrictionsInfo.SDK_UNKNOWN, // TargetSdk isLowRamDeviceStatic()); } } Loading
services/core/java/com/android/server/am/AppRestrictionController.java +34 −52 Original line number Diff line number Diff line Loading @@ -116,6 +116,7 @@ import android.content.pm.ServiceInfo.ForegroundServiceType; import android.database.ContentObserver; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.AppBackgroundRestrictionsInfo; import android.os.Build; import android.os.Environment; import android.os.Handler; Loading @@ -123,7 +124,6 @@ import android.os.HandlerExecutor; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.os.PowerExemptionManager.ExemptionReason; import android.os.PowerExemptionManager.ReasonCode; import android.os.RemoteException; import android.os.SystemClock; Loading Loading @@ -1916,76 +1916,59 @@ public final class AppRestrictionController { private int getRestrictionLevelStatsd(@RestrictionLevel int level) { switch (level) { case RESTRICTION_LEVEL_UNKNOWN: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNKNOWN; return AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN; case RESTRICTION_LEVEL_UNRESTRICTED: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNRESTRICTED; return AppBackgroundRestrictionsInfo.LEVEL_UNRESTRICTED; case RESTRICTION_LEVEL_EXEMPTED: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_EXEMPTED; return AppBackgroundRestrictionsInfo.LEVEL_EXEMPTED; case RESTRICTION_LEVEL_ADAPTIVE_BUCKET: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_ADAPTIVE_BUCKET; return AppBackgroundRestrictionsInfo.LEVEL_ADAPTIVE_BUCKET; case RESTRICTION_LEVEL_RESTRICTED_BUCKET: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_RESTRICTED_BUCKET; return AppBackgroundRestrictionsInfo.LEVEL_RESTRICTED_BUCKET; case RESTRICTION_LEVEL_BACKGROUND_RESTRICTED: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_BACKGROUND_RESTRICTED; return AppBackgroundRestrictionsInfo.LEVEL_BACKGROUND_RESTRICTED; case RESTRICTION_LEVEL_HIBERNATION: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_HIBERNATION; return AppBackgroundRestrictionsInfo.LEVEL_HIBERNATION; default: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNKNOWN; return AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN; } } private int getThresholdStatsd(int reason) { switch (reason) { case REASON_MAIN_FORCED_BY_SYSTEM: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_RESTRICTED; return AppBackgroundRestrictionsInfo.THRESHOLD_RESTRICTED; case REASON_MAIN_FORCED_BY_USER: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_USER; return AppBackgroundRestrictionsInfo.THRESHOLD_USER; default: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_UNKNOWN; return AppBackgroundRestrictionsInfo.THRESHOLD_UNKNOWN; } } private int getTrackerTypeStatsd(@TrackerType int type) { switch (type) { case TRACKER_TYPE_BATTERY: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BATTERY_TRACKER; return AppBackgroundRestrictionsInfo.BATTERY_TRACKER; case TRACKER_TYPE_BATTERY_EXEMPTION: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BATTERY_EXEMPTION_TRACKER; return AppBackgroundRestrictionsInfo.BATTERY_EXEMPTION_TRACKER; case TRACKER_TYPE_FGS: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__FGS_TRACKER; return AppBackgroundRestrictionsInfo.FGS_TRACKER; case TRACKER_TYPE_MEDIA_SESSION: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__MEDIA_SESSION_TRACKER; return AppBackgroundRestrictionsInfo.MEDIA_SESSION_TRACKER; case TRACKER_TYPE_PERMISSION: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__PERMISSION_TRACKER; return AppBackgroundRestrictionsInfo.PERMISSION_TRACKER; case TRACKER_TYPE_BROADCAST_EVENTS: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BROADCAST_EVENTS_TRACKER; return AppBackgroundRestrictionsInfo.BROADCAST_EVENTS_TRACKER; case TRACKER_TYPE_BIND_SERVICE_EVENTS: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BIND_SERVICE_EVENTS_TRACKER; return AppBackgroundRestrictionsInfo.BIND_SERVICE_EVENTS_TRACKER; default: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__UNKNOWN_TRACKER; return AppBackgroundRestrictionsInfo.UNKNOWN_TRACKER; } } private @ExemptionReason int getExemptionReasonStatsd(int uid, @RestrictionLevel int level) { private int getExemptionReasonStatsd(int uid, @RestrictionLevel int level) { if (level != RESTRICTION_LEVEL_EXEMPTED) { return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_DENIED; return AppBackgroundRestrictionsInfo.REASON_DENIED; } @ReasonCode final int reasonCode = getBackgroundRestrictionExemptionReason(uid); Loading @@ -1995,16 +1978,15 @@ public final class AppRestrictionController { private int getOptimizationLevelStatsd(@RestrictionLevel int level) { switch (level) { case RESTRICTION_LEVEL_UNKNOWN: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__UNKNOWN; return AppBackgroundRestrictionsInfo.UNKNOWN; case RESTRICTION_LEVEL_UNRESTRICTED: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__NOT_OPTIMIZED; return AppBackgroundRestrictionsInfo.NOT_OPTIMIZED; case RESTRICTION_LEVEL_ADAPTIVE_BUCKET: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__OPTIMIZED; return AppBackgroundRestrictionsInfo.OPTIMIZED; case RESTRICTION_LEVEL_BACKGROUND_RESTRICTED: return FrameworkStatsLog .APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__BACKGROUND_RESTRICTED; return AppBackgroundRestrictionsInfo.BACKGROUND_RESTRICTED; default: return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__UNKNOWN; return AppBackgroundRestrictionsInfo.UNKNOWN; } } Loading @@ -2012,26 +1994,26 @@ public final class AppRestrictionController { private int getTargetSdkStatsd(String packageName) { final PackageManager pm = mInjector.getPackageManager(); if (pm == null) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN; } try { final PackageInfo pkg = pm.getPackageInfo(packageName, 0 /* flags */); if (pkg == null || pkg.applicationInfo == null) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN; } final int targetSdk = pkg.applicationInfo.targetSdkVersion; if (targetSdk < Build.VERSION_CODES.S) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_PRE_S; return AppBackgroundRestrictionsInfo.SDK_PRE_S; } else if (targetSdk < Build.VERSION_CODES.TIRAMISU) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_S; return AppBackgroundRestrictionsInfo.SDK_S; } else if (targetSdk == Build.VERSION_CODES.TIRAMISU) { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_T; return AppBackgroundRestrictionsInfo.SDK_T; } else { return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN; } } catch (PackageManager.NameNotFoundException ignored) { } return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN; } private void applyRestrictionLevel(String pkgName, int uid, Loading