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

Commit ef2636a4 authored by Suprabh Shukla's avatar Suprabh Shukla
Browse files

Logging the caller uid state with AlarmScheduled atom

Test: statsd_testdrive 368
Test: atest FrameworksMockingServicesTests:AlarmManagerServiceTest
Test: atest CtsAlarmManagerTestCases
Test: atest CtsStatsdAtomHostTestCases:AlarmStatsTests

Bug: 194249875
Change-Id: Ia55306b3a4839aadc4bc2fdd873878b1a4e591fb
parent 4e05326a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -2052,10 +2052,11 @@ public class AlarmManagerService extends SystemService {
                    + " -- package not allowed to start");
            return;
        }
        final int callerProcState = mActivityManagerInternal.getUidProcessState(callingUid);
        removeLocked(operation, directReceiver, REMOVE_REASON_UNDEFINED);
        incrementAlarmCount(a.uid);
        setImplLocked(a);
        MetricsHelper.pushAlarmScheduled(a);
        MetricsHelper.pushAlarmScheduled(a, callerProcState);
    }

    /**
+4 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static com.android.internal.util.FrameworkStatsLog.ALARM_SCHEDULED__EXACT
import static com.android.internal.util.FrameworkStatsLog.ALARM_SCHEDULED__EXACT_ALARM_ALLOWED_REASON__PERMISSION;
import static com.android.server.alarm.AlarmManagerService.INDEFINITE_DELAY;

import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.StatsManager;
import android.content.Context;
@@ -93,7 +94,7 @@ class MetricsHelper {
        }
    }

    static void pushAlarmScheduled(Alarm a) {
    static void pushAlarmScheduled(Alarm a, int callerProcState) {
        FrameworkStatsLog.write(
                FrameworkStatsLog.ALARM_SCHEDULED,
                a.uid,
@@ -103,7 +104,8 @@ class MetricsHelper {
                a.alarmClock != null,
                a.repeatInterval != 0,
                reasonToStatsReason(a.mExactAllowReason),
                AlarmManagerService.isRtc(a.type));
                AlarmManagerService.isRtc(a.type),
                ActivityManager.processStateAmToProto(callerProcState));
    }

    static void pushAlarmBatchDelivered(int numAlarms, int wakeups) {
+2 −1
Original line number Diff line number Diff line
@@ -3002,7 +3002,8 @@ public class AlarmManagerServiceTest {
            final PendingIntent pi = getNewMockPendingIntent();
            setTestAlarm(ELAPSED_REALTIME, mNowElapsedTest + i, pi);

            verify(() -> MetricsHelper.pushAlarmScheduled(argThat(a -> a.matches(pi, null))));
            verify(() -> MetricsHelper.pushAlarmScheduled(argThat(a -> a.matches(pi, null)),
                    anyInt()));
        }
    }