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

Commit 9892d579 authored by Kweku Adams's avatar Kweku Adams
Browse files

Make it possible to toggle individual policies.

Bug: 240726265
Test: atest frameworks/base/services/tests/mockingservicestests/src/com/android/server/tare
Test: atest frameworks/base/services/tests/servicestests/src/com/android/server/tare
Change-Id: I79a939ab645c14bbea4c2b4e17fda1f63031f1b0
parent 80c068c1
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -91,6 +91,13 @@ public class EconomyManager {
        }
    }

    public static final String KEY_ENABLE_TARE = "enable_tare";
    public static final String KEY_ENABLE_POLICY_ALARM = "enable_policy_alarm";
    public static final String KEY_ENABLE_POLICY_JOB_SCHEDULER = "enable_policy_job";
    public static final boolean DEFAULT_ENABLE_TARE = true;
    public static final boolean DEFAULT_ENABLE_POLICY_ALARM = true;
    public static final boolean DEFAULT_ENABLE_POLICY_JOB_SCHEDULER = true;

    // Keys for AlarmManager TARE factors
    /** @hide */
    public static final String KEY_AM_MIN_SATIATED_BALANCE_EXEMPTED =
+4 −4
Original line number Diff line number Diff line
@@ -59,8 +59,6 @@ import static com.android.server.alarm.AlarmManagerService.RemovedAlarm.REMOVE_R

import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.UserIdInt;
import android.app.Activity;
import android.app.ActivityManagerInternal;
@@ -883,9 +881,11 @@ public class AlarmManagerService extends SystemService {
            mInjector.registerDeviceConfigListener(this);
            final EconomyManagerInternal economyManagerInternal =
                    LocalServices.getService(EconomyManagerInternal.class);
            economyManagerInternal.registerTareStateChangeListener(this);
            economyManagerInternal.registerTareStateChangeListener(this,
                    AlarmManagerEconomicPolicy.POLICY_ALARM);
            onPropertiesChanged(DeviceConfig.getProperties(DeviceConfig.NAMESPACE_ALARM_MANAGER));
            updateTareSettings(economyManagerInternal.isEnabled());
            updateTareSettings(
                    economyManagerInternal.isEnabled(AlarmManagerEconomicPolicy.POLICY_ALARM));
        }

        public void updateAllowWhileIdleWhitelistDurationLocked() {
+5 −2
Original line number Diff line number Diff line
@@ -116,6 +116,7 @@ import com.android.server.job.restrictions.JobRestriction;
import com.android.server.job.restrictions.ThermalStatusRestriction;
import com.android.server.pm.UserManagerInternal;
import com.android.server.tare.EconomyManagerInternal;
import com.android.server.tare.JobSchedulerEconomicPolicy;
import com.android.server.usage.AppStandbyInternal;
import com.android.server.usage.AppStandbyInternal.AppIdleStateChangeListener;
import com.android.server.utils.quota.Categorizer;
@@ -373,10 +374,12 @@ public class JobSchedulerService extends com.android.server.SystemService
                    JobSchedulerBackgroundThread.getExecutor(), this);
            final EconomyManagerInternal economyManagerInternal =
                    LocalServices.getService(EconomyManagerInternal.class);
            economyManagerInternal.registerTareStateChangeListener(this);
            economyManagerInternal
                    .registerTareStateChangeListener(this, JobSchedulerEconomicPolicy.POLICY_JOB);
            // Load all the constants.
            synchronized (mLock) {
                mConstants.updateTareSettingsLocked(economyManagerInternal.isEnabled());
                mConstants.updateTareSettingsLocked(
                        economyManagerInternal.isEnabled(JobSchedulerEconomicPolicy.POLICY_JOB));
            }
            onPropertiesChanged(DeviceConfig.getProperties(DeviceConfig.NAMESPACE_JOB_SCHEDULER));
        }
+5 −1
Original line number Diff line number Diff line
@@ -1196,7 +1196,11 @@ class Agent {
                final EconomyManagerInternal.AnticipatedAction aa = anticipatedActions.get(i);
                final EconomicPolicy.Action action = economicPolicy.getAction(aa.actionId);
                if (action == null) {
                    if ((aa.actionId & EconomicPolicy.ALL_POLICIES) == 0) {
                        throw new IllegalArgumentException("Invalid action id: " + aa.actionId);
                    } else {
                        Slog.w(TAG, "Tracking disabled policy's action? " + aa.actionId);
                    }
                }
            }
            mListener = listener;
+9 −9
Original line number Diff line number Diff line
@@ -117,23 +117,23 @@ public class AlarmManagerEconomicPolicy extends EconomicPolicy {
    private static final String TAG = "TARE- " + AlarmManagerEconomicPolicy.class.getSimpleName();

    public static final int ACTION_ALARM_WAKEUP_EXACT_ALLOW_WHILE_IDLE =
            TYPE_ACTION | POLICY_AM | 0;
            TYPE_ACTION | POLICY_ALARM | 0;
    public static final int ACTION_ALARM_WAKEUP_EXACT =
            TYPE_ACTION | POLICY_AM | 1;
            TYPE_ACTION | POLICY_ALARM | 1;
    public static final int ACTION_ALARM_WAKEUP_INEXACT_ALLOW_WHILE_IDLE =
            TYPE_ACTION | POLICY_AM | 2;
            TYPE_ACTION | POLICY_ALARM | 2;
    public static final int ACTION_ALARM_WAKEUP_INEXACT =
            TYPE_ACTION | POLICY_AM | 3;
            TYPE_ACTION | POLICY_ALARM | 3;
    public static final int ACTION_ALARM_NONWAKEUP_EXACT_ALLOW_WHILE_IDLE =
            TYPE_ACTION | POLICY_AM | 4;
            TYPE_ACTION | POLICY_ALARM | 4;
    public static final int ACTION_ALARM_NONWAKEUP_EXACT =
            TYPE_ACTION | POLICY_AM | 5;
            TYPE_ACTION | POLICY_ALARM | 5;
    public static final int ACTION_ALARM_NONWAKEUP_INEXACT_ALLOW_WHILE_IDLE =
            TYPE_ACTION | POLICY_AM | 6;
            TYPE_ACTION | POLICY_ALARM | 6;
    public static final int ACTION_ALARM_NONWAKEUP_INEXACT =
            TYPE_ACTION | POLICY_AM | 7;
            TYPE_ACTION | POLICY_ALARM | 7;
    public static final int ACTION_ALARM_CLOCK =
            TYPE_ACTION | POLICY_AM | 8;
            TYPE_ACTION | POLICY_ALARM | 8;

    private static final int[] COST_MODIFIERS = new int[]{
            COST_MODIFIER_CHARGING,
Loading