Loading src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +25 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.fuelgauge; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.res.Configuration; import android.graphics.drawable.Drawable; Loading @@ -37,6 +38,7 @@ import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; Loading Loading @@ -89,9 +91,10 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll private final String mPreferenceKey; private final SettingsActivity mActivity; private final InstrumentedPreferenceFragment mFragment; private final Handler mHandler = new Handler(Looper.getMainLooper()); private final CharSequence[] mNotAllowShowSummaryPackages; private final CharSequence[] mNotAllowShowEntryPackages; private final CharSequence[] mNotAllowShowSummaryPackages; private final MetricsFeatureProvider mMetricsFeatureProvider; private final Handler mHandler = new Handler(Looper.getMainLooper()); // Preference cache to avoid create new instance each time. @VisibleForTesting Loading @@ -111,6 +114,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll .getTextArray(R.array.allowlist_hide_summary_in_battery_usage); mNotAllowShowEntryPackages = context.getResources() .getTextArray(R.array.allowlist_hide_entry_in_battery_usage); mMetricsFeatureProvider = FeatureFactory.getFactory(mContext).getMetricsFeatureProvider(); if (lifecycle != null) { lifecycle.addObserver(this); } Loading @@ -127,6 +132,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll savedInstanceState.getBoolean(KEY_EXPAND_SYSTEM_INFO, mIsExpanded); Log.d(TAG, String.format("onCreate() slotIndex=%d isExpanded=%b", mTrapezoidIndex, mIsExpanded)); mMetricsFeatureProvider.action(mPrefContext, SettingsEnums.OPEN_BATTERY_USAGE); } @Override Loading Loading @@ -191,15 +197,22 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll final BatteryDiffEntry diffEntry = powerPref.getBatteryDiffEntry(); final BatteryHistEntry histEntry = diffEntry.mBatteryHistEntry; final String packageName = histEntry.mPackageName; final boolean isAppEntry = histEntry.isAppEntry(); // Checks whether the package is installed or not. boolean isValidPackage = true; if (histEntry.isAppEntry()) { if (isAppEntry) { if (mBatteryUtils == null) { mBatteryUtils = BatteryUtils.getInstance(mPrefContext); } isValidPackage = mBatteryUtils.getPackageUid(packageName) != BatteryUtils.UID_NULL; } mMetricsFeatureProvider.action( mPrefContext, isAppEntry ? SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM : SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM, packageName); Log.d(TAG, String.format("handleClick() label=%s key=%s isValid:%b\n%s", diffEntry.getAppLabel(), histEntry.getKey(), isValidPackage, histEntry)); if (isValidPackage) { Loading @@ -215,11 +228,20 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll public void onSelect(int trapezoidIndex) { Log.d(TAG, "onChartSelect:" + trapezoidIndex); refreshUi(trapezoidIndex, /*isForce=*/ false); mMetricsFeatureProvider.action( mPrefContext, trapezoidIndex == BatteryChartView.SELECTED_INDEX_ALL ? SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL : SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT); } @Override public void onExpand(boolean isExpanded) { mIsExpanded = isExpanded; mMetricsFeatureProvider.action( mPrefContext, SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM, isExpanded); refreshExpandUi(); } Loading tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java +51 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.ContentValues; import android.content.pm.PackageManager; Loading @@ -43,6 +44,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import org.junit.Before; import org.junit.Test; Loading Loading @@ -82,12 +84,16 @@ public final class BatteryChartPreferenceControllerTest { @Mock private Resources mResources; private Context mContext; private FakeFeatureFactory mFeatureFactory; private BatteryDiffEntry mBatteryDiffEntry; private MetricsFeatureProvider mMetricsFeatureProvider; private BatteryChartPreferenceController mBatteryChartPreferenceController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mFeatureFactory = FakeFeatureFactory.setupForTest(); mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider; mContext = spy(RuntimeEnvironment.application); mBatteryChartPreferenceController = createController(); mBatteryChartPreferenceController.mPrefContext = mContext; Loading Loading @@ -331,9 +337,14 @@ public final class BatteryChartPreferenceControllerTest { } @Test public void testHandlePreferenceTreeClick_notPowerGaugePreference_returnFalse() { public void testHandlePreferenceTreeiClick_notPowerGaugePreference_returnFalse() { assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick(mAppListGroup)) .isFalse(); verify(mMetricsFeatureProvider, never()) .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM); verify(mMetricsFeatureProvider, never()) .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM); } @Test Loading @@ -343,6 +354,11 @@ public final class BatteryChartPreferenceControllerTest { assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick( mPowerGaugePreference)).isTrue(); verify(mMetricsFeatureProvider) .action( mContext, SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM, mBatteryHistEntry.mPackageName); } @Test Loading @@ -355,6 +371,11 @@ public final class BatteryChartPreferenceControllerTest { assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick( mPowerGaugePreference)).isFalse(); verify(mMetricsFeatureProvider) .action( mContext, SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM, mBatteryHistEntry.mPackageName); } @Test Loading Loading @@ -474,6 +495,11 @@ public final class BatteryChartPreferenceControllerTest { verify(mAppListGroup).addPreference(captor.capture()); // Verifies the added preference. assertThat(captor.getValue().getKey()).isEqualTo(PREF_KEY); verify(mMetricsFeatureProvider) .action( mContext, SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM, true /*isExpanded*/); } @Test Loading @@ -489,6 +515,28 @@ public final class BatteryChartPreferenceControllerTest { verify(mAppListGroup).findPreference(PREF_KEY); verify(mAppListGroup).removePreference(mPowerGaugePreference); assertThat(mBatteryChartPreferenceController.mPreferenceCache).hasSize(1); verify(mMetricsFeatureProvider) .action( mContext, SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM, false /*isExpanded*/); } @Test public void testOnSelect_selectSpecificTimeSlot_logMetric() { mBatteryChartPreferenceController.onSelect(1 /*slot index*/); verify(mMetricsFeatureProvider) .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT); } @Test public void testOnSelect_selectAll_logMetric() { mBatteryChartPreferenceController.onSelect( BatteryChartView.SELECTED_INDEX_ALL /*slot index*/); verify(mMetricsFeatureProvider) .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL); } @Test Loading Loading @@ -610,6 +658,8 @@ public final class BatteryChartPreferenceControllerTest { assertThat(mBatteryChartPreferenceController.mTrapezoidIndex) .isEqualTo(expectedIndex); assertThat(mBatteryChartPreferenceController.mIsExpanded).isTrue(); verify(mMetricsFeatureProvider) .action(mContext, SettingsEnums.OPEN_BATTERY_USAGE); } @Test Loading Loading
src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +25 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.fuelgauge; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.res.Configuration; import android.graphics.drawable.Drawable; Loading @@ -37,6 +38,7 @@ import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; Loading Loading @@ -89,9 +91,10 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll private final String mPreferenceKey; private final SettingsActivity mActivity; private final InstrumentedPreferenceFragment mFragment; private final Handler mHandler = new Handler(Looper.getMainLooper()); private final CharSequence[] mNotAllowShowSummaryPackages; private final CharSequence[] mNotAllowShowEntryPackages; private final CharSequence[] mNotAllowShowSummaryPackages; private final MetricsFeatureProvider mMetricsFeatureProvider; private final Handler mHandler = new Handler(Looper.getMainLooper()); // Preference cache to avoid create new instance each time. @VisibleForTesting Loading @@ -111,6 +114,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll .getTextArray(R.array.allowlist_hide_summary_in_battery_usage); mNotAllowShowEntryPackages = context.getResources() .getTextArray(R.array.allowlist_hide_entry_in_battery_usage); mMetricsFeatureProvider = FeatureFactory.getFactory(mContext).getMetricsFeatureProvider(); if (lifecycle != null) { lifecycle.addObserver(this); } Loading @@ -127,6 +132,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll savedInstanceState.getBoolean(KEY_EXPAND_SYSTEM_INFO, mIsExpanded); Log.d(TAG, String.format("onCreate() slotIndex=%d isExpanded=%b", mTrapezoidIndex, mIsExpanded)); mMetricsFeatureProvider.action(mPrefContext, SettingsEnums.OPEN_BATTERY_USAGE); } @Override Loading Loading @@ -191,15 +197,22 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll final BatteryDiffEntry diffEntry = powerPref.getBatteryDiffEntry(); final BatteryHistEntry histEntry = diffEntry.mBatteryHistEntry; final String packageName = histEntry.mPackageName; final boolean isAppEntry = histEntry.isAppEntry(); // Checks whether the package is installed or not. boolean isValidPackage = true; if (histEntry.isAppEntry()) { if (isAppEntry) { if (mBatteryUtils == null) { mBatteryUtils = BatteryUtils.getInstance(mPrefContext); } isValidPackage = mBatteryUtils.getPackageUid(packageName) != BatteryUtils.UID_NULL; } mMetricsFeatureProvider.action( mPrefContext, isAppEntry ? SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM : SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM, packageName); Log.d(TAG, String.format("handleClick() label=%s key=%s isValid:%b\n%s", diffEntry.getAppLabel(), histEntry.getKey(), isValidPackage, histEntry)); if (isValidPackage) { Loading @@ -215,11 +228,20 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll public void onSelect(int trapezoidIndex) { Log.d(TAG, "onChartSelect:" + trapezoidIndex); refreshUi(trapezoidIndex, /*isForce=*/ false); mMetricsFeatureProvider.action( mPrefContext, trapezoidIndex == BatteryChartView.SELECTED_INDEX_ALL ? SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL : SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT); } @Override public void onExpand(boolean isExpanded) { mIsExpanded = isExpanded; mMetricsFeatureProvider.action( mPrefContext, SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM, isExpanded); refreshExpandUi(); } Loading
tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java +51 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.settings.SettingsEnums; import android.content.Context; import android.content.ContentValues; import android.content.pm.PackageManager; Loading @@ -43,6 +44,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import org.junit.Before; import org.junit.Test; Loading Loading @@ -82,12 +84,16 @@ public final class BatteryChartPreferenceControllerTest { @Mock private Resources mResources; private Context mContext; private FakeFeatureFactory mFeatureFactory; private BatteryDiffEntry mBatteryDiffEntry; private MetricsFeatureProvider mMetricsFeatureProvider; private BatteryChartPreferenceController mBatteryChartPreferenceController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mFeatureFactory = FakeFeatureFactory.setupForTest(); mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider; mContext = spy(RuntimeEnvironment.application); mBatteryChartPreferenceController = createController(); mBatteryChartPreferenceController.mPrefContext = mContext; Loading Loading @@ -331,9 +337,14 @@ public final class BatteryChartPreferenceControllerTest { } @Test public void testHandlePreferenceTreeClick_notPowerGaugePreference_returnFalse() { public void testHandlePreferenceTreeiClick_notPowerGaugePreference_returnFalse() { assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick(mAppListGroup)) .isFalse(); verify(mMetricsFeatureProvider, never()) .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM); verify(mMetricsFeatureProvider, never()) .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM); } @Test Loading @@ -343,6 +354,11 @@ public final class BatteryChartPreferenceControllerTest { assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick( mPowerGaugePreference)).isTrue(); verify(mMetricsFeatureProvider) .action( mContext, SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM, mBatteryHistEntry.mPackageName); } @Test Loading @@ -355,6 +371,11 @@ public final class BatteryChartPreferenceControllerTest { assertThat(mBatteryChartPreferenceController.handlePreferenceTreeClick( mPowerGaugePreference)).isFalse(); verify(mMetricsFeatureProvider) .action( mContext, SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM, mBatteryHistEntry.mPackageName); } @Test Loading Loading @@ -474,6 +495,11 @@ public final class BatteryChartPreferenceControllerTest { verify(mAppListGroup).addPreference(captor.capture()); // Verifies the added preference. assertThat(captor.getValue().getKey()).isEqualTo(PREF_KEY); verify(mMetricsFeatureProvider) .action( mContext, SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM, true /*isExpanded*/); } @Test Loading @@ -489,6 +515,28 @@ public final class BatteryChartPreferenceControllerTest { verify(mAppListGroup).findPreference(PREF_KEY); verify(mAppListGroup).removePreference(mPowerGaugePreference); assertThat(mBatteryChartPreferenceController.mPreferenceCache).hasSize(1); verify(mMetricsFeatureProvider) .action( mContext, SettingsEnums.ACTION_BATTERY_USAGE_EXPAND_ITEM, false /*isExpanded*/); } @Test public void testOnSelect_selectSpecificTimeSlot_logMetric() { mBatteryChartPreferenceController.onSelect(1 /*slot index*/); verify(mMetricsFeatureProvider) .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_TIME_SLOT); } @Test public void testOnSelect_selectAll_logMetric() { mBatteryChartPreferenceController.onSelect( BatteryChartView.SELECTED_INDEX_ALL /*slot index*/); verify(mMetricsFeatureProvider) .action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOW_ALL); } @Test Loading Loading @@ -610,6 +658,8 @@ public final class BatteryChartPreferenceControllerTest { assertThat(mBatteryChartPreferenceController.mTrapezoidIndex) .isEqualTo(expectedIndex); assertThat(mBatteryChartPreferenceController.mIsExpanded).isTrue(); verify(mMetricsFeatureProvider) .action(mContext, SettingsEnums.OPEN_BATTERY_USAGE); } @Test Loading