Add logging for battery tip

When it is triggered, we log the type of battery tip.

Bug: 3662211
Test: RunSettingsRoboTests
Change-Id: Iab1034008796b6b21eee53297b2e574199693f7e
This commit is contained in:
jackqdyulei
2018-02-26 17:20:19 -08:00
parent c3bc3bc690
commit 0e06b4e2a1
2 changed files with 23 additions and 1 deletions

View File

@@ -23,12 +23,15 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction; import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip; 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.HashMap;
import java.util.List; import java.util.List;
@@ -45,6 +48,7 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
private List<BatteryTip> mBatteryTips; private List<BatteryTip> mBatteryTips;
private Map<String, BatteryTip> mBatteryTipMap; private Map<String, BatteryTip> mBatteryTipMap;
private SettingsActivity mSettingsActivity; private SettingsActivity mSettingsActivity;
private MetricsFeatureProvider mMetricsFeatureProvider;
@VisibleForTesting @VisibleForTesting
PreferenceGroup mPreferenceGroup; PreferenceGroup mPreferenceGroup;
@VisibleForTesting @VisibleForTesting
@@ -63,6 +67,7 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
mBatteryTipMap = new HashMap<>(); mBatteryTipMap = new HashMap<>();
mFragment = fragment; mFragment = fragment;
mSettingsActivity = settingsActivity; mSettingsActivity = settingsActivity;
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
} }
@Override @Override
@@ -99,6 +104,9 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
final Preference preference = batteryTip.buildPreference(mPrefContext); final Preference preference = batteryTip.buildPreference(mPrefContext);
mBatteryTipMap.put(preference.getKey(), batteryTip); mBatteryTipMap.put(preference.getKey(), batteryTip);
mPreferenceGroup.addPreference(preference); mPreferenceGroup.addPreference(preference);
mMetricsFeatureProvider.action(mContext,
MetricsProto.MetricsEvent.ACTION_BATTERY_TIP_SHOWN,
batteryTip.getType());
break; break;
} }
} }

View File

@@ -21,6 +21,7 @@ import static com.android.settings.fuelgauge.batterytip.tips.BatteryTip.TipType
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; 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.PreferenceManager;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip; import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before; import org.junit.Before;
@@ -72,6 +75,7 @@ public class BatteryTipPreferenceControllerTest {
private List<BatteryTip> mOldBatteryTips; private List<BatteryTip> mOldBatteryTips;
private List<BatteryTip> mNewBatteryTips; private List<BatteryTip> mNewBatteryTips;
private Preference mPreference; private Preference mPreference;
private FakeFeatureFactory mFeatureFactory;
@Before @Before
public void setUp() { public void setUp() {
@@ -84,6 +88,7 @@ public class BatteryTipPreferenceControllerTest {
doReturn(mPreferenceGroup).when(mPreferenceScreen).findPreference(KEY_PREF); doReturn(mPreferenceGroup).when(mPreferenceScreen).findPreference(KEY_PREF);
mPreference = new Preference(mContext); mPreference = new Preference(mContext);
mPreference.setKey(KEY_TIP); mPreference.setKey(KEY_TIP);
mFeatureFactory = FakeFeatureFactory.setupForTest();
mOldBatteryTips = new ArrayList<>(); mOldBatteryTips = new ArrayList<>();
mOldBatteryTips.add(new SummaryTip(BatteryTip.StateType.NEW)); mOldBatteryTips.add(new SummaryTip(BatteryTip.StateType.NEW));
@@ -104,7 +109,7 @@ public class BatteryTipPreferenceControllerTest {
} }
@Test @Test
public void updateBatteryTips_updateTwice_firstShowSummaryTipThenRemoveIt() { public void testUpdateBatteryTips_updateTwice_firstShowSummaryTipThenRemoveIt() {
// Display summary tip because its state is new // Display summary tip because its state is new
mBatteryTipPreferenceController.updateBatteryTips(mOldBatteryTips); mBatteryTipPreferenceController.updateBatteryTips(mOldBatteryTips);
assertOnlyContainsSummaryTip(mPreferenceGroup); assertOnlyContainsSummaryTip(mPreferenceGroup);
@@ -114,6 +119,15 @@ public class BatteryTipPreferenceControllerTest {
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0); 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 @Test
public void testHandlePreferenceTreeClick_noDialog_invokeCallback() { public void testHandlePreferenceTreeClick_noDialog_invokeCallback() {
doReturn(SMART_BATTERY_MANAGER).when(mBatteryTip).getType(); doReturn(SMART_BATTERY_MANAGER).when(mBatteryTip).getType();