Merge "Add extra log for battery tip." into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9fc80c5064
@@ -104,9 +104,7 @@ 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,
|
batteryTip.log(mContext, mMetricsFeatureProvider);
|
||||||
MetricsProto.MetricsEvent.ACTION_BATTERY_TIP_SHOWN,
|
|
||||||
batteryTip.getType());
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,6 +25,8 @@ import android.support.annotation.VisibleForTesting;
|
|||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.util.SparseIntArray;
|
import android.util.SparseIntArray;
|
||||||
|
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
@@ -123,6 +125,11 @@ public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable {
|
|||||||
*/
|
*/
|
||||||
public abstract void updateState(BatteryTip tip);
|
public abstract void updateState(BatteryTip tip);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log the battery tip
|
||||||
|
*/
|
||||||
|
public abstract void log(Context context, MetricsFeatureProvider metricsFeatureProvider);
|
||||||
|
|
||||||
public Preference buildPreference(Context context) {
|
public Preference buildPreference(Context context) {
|
||||||
Preference preference = new Preference(context);
|
Preference preference = new Preference(context);
|
||||||
|
|
||||||
|
@@ -19,7 +19,9 @@ package com.android.settings.fuelgauge.batterytip.tips;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tip to show early warning if battery couldn't make to usual charging time
|
* Tip to show early warning if battery couldn't make to usual charging time
|
||||||
@@ -75,6 +77,12 @@ public class EarlyWarningTip extends BatteryTip {
|
|||||||
mPowerSaveModeOn = earlyWarningTip.mPowerSaveModeOn;
|
mPowerSaveModeOn = earlyWarningTip.mPowerSaveModeOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
|
||||||
|
metricsFeatureProvider.action(context, MetricsProto.MetricsEvent.ACTION_EARLY_WARNING_TIP,
|
||||||
|
mState);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
super.writeToParcel(dest, flags);
|
super.writeToParcel(dest, flags);
|
||||||
|
@@ -21,9 +21,11 @@ import android.os.Parcel;
|
|||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
||||||
|
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.utils.StringUtil;
|
import com.android.settingslib.utils.StringUtil;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -78,6 +80,18 @@ public class HighUsageTip extends BatteryTip {
|
|||||||
mState = tip.mState;
|
mState = tip.mState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
|
||||||
|
metricsFeatureProvider.action(context, MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP,
|
||||||
|
mState);
|
||||||
|
for (int i = 0, size = mHighUsageAppList.size(); i < size; i++) {
|
||||||
|
final AppInfo appInfo = mHighUsageAppList.get(i);
|
||||||
|
metricsFeatureProvider.action(context,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP_LIST,
|
||||||
|
appInfo.packageName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public long getScreenTimeMs() {
|
public long getScreenTimeMs() {
|
||||||
return mScreenTimeMs;
|
return mScreenTimeMs;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,9 @@ import android.content.Context;
|
|||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tip to show current battery life is short
|
* Tip to show current battery life is short
|
||||||
@@ -55,6 +57,12 @@ public class LowBatteryTip extends BatteryTip {
|
|||||||
mState = tip.mState;
|
mState = tip.mState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
|
||||||
|
metricsFeatureProvider.action(context, MetricsProto.MetricsEvent.ACTION_LOW_BATTERY_TIP,
|
||||||
|
mState);
|
||||||
|
}
|
||||||
|
|
||||||
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
|
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
|
||||||
public BatteryTip createFromParcel(Parcel in) {
|
public BatteryTip createFromParcel(Parcel in) {
|
||||||
return new LowBatteryTip(in);
|
return new LowBatteryTip(in);
|
||||||
|
@@ -19,11 +19,14 @@ package com.android.settings.fuelgauge.batterytip.tips;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
|
import android.util.Pair;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -93,6 +96,24 @@ public class RestrictAppTip extends BatteryTip {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
|
||||||
|
metricsFeatureProvider.action(context, MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP,
|
||||||
|
mState);
|
||||||
|
if (mState == StateType.NEW) {
|
||||||
|
for (int i = 0, size = mRestrictAppList.size(); i < size; i++) {
|
||||||
|
final AppInfo appInfo = mRestrictAppList.get(i);
|
||||||
|
for (Integer anomalyType : appInfo.anomalyTypes) {
|
||||||
|
metricsFeatureProvider.action(context,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST,
|
||||||
|
appInfo.packageName,
|
||||||
|
Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, anomalyType));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public List<AppInfo> getRestrictAppList() {
|
public List<AppInfo> getRestrictAppList() {
|
||||||
return mRestrictAppList;
|
return mRestrictAppList;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,9 @@ import android.content.Context;
|
|||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tip to suggest turn on smart battery if it is not on
|
* Tip to suggest turn on smart battery if it is not on
|
||||||
@@ -55,6 +57,12 @@ public class SmartBatteryTip extends BatteryTip {
|
|||||||
mState = tip.mState;
|
mState = tip.mState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
|
||||||
|
metricsFeatureProvider.action(context, MetricsProto.MetricsEvent.ACTION_SMART_BATTERY_TIP,
|
||||||
|
mState);
|
||||||
|
}
|
||||||
|
|
||||||
public static final Creator CREATOR = new Creator() {
|
public static final Creator CREATOR = new Creator() {
|
||||||
public BatteryTip createFromParcel(Parcel in) {
|
public BatteryTip createFromParcel(Parcel in) {
|
||||||
return new SmartBatteryTip(in);
|
return new SmartBatteryTip(in);
|
||||||
|
@@ -20,7 +20,9 @@ import android.content.Context;
|
|||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tip to show general summary about battery life
|
* Tip to show general summary about battery life
|
||||||
@@ -55,6 +57,12 @@ public class SummaryTip extends BatteryTip {
|
|||||||
mState = tip.mState;
|
mState = tip.mState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
|
||||||
|
metricsFeatureProvider.action(context, MetricsProto.MetricsEvent.ACTION_SUMMARY_TIP,
|
||||||
|
mState);
|
||||||
|
}
|
||||||
|
|
||||||
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
|
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
|
||||||
public BatteryTip createFromParcel(Parcel in) {
|
public BatteryTip createFromParcel(Parcel in) {
|
||||||
return new SummaryTip(in);
|
return new SummaryTip(in);
|
||||||
|
@@ -21,6 +21,7 @@ import android.os.Parcel;
|
|||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tip to suggest user to remove app restriction. This is the empty tip and it is only used in
|
* Tip to suggest user to remove app restriction. This is the empty tip and it is only used in
|
||||||
@@ -66,6 +67,11 @@ public class UnrestrictAppTip extends BatteryTip {
|
|||||||
mState = tip.mState;
|
mState = tip.mState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
super.writeToParcel(dest, flags);
|
super.writeToParcel(dest, flags);
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.fuelgauge.batterytip;
|
package com.android.settings.fuelgauge.batterytip;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.robolectric.Shadows.shadowOf;
|
import static org.robolectric.Shadows.shadowOf;
|
||||||
|
|
||||||
@@ -29,7 +30,6 @@ import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
|||||||
import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip;
|
import com.android.settings.fuelgauge.batterytip.tips.HighUsageTip;
|
||||||
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
|
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
|
||||||
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
|
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.ShadowUtils;
|
import com.android.settings.testutils.shadow.ShadowUtils;
|
||||||
|
|
||||||
@@ -67,7 +67,6 @@ public class BatteryTipDialogFragmentTest {
|
|||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
FakeFeatureFactory.setupForTest();
|
|
||||||
|
|
||||||
List<AppInfo> highUsageTips = new ArrayList<>();
|
List<AppInfo> highUsageTips = new ArrayList<>();
|
||||||
final AppInfo appInfo = new AppInfo.Builder()
|
final AppInfo appInfo = new AppInfo.Builder()
|
||||||
|
@@ -119,9 +119,9 @@ public class BatteryTipPreferenceControllerTest {
|
|||||||
public void testUpdateBatteryTips_logBatteryTip() {
|
public void testUpdateBatteryTips_logBatteryTip() {
|
||||||
mBatteryTipPreferenceController.updateBatteryTips(mOldBatteryTips);
|
mBatteryTipPreferenceController.updateBatteryTips(mOldBatteryTips);
|
||||||
|
|
||||||
verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
|
verify(mFeatureFactory.metricsFeatureProvider).action(mContext,
|
||||||
eq(MetricsProto.MetricsEvent.ACTION_BATTERY_TIP_SHOWN),
|
MetricsProto.MetricsEvent.ACTION_SUMMARY_TIP,
|
||||||
eq(BatteryTip.TipType.SUMMARY));
|
BatteryTip.StateType.NEW);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -25,6 +25,7 @@ import android.support.v7.preference.Preference;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -122,6 +123,11 @@ public class BatteryTipTest {
|
|||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void log(Context context, MetricsFeatureProvider metricsFeatureProvider) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
public final Parcelable.Creator CREATOR = new Parcelable.Creator() {
|
public final Parcelable.Creator CREATOR = new Parcelable.Creator() {
|
||||||
public BatteryTip createFromParcel(Parcel in) {
|
public BatteryTip createFromParcel(Parcel in) {
|
||||||
return new TestBatteryTip(in);
|
return new TestBatteryTip(in);
|
||||||
|
@@ -17,25 +17,35 @@ package com.android.settings.fuelgauge.batterytip.tips;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
public class EarlyWarningTipTest {
|
public class EarlyWarningTipTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private EarlyWarningTip mEarlyWarningTip;
|
private EarlyWarningTip mEarlyWarningTip;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mEarlyWarningTip =
|
mEarlyWarningTip =
|
||||||
new EarlyWarningTip(BatteryTip.StateType.NEW, false /* powerSaveModeOn */);
|
new EarlyWarningTip(BatteryTip.StateType.NEW, false /* powerSaveModeOn */);
|
||||||
@@ -115,4 +125,12 @@ public class EarlyWarningTipTest {
|
|||||||
|
|
||||||
assertThat(earlyWarningTip.getState()).isEqualTo(BatteryTip.StateType.INVISIBLE);
|
assertThat(earlyWarningTip.getState()).isEqualTo(BatteryTip.StateType.INVISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLog() {
|
||||||
|
mEarlyWarningTip.log(mContext, mMetricsFeatureProvider);
|
||||||
|
|
||||||
|
verify(mMetricsFeatureProvider).action(mContext,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_EARLY_WARNING_TIP, BatteryTip.StateType.NEW);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,16 +17,22 @@ package com.android.settings.fuelgauge.batterytip.tips;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.text.format.DateUtils;
|
import android.text.format.DateUtils;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -38,14 +44,17 @@ public class HighUsageTipTest {
|
|||||||
private static final String PACKAGE_NAME = "com.android.app";
|
private static final String PACKAGE_NAME = "com.android.app";
|
||||||
private static final long SCREEN_TIME = 30 * DateUtils.MINUTE_IN_MILLIS;
|
private static final long SCREEN_TIME = 30 * DateUtils.MINUTE_IN_MILLIS;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private HighUsageTip mBatteryTip;
|
private HighUsageTip mBatteryTip;
|
||||||
private List<AppInfo> mUsageAppList;
|
private List<AppInfo> mUsageAppList;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = RuntimeEnvironment.application;
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
|
mContext = RuntimeEnvironment.application;
|
||||||
mUsageAppList = new ArrayList<>();
|
mUsageAppList = new ArrayList<>();
|
||||||
mUsageAppList.add(new AppInfo.Builder()
|
mUsageAppList.add(new AppInfo.Builder()
|
||||||
.setPackageName(PACKAGE_NAME)
|
.setPackageName(PACKAGE_NAME)
|
||||||
@@ -80,4 +89,15 @@ public class HighUsageTipTest {
|
|||||||
"type=2 state=0 { packageName=com.android.app,anomalyTypes={},screenTime=1800000 "
|
"type=2 state=0 { packageName=com.android.app,anomalyTypes={},screenTime=1800000 "
|
||||||
+ "}");
|
+ "}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLog_logAppInfo() {
|
||||||
|
mBatteryTip.log(mContext, mMetricsFeatureProvider);
|
||||||
|
verify(mMetricsFeatureProvider).action(mContext,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP, BatteryTip.StateType.NEW);
|
||||||
|
|
||||||
|
verify(mMetricsFeatureProvider).action(mContext,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_HIGH_USAGE_TIP_LIST,
|
||||||
|
PACKAGE_NAME);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,16 +16,25 @@
|
|||||||
package com.android.settings.fuelgauge.batterytip.tips;
|
package com.android.settings.fuelgauge.batterytip.tips;
|
||||||
|
|
||||||
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.anyInt;
|
||||||
|
import static org.mockito.Matchers.anyString;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
|
import android.util.Pair;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
import com.android.settings.fuelgauge.batterytip.AppInfo;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -53,6 +62,8 @@ public class RestrictAppTipTest {
|
|||||||
private ApplicationInfo mApplicationInfo;
|
private ApplicationInfo mApplicationInfo;
|
||||||
@Mock
|
@Mock
|
||||||
private PackageManager mPackageManager;
|
private PackageManager mPackageManager;
|
||||||
|
@Mock
|
||||||
|
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
@@ -132,4 +143,30 @@ public class RestrictAppTipTest {
|
|||||||
assertThat(mNewBatteryTip.toString()).isEqualTo(
|
assertThat(mNewBatteryTip.toString()).isEqualTo(
|
||||||
"type=1 state=0 { packageName=com.android.app,anomalyTypes={0, 1},screenTime=0 }");
|
"type=1 state=0 { packageName=com.android.app,anomalyTypes={0, 1},screenTime=0 }");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLog_stateNew_logAppInfo() {
|
||||||
|
mNewBatteryTip.log(mContext, mMetricsFeatureProvider);
|
||||||
|
|
||||||
|
verify(mMetricsFeatureProvider).action(mContext,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP, BatteryTip.StateType.NEW);
|
||||||
|
verify(mMetricsFeatureProvider).action(mContext,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST,
|
||||||
|
PACKAGE_NAME,
|
||||||
|
Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, ANOMALY_WAKEUP));
|
||||||
|
verify(mMetricsFeatureProvider).action(mContext,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST,
|
||||||
|
PACKAGE_NAME,
|
||||||
|
Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, ANOMALY_WAKELOCK));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLog_stateHandled_doNotLogAppInfo() {
|
||||||
|
mHandledBatteryTip.log(mContext, mMetricsFeatureProvider);
|
||||||
|
|
||||||
|
verify(mMetricsFeatureProvider).action(mContext,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP, BatteryTip.StateType.HANDLED);
|
||||||
|
verify(mMetricsFeatureProvider, never()).action(any(), anyInt(), anyString(), any());
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package com.android.settings.fuelgauge.batterytip.tips;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
|
||||||
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
|
public class SmartBatteryTipTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
|
private Context mContext;
|
||||||
|
private SmartBatteryTip mSmartBatteryTip;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
|
||||||
|
mContext = RuntimeEnvironment.application;
|
||||||
|
mSmartBatteryTip = new SmartBatteryTip(BatteryTip.StateType.NEW);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLog() {
|
||||||
|
mSmartBatteryTip.log(mContext, mMetricsFeatureProvider);
|
||||||
|
|
||||||
|
verify(mMetricsFeatureProvider).action(mContext,
|
||||||
|
MetricsProto.MetricsEvent.ACTION_SMART_BATTERY_TIP, BatteryTip.StateType.NEW);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user