Merge "Update logging of AppBackgroundRestrictionsInfo atom." into tm-dev

This commit is contained in:
Varun Shah
2022-04-15 17:32:47 +00:00
committed by Android (Google) Code Review
3 changed files with 57 additions and 139 deletions

View File

@@ -32,8 +32,6 @@ import android.annotation.SystemService;
import android.annotation.UserHandleAware; import android.annotation.UserHandleAware;
import android.content.Context; import android.content.Context;
import com.android.internal.util.FrameworkStatsLog;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.util.Collections; import java.util.Collections;
@@ -453,62 +451,6 @@ public class PowerExemptionManager {
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface ReasonCode {} 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 * @hide
*/ */
@@ -679,40 +621,40 @@ public class PowerExemptionManager {
* @hide * @hide
* @return the reason code mapped to statsd for the AppBackgroundRestrictionsInfo atom. * @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) { switch (reasonCode) {
case REASON_SYSTEM_UID: case REASON_SYSTEM_UID:
return EXEMPTION_REASON_SYSTEM_UID; return AppBackgroundRestrictionsInfo.REASON_SYSTEM_UID;
case REASON_ALLOWLISTED_PACKAGE: case REASON_ALLOWLISTED_PACKAGE:
return EXEMPTION_REASON_ALLOWLISTED_PACKAGE; return AppBackgroundRestrictionsInfo.REASON_ALLOWLISTED_PACKAGE;
case REASON_COMPANION_DEVICE_MANAGER: case REASON_COMPANION_DEVICE_MANAGER:
return EXEMPTION_REASON_COMPANION_DEVICE_MANAGER; return AppBackgroundRestrictionsInfo.REASON_COMPANION_DEVICE_MANAGER;
case REASON_DEVICE_DEMO_MODE: case REASON_DEVICE_DEMO_MODE:
return EXEMPTION_REASON_DEVICE_DEMO_MODE; return AppBackgroundRestrictionsInfo.REASON_DEVICE_DEMO_MODE;
case REASON_DEVICE_OWNER: case REASON_DEVICE_OWNER:
return EXEMPTION_REASON_DEVICE_OWNER; return AppBackgroundRestrictionsInfo.REASON_DEVICE_OWNER;
case REASON_PROFILE_OWNER: case REASON_PROFILE_OWNER:
return EXEMPTION_REASON_PROFILE_OWNER; return AppBackgroundRestrictionsInfo.REASON_PROFILE_OWNER;
case REASON_PROC_STATE_PERSISTENT: case REASON_PROC_STATE_PERSISTENT:
return EXEMPTION_REASON_PROC_STATE_PERSISTENT; return AppBackgroundRestrictionsInfo.REASON_PROC_STATE_PERSISTENT;
case REASON_PROC_STATE_PERSISTENT_UI: 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: case REASON_OP_ACTIVATE_VPN:
return EXEMPTION_REASON_OP_ACTIVATE_VPN; return AppBackgroundRestrictionsInfo.REASON_OP_ACTIVATE_VPN;
case REASON_OP_ACTIVATE_PLATFORM_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: case REASON_SYSTEM_MODULE:
return EXEMPTION_REASON_SYSTEM_MODULE; return AppBackgroundRestrictionsInfo.REASON_SYSTEM_MODULE;
case REASON_CARRIER_PRIVILEGED_APP: case REASON_CARRIER_PRIVILEGED_APP:
return EXEMPTION_REASON_CARRIER_PRIVILEGED_APP; return AppBackgroundRestrictionsInfo.REASON_CARRIER_PRIVILEGED_APP;
case REASON_SYSTEM_ALLOW_LISTED: case REASON_SYSTEM_ALLOW_LISTED:
return EXEMPTION_REASON_SYSTEM_ALLOW_LISTED; return AppBackgroundRestrictionsInfo.REASON_SYSTEM_ALLOW_LISTED;
case REASON_ROLE_DIALER: case REASON_ROLE_DIALER:
return EXEMPTION_REASON_ROLE_DIALER; return AppBackgroundRestrictionsInfo.REASON_ROLE_DIALER;
case REASON_ROLE_EMERGENCY: case REASON_ROLE_EMERGENCY:
return EXEMPTION_REASON_ROLE_EMERGENCY; return AppBackgroundRestrictionsInfo.REASON_ROLE_EMERGENCY;
default: default:
return EXEMPTION_REASON_DENIED; return AppBackgroundRestrictionsInfo.REASON_DENIED;
} }
} }

View File

