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

Commit b01f5201 authored by Kuan Wang's avatar Kuan Wang Committed by Automerger Merge Worker
Browse files

Move static UsageStatsManager from DatabaseUtils to DataProcessor to am: 20ec9893

parents 06bd7afe 20ec9893
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.settings.fuelgauge.batteryusage;

import android.annotation.IntDef;
import android.annotation.Nullable;
import android.app.usage.IUsageStatsManager;
import android.app.usage.UsageEvents.Event;
import android.app.usage.UsageStatsManager;
import android.content.ContentValues;
@@ -185,7 +186,8 @@ public final class ConvertUtils {
    /** Converts to {@link AppUsageEvent} from {@link Event} */
    @Nullable
    public static AppUsageEvent convertToAppUsageEvent(
            Context context, final Event event, final long userId) {
            Context context, IUsageStatsManager usageStatsManager, final Event event,
            final long userId) {
        final String packageName = event.getPackageName();
        if (packageName == null) {
            // See b/190609174: Event package names should never be null, but sometimes they are.
@@ -210,7 +212,8 @@ public final class ConvertUtils {
        }

        final String effectivePackageName =
                getEffectivePackageName(context, packageName, taskRootPackageName);
                getEffectivePackageName(
                        context, usageStatsManager, packageName, taskRootPackageName);
        try {
            final long uid = context
                    .getPackageManager()
@@ -326,8 +329,9 @@ public final class ConvertUtils {
     */
    @VisibleForTesting
    static String getEffectivePackageName(
            Context context, final String packageName, final String taskRootPackageName) {
        final int usageSource = getUsageSource(context);
            Context context, IUsageStatsManager usageStatsManager, final String packageName,
            final String taskRootPackageName) {
        final int usageSource = getUsageSource(context, usageStatsManager);
        switch (usageSource) {
            case UsageStatsManager.USAGE_SOURCE_TASK_ROOT_ACTIVITY:
                return !TextUtils.isEmpty(taskRootPackageName)
@@ -372,9 +376,9 @@ public final class ConvertUtils {
        }
    }

    private static int getUsageSource(Context context) {
    private static int getUsageSource(Context context, IUsageStatsManager usageStatsManager) {
        if (sUsageSource == EMPTY_USAGE_SOURCE) {
            sUsageSource = DatabaseUtils.getUsageSource(context);
            sUsageSource = DatabaseUtils.getUsageSource(context, usageStatsManager);
        }
        return sUsageSource;
    }
+10 −2
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.os.BatteryUsageStats;
import android.os.BatteryUsageStatsQuery;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UidBatteryConsumer;
import android.os.UserBatteryConsumer;
import android.os.UserHandle;
@@ -108,6 +109,11 @@ public final class DataProcessor {
    @VisibleForTesting
    static Set<String> sTestSystemAppsPackageNames;

    @VisibleForTesting
    static IUsageStatsManager sUsageStatsManager =
            IUsageStatsManager.Stub.asInterface(
                    ServiceManager.getService(Context.USAGE_STATS_SERVICE));

    public static final String CURRENT_TIME_BATTERY_HISTORY_PLACEHOLDER =
            "CURRENT_TIME_BATTERY_HISTORY_PLACEHOLDER";

@@ -338,7 +344,8 @@ public final class DataProcessor {
                            break;
                        }
                        final AppUsageEvent appUsageEvent =
                                ConvertUtils.convertToAppUsageEvent(context, event, userId);
                                ConvertUtils.convertToAppUsageEvent(
                                        context, sUsageStatsManager, event, userId);
                        if (appUsageEvent != null) {
                            numEventsFetched++;
                            appUsageEventList.add(appUsageEvent);
@@ -694,6 +701,7 @@ public final class DataProcessor {
            final long eventUserId = firstEvent.getUserId();
            final String packageName = getEffectivePackageName(
                    context,
                    sUsageStatsManager,
                    firstEvent.getPackageName(),
                    firstEvent.getTaskRootPackageName());
            usageEvents.addAll(deviceEvents);
@@ -966,7 +974,7 @@ public final class DataProcessor {
        final long startTime = DatabaseUtils.getAppUsageStartTimestampOfUser(
                context, userID, earliestTimestamp);
        return loadAppUsageEventsForUserFromService(
                DatabaseUtils.sUsageStatsManager, startTime, now, userID, callingPackage);
                sUsageStatsManager, startTime, now, userID, callingPackage);
    }

    @Nullable
+2 −8
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ import android.os.BatteryUsageStats;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserManager;
import android.util.Log;
@@ -117,11 +116,6 @@ public final class DatabaseUtils {
    @VisibleForTesting
    static Supplier<Cursor> sFakeSupplier;

    @VisibleForTesting
    static IUsageStatsManager sUsageStatsManager =
            IUsageStatsManager.Stub.asInterface(
                    ServiceManager.getService(Context.USAGE_STATS_SERVICE));

    private DatabaseUtils() {
    }

@@ -488,7 +482,7 @@ public final class DatabaseUtils {
     *
     * @see UsageStatsManager#getUsageSource()
     */
    static int getUsageSource(Context context) {
    static int getUsageSource(Context context, IUsageStatsManager usageStatsManager) {
        final SharedPreferences sharedPreferences = getSharedPreferences(context);
        if (sharedPreferences != null && sharedPreferences.contains(KEY_LAST_USAGE_SOURCE)) {
            return sharedPreferences
@@ -497,7 +491,7 @@ public final class DatabaseUtils {
        int usageSource = ConvertUtils.DEFAULT_USAGE_SOURCE;

        try {
            usageSource = sUsageStatsManager.getUsageSource();
            usageSource = usageStatsManager.getUsageSource();
        } catch (RemoteException e) {
            Log.e(TAG, "Failed to getUsageSource", e);
        }
+14 −9
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.app.usage.IUsageStatsManager;
import android.app.usage.UsageEvents;
import android.app.usage.UsageEvents.Event;
import android.content.ContentValues;
@@ -61,6 +62,8 @@ public final class ConvertUtilsTest {
    private BatteryUsageStats mBatteryUsageStats;
    @Mock
    private BatteryEntry mMockBatteryEntry;
    @Mock
    private IUsageStatsManager mUsageStatsManager;

    @Before
    public void setUp() {
@@ -68,6 +71,7 @@ public final class ConvertUtilsTest {
        mContext = spy(RuntimeEnvironment.application);
        ConvertUtils.sUsageSource = ConvertUtils.EMPTY_USAGE_SOURCE;
        when(mContext.getPackageManager()).thenReturn(mMockPackageManager);
        DataProcessor.sUsageStatsManager = mUsageStatsManager;
    }

    @Test
@@ -299,7 +303,7 @@ public final class ConvertUtilsTest {

        final long userId = 2;
        final AppUsageEvent appUsageEvent = ConvertUtils.convertToAppUsageEvent(
                mContext, event, userId);
                mContext, mUsageStatsManager, event, userId);
        assertThat(appUsageEvent.getTimestamp()).isEqualTo(101L);
        assertThat(appUsageEvent.getType()).isEqualTo(AppUsageEventType.ACTIVITY_RESUMED);
        assertThat(appUsageEvent.getPackageName()).isEqualTo("com.android.settings1");
@@ -320,7 +324,7 @@ public final class ConvertUtilsTest {

        final long userId = 1;
        final AppUsageEvent appUsageEvent =
                ConvertUtils.convertToAppUsageEvent(mContext, event, userId);
                ConvertUtils.convertToAppUsageEvent(mContext, mUsageStatsManager, event, userId);
        assertThat(appUsageEvent.getTimestamp()).isEqualTo(101L);
        assertThat(appUsageEvent.getType()).isEqualTo(AppUsageEventType.DEVICE_SHUTDOWN);
        assertThat(appUsageEvent.getPackageName()).isEqualTo("com.android.settings1");
@@ -336,7 +340,8 @@ public final class ConvertUtilsTest {
        event.mPackage = null;

        final AppUsageEvent appUsageEvent =
                ConvertUtils.convertToAppUsageEvent(mContext, event, /*userId=*/ 0);
                ConvertUtils.convertToAppUsageEvent(
                        mContext, mUsageStatsManager, event, /*userId=*/ 0);

        assertThat(appUsageEvent).isNull();
    }
@@ -352,7 +357,7 @@ public final class ConvertUtilsTest {

        final long userId = 1;
        final AppUsageEvent appUsageEvent =
                ConvertUtils.convertToAppUsageEvent(mContext, event, userId);
                ConvertUtils.convertToAppUsageEvent(mContext, mUsageStatsManager, event, userId);

        assertThat(appUsageEvent).isNull();
    }
@@ -453,7 +458,7 @@ public final class ConvertUtilsTest {
        final String taskRootPackageName = "com.android.settings2";

        assertThat(ConvertUtils.getEffectivePackageName(
                mContext, packageName, taskRootPackageName))
                mContext, mUsageStatsManager, packageName, taskRootPackageName))
                .isEqualTo(packageName);
    }

@@ -463,7 +468,7 @@ public final class ConvertUtilsTest {
        final String taskRootPackageName = "com.android.settings2";

        assertThat(ConvertUtils.getEffectivePackageName(
                mContext, packageName, taskRootPackageName))
                mContext, mUsageStatsManager, packageName, taskRootPackageName))
                .isEqualTo(packageName);
    }

@@ -474,7 +479,7 @@ public final class ConvertUtilsTest {
        final String taskRootPackageName = "com.android.settings2";

        assertThat(ConvertUtils.getEffectivePackageName(
                mContext, packageName, taskRootPackageName))
                mContext, mUsageStatsManager, packageName, taskRootPackageName))
                .isEqualTo(taskRootPackageName);
    }

@@ -484,10 +489,10 @@ public final class ConvertUtilsTest {
        final String packageName = "com.android.settings1";

        assertThat(ConvertUtils.getEffectivePackageName(
                mContext, packageName, /*taskRootPackageName=*/ null))
                mContext, mUsageStatsManager, packageName, /*taskRootPackageName=*/ null))
                .isEqualTo(packageName);
        assertThat(ConvertUtils.getEffectivePackageName(
                mContext, packageName, /*taskRootPackageName=*/ ""))
                mContext, mUsageStatsManager, packageName, /*taskRootPackageName=*/ ""))
                .isEqualTo(packageName);
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ public final class DataProcessManagerTest {
        MockitoAnnotations.initMocks(this);

        mContext = spy(RuntimeEnvironment.application);
        DatabaseUtils.sUsageStatsManager = mUsageStatsManager;
        DataProcessor.sUsageStatsManager = mUsageStatsManager;
        doReturn(mContext).when(mContext).getApplicationContext();
        doReturn(mUserManager)
                .when(mContext)
Loading