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

Commit c4dafb43 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add type service in settings advanced page."

parents 46f85019 acc195fd
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;