@@ -266,22 +266,16 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy>
} }
FrameworkStatsLog.write(FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO, FrameworkStatsLog.write(FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO,
uid, uid,
FrameworkStatsLog AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN, // RestrictionLevel
.APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNKNOWN, AppBackgroundRestrictionsInfo.THRESHOLD_UNKNOWN,
FrameworkStatsLog AppBackgroundRestrictionsInfo.UNKNOWN_TRACKER,
.APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_UNKNOWN,
FrameworkStatsLog
.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__UNKNOWN_TRACKER,
null /*byte[] fgs_tracker_info*/, null /*byte[] fgs_tracker_info*/,
getBatteryTrackerInfoProtoLocked(uid) /*byte[] battery_tracker_info*/, getBatteryTrackerInfoProtoLocked(uid) /*byte[] battery_tracker_info*/,
null /*byte[] broadcast_events_tracker_info*/, null /*byte[] broadcast_events_tracker_info*/,
null /*byte[] bind_service_events_tracker_info*/, null /*byte[] bind_service_events_tracker_info*/,
FrameworkStatsLog AppBackgroundRestrictionsInfo.REASON_UNKNOWN, // ExemptionReason
.APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_UNKNOWN, AppBackgroundRestrictionsInfo.UNKNOWN, // OptimizationLevel
FrameworkStatsLog AppBackgroundRestrictionsInfo.SDK_UNKNOWN, // TargetSdk
.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__UNKNOWN,
FrameworkStatsLog
.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN,
isLowRamDeviceStatic()); isLowRamDeviceStatic());
} }
} }

View File

