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

Commit d12b43dd authored by Varun Shah's avatar Varun Shah
Browse files

Add initial logging for App Background Restrictions metrics.

Bug: 217744262
Test: statsd_testdrive 441
Change-Id: I13c9f2acd6abc1e3b61aaff28086b9e53155d780
parent 06acf51d
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