diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java index db273c0fde0..2702bb6cb32 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java @@ -23,12 +23,15 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceScreen; +import com.android.internal.logging.nano.MetricsProto; import com.android.settings.SettingsActivity; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.SummaryTip; +import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import java.util.HashMap; import java.util.List; @@ -45,6 +48,7 @@ public class BatteryTipPreferenceController extends BasePreferenceController { private List mBatteryTips; private Map mBatteryTipMap; private SettingsActivity mSettingsActivity; + private MetricsFeatureProvider mMetricsFeatureProvider; @VisibleForTesting PreferenceGroup mPreferenceGroup; @VisibleForTesting @@ -63,6 +67,7 @@ public class BatteryTipPreferenceController extends BasePreferenceController { mBatteryTipMap = new HashMap<>(); mFragment = fragment; mSettingsActivity = settingsActivity; + mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); } @Override @@ -99,6 +104,9 @@ public class BatteryTipPreferenceController extends BasePreferenceController { final Preference preference = batteryTip.buildPreference(mPrefContext); mBatteryTipMap.put(preference.getKey(), batteryTip); mPreferenceGroup.addPreference(preference); + mMetricsFeatureProvider.action(mContext, + MetricsProto.MetricsEvent.ACTION_BATTERY_TIP_SHOWN, + batteryTip.getType()); break; } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java index b4149c11e07..66be3e2a943 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java @@ -21,6 +21,7 @@ import static com.android.settings.fuelgauge.batterytip.tips.BatteryTip.TipType import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -32,10 +33,12 @@ import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceScreen; +import com.android.internal.logging.nano.MetricsProto; import com.android.settings.SettingsActivity; import com.android.settings.TestConfig; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.SummaryTip; +import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; @@ -72,6 +75,7 @@ public class BatteryTipPreferenceControllerTest { private List mOldBatteryTips; private List mNewBatteryTips; private Preference mPreference; + private FakeFeatureFactory mFeatureFactory; @Before public void setUp() { @@ -84,6 +88,7 @@ public class BatteryTipPreferenceControllerTest { doReturn(mPreferenceGroup).when(mPreferenceScreen).findPreference(KEY_PREF); mPreference = new Preference(mContext); mPreference.setKey(KEY_TIP); + mFeatureFactory = FakeFeatureFactory.setupForTest(); mOldBatteryTips = new ArrayList<>(); mOldBatteryTips.add(new SummaryTip(BatteryTip.StateType.NEW)); @@ -104,7 +109,7 @@ public class BatteryTipPreferenceControllerTest { } @Test - public void updateBatteryTips_updateTwice_firstShowSummaryTipThenRemoveIt() { + public void testUpdateBatteryTips_updateTwice_firstShowSummaryTipThenRemoveIt() { // Display summary tip because its state is new mBatteryTipPreferenceController.updateBatteryTips(mOldBatteryTips); assertOnlyContainsSummaryTip(mPreferenceGroup); @@ -114,6 +119,15 @@ public class BatteryTipPreferenceControllerTest { assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0); } + @Test + public void testUpdateBatteryTips_logBatteryTip() { + mBatteryTipPreferenceController.updateBatteryTips(mOldBatteryTips); + + verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class), + eq(MetricsProto.MetricsEvent.ACTION_BATTERY_TIP_SHOWN), + eq(BatteryTip.TipType.SUMMARY)); + } + @Test public void testHandlePreferenceTreeClick_noDialog_invokeCallback() { doReturn(SMART_BATTERY_MANAGER).when(mBatteryTip).getType();