Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fdd65f1c authored by Varun Shah's avatar Varun Shah Committed by Android (Google) Code Review
Browse files

Merge "Add initial logging for App Background Restrictions metrics." into tm-dev

parents fc5865f6 d12b43dd
Loading
Loading
Loading
Loading
+99 −0
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ 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;
@@ -451,6 +453,62 @@ 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
     */
@@ -617,6 +675,47 @@ public class PowerExemptionManager {
        }
    }

    /**
     * @hide
     * @return the reason code mapped to statsd for the AppBackgroundRestrictionsInfo atom.
     */
    public static @ExemptionReason int getExemptionReasonForStatsd(@ReasonCode int reasonCode) {
        switch (reasonCode) {
            case REASON_SYSTEM_UID:
                return EXEMPTION_REASON_SYSTEM_UID;
            case REASON_ALLOWLISTED_PACKAGE:
                return EXEMPTION_REASON_ALLOWLISTED_PACKAGE;
            case REASON_COMPANION_DEVICE_MANAGER:
                return EXEMPTION_REASON_COMPANION_DEVICE_MANAGER;
            case REASON_DEVICE_DEMO_MODE:
                return EXEMPTION_REASON_DEVICE_DEMO_MODE;
            case REASON_DEVICE_OWNER:
                return EXEMPTION_REASON_DEVICE_OWNER;
            case REASON_PROFILE_OWNER:
                return EXEMPTION_REASON_PROFILE_OWNER;
            case REASON_PROC_STATE_PERSISTENT:
                return EXEMPTION_REASON_PROC_STATE_PERSISTENT;
            case REASON_PROC_STATE_PERSISTENT_UI:
                return EXEMPTION_REASON_PROC_STATE_PERSISTENT_UI;
            case REASON_OP_ACTIVATE_VPN:
                return EXEMPTION_REASON_OP_ACTIVATE_VPN;
            case REASON_OP_ACTIVATE_PLATFORM_VPN:
                return EXEMPTION_REASON_OP_ACTIVATE_PLATFORM_VPN;
            case REASON_SYSTEM_MODULE:
                return EXEMPTION_REASON_SYSTEM_MODULE;
            case REASON_CARRIER_PRIVILEGED_APP:
                return EXEMPTION_REASON_CARRIER_PRIVILEGED_APP;
            case REASON_SYSTEM_ALLOW_LISTED:
                return EXEMPTION_REASON_SYSTEM_ALLOW_LISTED;
            case REASON_ROLE_DIALER:
                return EXEMPTION_REASON_ROLE_DIALER;
            case REASON_ROLE_EMERGENCY:
                return EXEMPTION_REASON_ROLE_EMERGENCY;
            default:
                return EXEMPTION_REASON_DENIED;
        }
    }

    /**
     * Return string name of the integer reason code.
     * @hide
+6 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.server.am.AppBatteryExemptionTracker.UidBatteryStates;
import com.android.server.am.AppBatteryTracker.AppBatteryPolicy;
import com.android.server.am.AppBatteryTracker.BatteryUsage;
import com.android.server.am.AppBatteryTracker.ImmutableBatteryUsage;
import com.android.server.am.AppRestrictionController.TrackerType;
import com.android.server.am.BaseAppStateTimeEvents.BaseTimeEvent;
import com.android.server.am.BaseAppStateTracker.Injector;
import com.android.server.am.BaseAppStateTracker.StateListener;
@@ -84,6 +85,11 @@ final class AppBatteryExemptionTracker
        mInjector.setPolicy(new AppBatteryExemptionPolicy(mInjector, this));
    }

    @Override
    @TrackerType int getType() {
        return AppRestrictionController.TRACKER_TYPE_BATTERY_EXEMPTION;
    }

    @Override
    void onSystemReady() {
        super.onSystemReady();
+6 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
import com.android.server.am.AppBatteryTracker.AppBatteryPolicy;
import com.android.server.am.AppRestrictionController.TrackerType;
import com.android.server.am.AppRestrictionController.UidBatteryUsageProvider;
import com.android.server.pm.UserManagerInternal;

@@ -194,6 +195,11 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy>
        mInjector.setPolicy(new AppBatteryPolicy(mInjector, this));
    }

    @Override
    @TrackerType int getType() {
        return AppRestrictionController.TRACKER_TYPE_BATTERY;
    }

    @Override
    void onSystemReady() {
        super.onSystemReady();
+6 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.app.ActivityManagerInternal.BindServiceEventListener;
import android.content.Context;

import com.android.server.am.AppBindServiceEventsTracker.AppBindServiceEventsPolicy;
import com.android.server.am.AppRestrictionController.TrackerType;
import com.android.server.am.BaseAppStateTimeSlotEventsTracker.SimpleAppStateTimeslotEvents;
import com.android.server.am.BaseAppStateTracker.Injector;

@@ -58,6 +59,11 @@ final class AppBindServiceEventsTracker extends BaseAppStateTimeSlotEventsTracke
        }
    }

    @Override
    @TrackerType int getType() {
        return AppRestrictionController.TRACKER_TYPE_BIND_SERVICE_EVENTS;
    }

    @Override
    void onSystemReady() {
        super.onSystemReady();
+6 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.app.ActivityManagerInternal.BroadcastEventListener;
import android.content.Context;

import com.android.server.am.AppBroadcastEventsTracker.AppBroadcastEventsPolicy;
import com.android.server.am.AppRestrictionController.TrackerType;
import com.android.server.am.BaseAppStateTimeSlotEventsTracker.SimpleAppStateTimeslotEvents;
import com.android.server.am.BaseAppStateTracker.Injector;

@@ -57,6 +58,11 @@ final class AppBroadcastEventsTracker extends BaseAppStateTimeSlotEventsTracker
        }
    }

    @Override
    @TrackerType int getType() {
        return AppRestrictionController.TRACKER_TYPE_BROADCAST_EVENTS;
    }

    @Override
    void onSystemReady() {
        super.onSystemReady();
Loading