@@ -116,6 +116,7 @@ import android.content.pm.ServiceInfo.ForegroundServiceType;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.graphics.drawable.Icon; import android.graphics.drawable.Icon;
import android.net.Uri; import android.net.Uri;
import android.os.AppBackgroundRestrictionsInfo;
import android.os.Build; import android.os.Build;
import android.os.Environment; import android.os.Environment;
import android.os.Handler; import android.os.Handler;
@@ -123,7 +124,6 @@ import android.os.HandlerExecutor;
import android.os.HandlerThread; import android.os.HandlerThread;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.PowerExemptionManager.ExemptionReason;
import android.os.PowerExemptionManager.ReasonCode; import android.os.PowerExemptionManager.ReasonCode;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.SystemClock; import android.os.SystemClock;
@@ -1916,76 +1916,59 @@ public final class AppRestrictionController {
private int getRestrictionLevelStatsd(@RestrictionLevel int level) { private int getRestrictionLevelStatsd(@RestrictionLevel int level) {
switch (level) { switch (level) {
case RESTRICTION_LEVEL_UNKNOWN: case RESTRICTION_LEVEL_UNKNOWN:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN;
.APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNKNOWN;
case RESTRICTION_LEVEL_UNRESTRICTED: case RESTRICTION_LEVEL_UNRESTRICTED:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.LEVEL_UNRESTRICTED;
.APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNRESTRICTED;
case RESTRICTION_LEVEL_EXEMPTED: case RESTRICTION_LEVEL_EXEMPTED:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.LEVEL_EXEMPTED;
.APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_EXEMPTED;
case RESTRICTION_LEVEL_ADAPTIVE_BUCKET: case RESTRICTION_LEVEL_ADAPTIVE_BUCKET:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.LEVEL_ADAPTIVE_BUCKET;
.APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_ADAPTIVE_BUCKET;
case RESTRICTION_LEVEL_RESTRICTED_BUCKET: case RESTRICTION_LEVEL_RESTRICTED_BUCKET:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.LEVEL_RESTRICTED_BUCKET;
.APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_RESTRICTED_BUCKET;
case RESTRICTION_LEVEL_BACKGROUND_RESTRICTED: case RESTRICTION_LEVEL_BACKGROUND_RESTRICTED:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.LEVEL_BACKGROUND_RESTRICTED;
.APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_BACKGROUND_RESTRICTED;
case RESTRICTION_LEVEL_HIBERNATION: case RESTRICTION_LEVEL_HIBERNATION:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.LEVEL_HIBERNATION;
.APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_HIBERNATION;
default: default:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.LEVEL_UNKNOWN;
.APP_BACKGROUND_RESTRICTIONS_INFO__RESTRICTION_LEVEL__LEVEL_UNKNOWN;
} }
} }
private int getThresholdStatsd(int reason) { private int getThresholdStatsd(int reason) {
switch (reason) { switch (reason) {
case REASON_MAIN_FORCED_BY_SYSTEM: case REASON_MAIN_FORCED_BY_SYSTEM:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.THRESHOLD_RESTRICTED;
.APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_RESTRICTED;
case REASON_MAIN_FORCED_BY_USER: case REASON_MAIN_FORCED_BY_USER:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.THRESHOLD_USER;
.APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_USER;
default: default:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.THRESHOLD_UNKNOWN;
.APP_BACKGROUND_RESTRICTIONS_INFO__THRESHOLD__THRESHOLD_UNKNOWN;
} }
} }
private int getTrackerTypeStatsd(@TrackerType int type) { private int getTrackerTypeStatsd(@TrackerType int type) {
switch (type) { switch (type) {
case TRACKER_TYPE_BATTERY: case TRACKER_TYPE_BATTERY:
return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BATTERY_TRACKER; return AppBackgroundRestrictionsInfo.BATTERY_TRACKER;
case TRACKER_TYPE_BATTERY_EXEMPTION: case TRACKER_TYPE_BATTERY_EXEMPTION:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.BATTERY_EXEMPTION_TRACKER;
.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BATTERY_EXEMPTION_TRACKER;
case TRACKER_TYPE_FGS: case TRACKER_TYPE_FGS:
return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__FGS_TRACKER; return AppBackgroundRestrictionsInfo.FGS_TRACKER;
case TRACKER_TYPE_MEDIA_SESSION: case TRACKER_TYPE_MEDIA_SESSION:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.MEDIA_SESSION_TRACKER;
.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__MEDIA_SESSION_TRACKER;
case TRACKER_TYPE_PERMISSION: case TRACKER_TYPE_PERMISSION:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.PERMISSION_TRACKER;
.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__PERMISSION_TRACKER;
case TRACKER_TYPE_BROADCAST_EVENTS: case TRACKER_TYPE_BROADCAST_EVENTS:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.BROADCAST_EVENTS_TRACKER;
.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BROADCAST_EVENTS_TRACKER;
case TRACKER_TYPE_BIND_SERVICE_EVENTS: case TRACKER_TYPE_BIND_SERVICE_EVENTS:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.BIND_SERVICE_EVENTS_TRACKER;
.APP_BACKGROUND_RESTRICTIONS_INFO__TRACKER__BIND_SERVICE_EVENTS_TRACKER;
default: 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) { if (level != RESTRICTION_LEVEL_EXEMPTED) {
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.REASON_DENIED;
.APP_BACKGROUND_RESTRICTIONS_INFO__EXEMPTION_REASON__REASON_DENIED;
} }
@ReasonCode final int reasonCode = getBackgroundRestrictionExemptionReason(uid); @ReasonCode final int reasonCode = getBackgroundRestrictionExemptionReason(uid);
@@ -1995,16 +1978,15 @@ public final class AppRestrictionController {
private int getOptimizationLevelStatsd(@RestrictionLevel int level) { private int getOptimizationLevelStatsd(@RestrictionLevel int level) {
switch (level) { switch (level) {
case RESTRICTION_LEVEL_UNKNOWN: case RESTRICTION_LEVEL_UNKNOWN:
return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__UNKNOWN; return AppBackgroundRestrictionsInfo.UNKNOWN;
case RESTRICTION_LEVEL_UNRESTRICTED: case RESTRICTION_LEVEL_UNRESTRICTED:
return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__NOT_OPTIMIZED; return AppBackgroundRestrictionsInfo.NOT_OPTIMIZED;
case RESTRICTION_LEVEL_ADAPTIVE_BUCKET: case RESTRICTION_LEVEL_ADAPTIVE_BUCKET:
return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__OPTIMIZED; return AppBackgroundRestrictionsInfo.OPTIMIZED;
case RESTRICTION_LEVEL_BACKGROUND_RESTRICTED: case RESTRICTION_LEVEL_BACKGROUND_RESTRICTED:
return FrameworkStatsLog return AppBackgroundRestrictionsInfo.BACKGROUND_RESTRICTED;
.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__BACKGROUND_RESTRICTED;
default: default:
return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__OPT_LEVEL__UNKNOWN; return AppBackgroundRestrictionsInfo.UNKNOWN;
} }
} }
@@ -2012,26 +1994,26 @@ public final class AppRestrictionController {
private int getTargetSdkStatsd(String packageName) { private int getTargetSdkStatsd(String packageName) {
final PackageManager pm = mInjector.getPackageManager(); final PackageManager pm = mInjector.getPackageManager();
if (pm == null) { if (pm == null) {
return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN;
} }
try { try {
final PackageInfo pkg = pm.getPackageInfo(packageName, 0 /* flags */); final PackageInfo pkg = pm.getPackageInfo(packageName, 0 /* flags */);
if (pkg == null || pkg.applicationInfo == null) { 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; final int targetSdk = pkg.applicationInfo.targetSdkVersion;
if (targetSdk < Build.VERSION_CODES.S) { 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) { } 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) { } else if (targetSdk == Build.VERSION_CODES.TIRAMISU) {
return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_T; return AppBackgroundRestrictionsInfo.SDK_T;
} else { } else {
return FrameworkStatsLog.APP_BACKGROUND_RESTRICTIONS_INFO__TARGET_SDK__SDK_UNKNOWN; return AppBackgroundRestrictionsInfo.SDK_UNKNOWN;
} }
} catch (PackageManager.NameNotFoundException ignored) { } 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, private void applyRestrictionLevel(String pkgName, int uid,