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

Commit 54459975 authored by Lei Yu's avatar Lei Yu Committed by android-build-merger
Browse files

Merge "Make icon in Anomaly detail page have badge." into oc-dr1-dev

am: 2e34b948

Change-Id: I986039cb676054b31b41ce54ab3c9c034297721f
parents eeec8eec 2e34b948
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ public class PowerUsageAnomalyDetails extends DashboardFragment implements
    PackageManager mPackageManager;
    @VisibleForTesting
    BatteryUtils mBatteryUtils;
    @VisibleForTesting
    IconDrawableFactory mIconDrawableFactory;

    public static void startBatteryAbnormalPage(SettingsActivity caller,
@@ -79,7 +80,7 @@ public class PowerUsageAnomalyDetails extends DashboardFragment implements
        mAnomalies = getArguments().getParcelableArrayList(EXTRA_ANOMALY_LIST);
        mAbnormalListGroup = (PreferenceGroup) findPreference(KEY_PREF_ANOMALY_LIST);
        mPackageManager = context.getPackageManager();
        mIconDrawableFactory = IconDrawableFactory.newInstance(context, false /* EmbedShadow */);
        mIconDrawableFactory = IconDrawableFactory.newInstance(context);
        mBatteryUtils = BatteryUtils.getInstance(context);
    }

@@ -134,7 +135,7 @@ public class PowerUsageAnomalyDetails extends DashboardFragment implements
            final Anomaly anomaly = mAnomalies.get(i);
            Preference pref = new AnomalyPreference(getPrefContext(), anomaly);
            pref.setSummary(mBatteryUtils.getSummaryResIdFromAnomalyType(anomaly.type));
            Drawable icon = getIconFromPackageName(anomaly.packageName);
            Drawable icon = getBadgedIcon(anomaly.packageName, UserHandle.getUserId(anomaly.uid));
            if (icon != null) {
                pref.setIcon(icon);
            }
@@ -149,11 +150,12 @@ public class PowerUsageAnomalyDetails extends DashboardFragment implements
        refreshUi();
    }

    Drawable getIconFromPackageName(String packageName) {
    @VisibleForTesting
    Drawable getBadgedIcon(String packageName, int userId) {
        try {
            final ApplicationInfo appInfo = mPackageManager.getApplicationInfo(packageName,
                    PackageManager.GET_META_DATA);
            return mIconDrawableFactory.getBadgedIcon(appInfo);
            return mIconDrawableFactory.getBadgedIcon(appInfo, userId);
        } catch (PackageManager.NameNotFoundException e) {
            return mPackageManager.getDefaultActivityIcon();
        }
+29 −6
Original line number Diff line number Diff line
@@ -22,24 +22,27 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceManager;
import android.util.IconDrawableFactory;

import com.android.settings.SettingsActivity;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.fuelgauge.anomaly.Anomaly;
import com.android.settings.fuelgauge.anomaly.AnomalyPreference;


import org.junit.Before;
import org.junit.Test;
@@ -64,6 +67,7 @@ public class PowerUsageAnomalyDetailsTest {
    private static final String PACKAGE_NAME_1 = "com.android.app1";
    private static final String PACKAGE_NAME_2 = "com.android.app2";
    private static final String PACKAGE_NAME_3 = "com.android.app3";
    private static final int USER_ID = 1;

    @Mock
    private SettingsActivity mSettingsActivity;
@@ -75,6 +79,12 @@ public class PowerUsageAnomalyDetailsTest {
    private Drawable mDrawable2;
    @Mock
    private Drawable mDrawable3;
    @Mock
    private PackageManager mPackageManager;
    @Mock
    private IconDrawableFactory mIconDrawableFactory;
    @Mock
    private ApplicationInfo mApplicationInfo;
    private Context mContext;
    private PowerUsageAnomalyDetails mFragment;
    private PreferenceGroup mAbnormalListGroup;
@@ -109,10 +119,11 @@ public class PowerUsageAnomalyDetailsTest {
        mAnomalyList.add(anomaly3);

        mFragment = spy(new PowerUsageAnomalyDetails());
        doReturn(null).when(mFragment).getIconFromPackageName(any());
        mFragment.mAbnormalListGroup = mAbnormalListGroup;
        mFragment.mAnomalies = mAnomalyList;
        mFragment.mBatteryUtils = new BatteryUtils(mContext);
        mFragment.mPackageManager = mPackageManager;
        mFragment.mIconDrawableFactory = mIconDrawableFactory;
        doReturn(mPreferenceManager).when(mFragment).getPreferenceManager();
        doReturn(mContext).when(mPreferenceManager).getContext();
    }
@@ -146,9 +157,9 @@ public class PowerUsageAnomalyDetailsTest {

    @Test
    public void testRefreshUi_iconCorrect() {
        doReturn(mDrawable1).when(mFragment).getIconFromPackageName(PACKAGE_NAME_1);
        doReturn(mDrawable2).when(mFragment).getIconFromPackageName(PACKAGE_NAME_2);
        doReturn(mDrawable3).when(mFragment).getIconFromPackageName(PACKAGE_NAME_3);
        doReturn(mDrawable1).when(mFragment).getBadgedIcon(eq(PACKAGE_NAME_1), anyInt());
        doReturn(mDrawable2).when(mFragment).getBadgedIcon(eq(PACKAGE_NAME_2), anyInt());
        doReturn(mDrawable3).when(mFragment).getBadgedIcon(eq(PACKAGE_NAME_3), anyInt());

        final List<Drawable> testIcons = new ArrayList<>();
        final ArgumentCaptor<Preference> preferenceCaptor = ArgumentCaptor.forClass(
@@ -187,4 +198,16 @@ public class PowerUsageAnomalyDetailsTest {
        assertThat(mBundle.getParcelableArrayList(
                PowerUsageAnomalyDetails.EXTRA_ANOMALY_LIST)).isEqualTo(mAnomalyList);
    }

    @Test
    public void testGetBadgedIcon_usePackageNameAndUserId() throws
            PackageManager.NameNotFoundException {
        doReturn(mApplicationInfo).when(mPackageManager).getApplicationInfo(PACKAGE_NAME_1,
                PackageManager.GET_META_DATA);

        mFragment.getBadgedIcon(PACKAGE_NAME_1, USER_ID);

        // Verify that it uses the correct user id
        verify(mIconDrawableFactory).getBadgedIcon(mApplicationInfo, USER_ID);
    }
}