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

Commit acc195fd authored by jackqdyulei's avatar jackqdyulei
Browse files

Add type service in settings advanced page.

Currently it only includes the gms service

Bug: 35317876
Test: RunSettingsRoboTests
Change-Id: I20a2a9d320efe4aed036552d450f59c89e81584a
parent 07eaca52
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
package com.android.settings.fuelgauge;

import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Process;
import android.provider.SearchIndexableResource;
@@ -61,6 +62,8 @@ public class PowerUsageAdvanced extends PowerUsageBase {
            UsageType.APP};
    private BatteryHistoryPreference mHistPref;
    private PreferenceGroup mUsageListGroup;
    private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
    private PackageManager mPackageManager;

    @Override
    public void onCreate(Bundle icicle) {
@@ -68,6 +71,9 @@ public class PowerUsageAdvanced extends PowerUsageBase {

        mHistPref = (BatteryHistoryPreference) findPreference(KEY_BATTERY_GRAPH);
        mUsageListGroup = (PreferenceGroup) findPreference(KEY_BATTERY_USAGE_LIST);
        mPowerUsageFeatureProvider = FeatureFactory.getFactory(getContext())
                .getPowerUsageFeatureProvider(getContext());
        mPackageManager = getContext().getPackageManager();
    }

    @Override
@@ -133,6 +139,8 @@ public class PowerUsageAdvanced extends PowerUsageBase {
            return UsageType.CELL;
        } else if (uid == Process.SYSTEM_UID || uid == Process.ROOT_UID) {
            return UsageType.SYSTEM;
        } else if (mPowerUsageFeatureProvider.isTypeService(sipper.mPackages)) {
            return UsageType.SERVICE;
        } else {
            return UsageType.APP;
        }
@@ -149,6 +157,7 @@ public class PowerUsageAdvanced extends PowerUsageBase {

        // Accumulate power usage based on usage type
        for (final BatterySipper sipper : batterySippers) {
            sipper.mPackages = mPackageManager.getPackagesForUid(sipper.getUid());
            final PowerUsageData usageData = batteryDataMap.get(extractUsageType(sipper));
            usageData.totalPowerMah += sipper.totalPowerMah;
        }
@@ -165,6 +174,16 @@ public class PowerUsageAdvanced extends PowerUsageBase {
        return batteryDataList;
    }

    @VisibleForTesting
    void setPackageManager(PackageManager packageManager) {
        mPackageManager = packageManager;
    }

    @VisibleForTesting
    void setPowerUsageFeatureProvider(PowerUsageFeatureProvider provider) {
        mPowerUsageFeatureProvider = provider;
    }

    /**
     * Class that contains data used in {@link PowerGaugePreference}.
     */
+5 −0
Original line number Diff line number Diff line
@@ -41,4 +41,9 @@ public interface PowerUsageFeatureProvider {
   * Check whether advanced ui is enabled
   */
  boolean isAdvancedUiEnabled();

  /**
   * Check whether it is type service
   */
  boolean isTypeService(String[] packages);
}
+5 −0
Original line number Diff line number Diff line
@@ -38,4 +38,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
    public boolean isAdvancedUiEnabled() {
        return false;
    }

    @Override
    public boolean isTypeService(String[] packages) {
        return false;
    }
}
+18 −0
Original line number Diff line number Diff line
package com.android.settings.fuelgauge;

import android.content.pm.PackageManager;
import android.os.Process;
import com.android.internal.os.BatterySipper;
import com.android.internal.os.BatterySipper.DrainType;
@@ -21,6 +22,7 @@ import java.util.List;
import java.util.Set;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;

@RunWith(SettingsRobolectricTestRunner.class)
@@ -38,6 +40,10 @@ public class PowerUsageAdvancedTest {
    private BatterySipper mBatterySipper;
    @Mock
    private BatteryStatsHelper mBatteryStatsHelper;
    @Mock
    private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
    @Mock
    private PackageManager mPackageManager;
    private PowerUsageAdvanced mPowerUsageAdvanced;

    @Before
@@ -57,6 +63,8 @@ public class PowerUsageAdvancedTest {

        when(mBatteryStatsHelper.getUsageList()).thenReturn(batterySippers);
        when(mBatteryStatsHelper.getTotalPower()).thenReturn(TOTAL_USAGE);
        mPowerUsageAdvanced.setPackageManager(mPackageManager);
        mPowerUsageAdvanced.setPowerUsageFeatureProvider(mPowerUsageFeatureProvider);
    }

    @Test
@@ -86,6 +94,16 @@ public class PowerUsageAdvancedTest {
        }
    }

    @Test
    public void testExtractUsageType_TypeService_ReturnService() {
        mBatterySipper.drainType = DrainType.APP;
        when(mBatterySipper.getUid()).thenReturn(FAKE_UID_1);
        when(mPowerUsageFeatureProvider.isTypeService(any())).thenReturn(true);

        assertThat(mPowerUsageAdvanced.extractUsageType(mBatterySipper))
                .isEqualTo(UsageType.SERVICE);
    }

    @Test
    public void testParsePowerUsageData_PercentageCalculatedCorrectly() {
        final double percentApp = TYPE_APP_USAGE * 2 / TOTAL_USAGE * 100;