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

Commit cbaffa34 authored by Kuan Wang's avatar Kuan Wang
Browse files

Add functions of SI DatabaseUtils into Settings DatabaseUtils and remove

unused functions.

Bug: 253395332
Test: make RunSettingsRoboTests
Change-Id: I61feee3386d7291f9174acb884d09d7ab8733511
parent c7afa45e
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -44,11 +44,6 @@ public final class BatteryUsageDataLoader {

    @VisibleForTesting
    static void loadUsageData(Context context) {
        // Checks whether the battery content provider is available.
        if (!DatabaseUtils.isContentProviderEnabled(context)) {
            Log.w(TAG, "battery usage content provider is disabled!");
            return;
        }
        final long start = System.currentTimeMillis();
        final BatteryUsageStats batteryUsageStats = DataProcessor.getBatteryUsageStats(context);
        final List<BatteryEntry> batteryEntryList =
+29 −14
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
 */

package com.android.settings.fuelgauge.batteryusage;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
@@ -25,6 +24,7 @@ import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.BatteryManager;
import android.os.BatteryUsageStats;
import android.os.Handler;
@@ -36,6 +36,7 @@ import android.util.Log;

import androidx.annotation.VisibleForTesting;

import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDatabase;
import com.android.settingslib.fuelgauge.BatteryStatus;

import java.time.Clock;
@@ -56,6 +57,7 @@ public final class DatabaseUtils {
    /** Clear memory threshold for device booting phase. **/
    private static final long CLEAR_MEMORY_THRESHOLD_MS = Duration.ofMinutes(5).toMillis();
    private static final long CLEAR_MEMORY_DELAYED_MS = Duration.ofSeconds(2).toMillis();
    private static final long DATA_RETENTION_INTERVAL_MS = Duration.ofDays(9).toMillis();

    /** An authority name of the battery content provider. */
    public static final String AUTHORITY = "com.android.settings.battery.usage.provider";
@@ -83,11 +85,6 @@ public final class DatabaseUtils {
        return userManager.isManagedProfile() && !userManager.isSystemUser();
    }

    /** Returns true if the chart graph design is enabled. */
    public static boolean isChartGraphEnabled(Context context) {
        return isContentProviderEnabled(context);
    }

    /** Long: for timestamp and String: for BatteryHistEntry.getKey() */
    public static Map<Long, Map<String, BatteryHistEntry>> getHistoryMapSinceLastFullCharge(
            Context context, Calendar calendar) {
@@ -115,11 +112,32 @@ public final class DatabaseUtils {
        return resultMap;
    }

    static boolean isContentProviderEnabled(Context context) {
        return context.getPackageManager()
                .getComponentEnabledSetting(
                        new ComponentName(SETTINGS_PACKAGE_PATH, BATTERY_PROVIDER_CLASS_PATH))
                == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
    /** Clears all data in the battery usage database. */
    public static void clearAll(Context context) {
        AsyncTask.execute(() -> {
            try {
                BatteryStateDatabase
                        .getInstance(context.getApplicationContext())
                        .batteryStateDao()
                        .clearAll();
            } catch (RuntimeException e) {
                Log.e(TAG, "clearAll() failed", e);
            }
        });
    }

    /** Clears all out-of-date data in the battery usage database. */
    public static void clearExpiredDataIfNeeded(Context context) {
        AsyncTask.execute(() -> {
            try {
                BatteryStateDatabase
                        .getInstance(context.getApplicationContext())
                        .batteryStateDao()
                        .clearAllBefore(Clock.systemUTC().millis() - DATA_RETENTION_INTERVAL_MS);
            } catch (RuntimeException e) {
                Log.e(TAG, "clearAllBefore() failed", e);
            }
        });
    }

    static List<ContentValues> sendBatteryEntryData(
@@ -258,9 +276,6 @@ public final class DatabaseUtils {
                return null;
            }
        }
        if (!isContentProviderEnabled(context)) {
            return null;
        }
        final Map<Long, Map<String, BatteryHistEntry>> resultMap = new HashMap();
        try (Cursor cursor =
                     context.getContentResolver().query(batteryStateUri, null, null, null)) {
+0 −12
Original line number Diff line number Diff line
@@ -20,9 +20,7 @@ import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -53,7 +51,6 @@ public final class BatteryUsageBroadcastReceiverTest {

    @Test
    public void onReceive_fetchUsageDataIntent_startService() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        mBatteryUsageBroadcastReceiver.onReceive(mContext,
                new Intent(BatteryUsageBroadcastReceiver.ACTION_FETCH_BATTERY_USAGE_DATA));

@@ -62,7 +59,6 @@ public final class BatteryUsageBroadcastReceiverTest {

    @Test
    public void onReceive_invalidIntent_notStartService() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        mBatteryUsageBroadcastReceiver.onReceive(mContext, new Intent("invalid intent"));

        assertThat(mBatteryUsageBroadcastReceiver.mFetchBatteryUsageData).isFalse();
@@ -95,12 +91,4 @@ public final class BatteryUsageBroadcastReceiverTest {

        assertThat(BatteryDiffEntry.sValidForRestriction).isNotEmpty();
    }

    private void setProviderSetting(int value) {
        when(mPackageManager.getComponentEnabledSetting(
                new ComponentName(
                        DatabaseUtils.SETTINGS_PACKAGE_PATH,
                        DatabaseUtils.BATTERY_PROVIDER_CLASS_PATH)))
                .thenReturn(value);
    }
}
+0 −25
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@@ -83,7 +82,6 @@ public final class BatteryUsageDataLoaderTest {
    public void loadUsageData_loadUsageDataWithHistory() {
        final List<BatteryEntry> batteryEntryList = new ArrayList<>();
        batteryEntryList.add(mMockBatteryEntry);
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        when(mBatteryStatsManager.getBatteryUsageStats(mStatsQueryCaptor.capture()))
                .thenReturn(mBatteryUsageStats);
        when(mMockBatteryAppListController.getBatteryEntryList(mBatteryUsageStats, true))
@@ -102,7 +100,6 @@ public final class BatteryUsageDataLoaderTest {

    @Test
    public void loadUsageData_nullBatteryUsageStats_notLoadBatteryEntryData() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        when(mBatteryStatsManager.getBatteryUsageStats(mStatsQueryCaptor.capture()))
                .thenReturn(null);

@@ -119,7 +116,6 @@ public final class BatteryUsageDataLoaderTest {

    @Test
    public void loadUsageData_nullBatteryEntryList_insertFakeDataIntoProvider() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        when(mBatteryStatsManager.getBatteryUsageStats(mStatsQueryCaptor.capture()))
                .thenReturn(mBatteryUsageStats);
        when(mMockBatteryAppListController.getBatteryEntryList(mBatteryUsageStats, true))
@@ -132,7 +128,6 @@ public final class BatteryUsageDataLoaderTest {

    @Test
    public void loadUsageData_emptyBatteryEntryList_insertFakeDataIntoProvider() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        when(mBatteryStatsManager.getBatteryUsageStats(mStatsQueryCaptor.capture()))
                .thenReturn(mBatteryUsageStats);
        when(mMockBatteryAppListController.getBatteryEntryList(mBatteryUsageStats, true))
@@ -142,24 +137,4 @@ public final class BatteryUsageDataLoaderTest {

        verify(mMockContentResolver).insert(any(), any());
    }

    @Test
    public void loadUsageData_providerIsDisabled_notLoadHistory() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
        when(mBatteryStatsManager.getBatteryUsageStats(mStatsQueryCaptor.capture()))
                .thenReturn(mBatteryUsageStats);

        BatteryUsageDataLoader.loadUsageData(mContext);

        verify(mBatteryStatsManager, never()).getBatteryUsageStats(
                mStatsQueryCaptor.capture());
    }

    private void setProviderSetting(int value) {
        when(mPackageManager.getComponentEnabledSetting(
                new ComponentName(
                        DatabaseUtils.SETTINGS_PACKAGE_PATH,
                        DatabaseUtils.BATTERY_PROVIDER_CLASS_PATH)))
                .thenReturn(value);
    }
}
+0 −42
Original line number Diff line number Diff line
@@ -22,9 +22,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
@@ -71,7 +69,6 @@ public final class DatabaseUtilsTest {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        doReturn(mMockContentResolver2).when(mMockContext).getContentResolver();
        doReturn(mMockContentResolver).when(mContext).getContentResolver();
        doReturn(mPackageManager).when(mMockContext).getPackageManager();
@@ -97,30 +94,6 @@ public final class DatabaseUtilsTest {
        assertThat(DatabaseUtils.isWorkProfile(mContext)).isFalse();
    }

    @Test
    public void isChartGraphEnabled_providerIsEnabled_returnTrue() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        assertThat(DatabaseUtils.isChartGraphEnabled(mContext)).isTrue();
    }

    @Test
    public void isChartGraphEnabled_providerIsDisabled_returnFalse() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
        assertThat(DatabaseUtils.isChartGraphEnabled(mContext)).isFalse();
    }

    @Test
    public void isContentProviderEnabled_providerEnabled_returnsTrue() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
        assertThat(DatabaseUtils.isContentProviderEnabled(mContext)).isTrue();
    }

    @Test
    public void isContentProviderEnabled_providerDisabled_returnsFalse() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
        assertThat(DatabaseUtils.isContentProviderEnabled(mContext)).isFalse();
    }

    @Test
    public void sendBatteryEntryData_nullBatteryIntent_returnsNullValue() {
        doReturn(null).when(mContext).registerReceiver(any(), any());
@@ -214,13 +187,6 @@ public final class DatabaseUtilsTest {
                DatabaseUtils.BATTERY_CONTENT_URI, /*observer=*/ null);
    }

    @Test
    public void getHistoryMapSinceLastFullCharge_providerIsDisabled_returnNull() {
        setProviderSetting(PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
        assertThat(DatabaseUtils.getHistoryMapSinceLastFullCharge(
                mContext, /*calendar=*/ null)).isNull();
    }

    @Test
    public void getHistoryMapSinceLastFullCharge_emptyCursorContent_returnEmptyMap() {
        final MatrixCursor cursor = new MatrixCursor(
@@ -374,14 +340,6 @@ public final class DatabaseUtilsTest {
                .isEqualTo(expectedTimestamp);
    }

    private void setProviderSetting(int value) {
        when(mPackageManager.getComponentEnabledSetting(
                new ComponentName(
                        DatabaseUtils.SETTINGS_PACKAGE_PATH,
                        DatabaseUtils.BATTERY_PROVIDER_CLASS_PATH)))
                .thenReturn(value);
    }

    private static void verifyContentValues(double consumedPower, ContentValues values) {
        assertThat(values.getAsDouble(BatteryHistEntry.KEY_CONSUME_POWER))
                .isEqualTo(consumedPower);