From 040c21bcb50bbaf550fa1473ee062cfc75b5e30b Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Thu, 1 Jun 2017 14:33:19 -0700 Subject: [PATCH] Add strings in battery usage page Add prefix: 1. "Used for" for foreground time 2. "Active for" for background time Bug: 37162357 Test: RunSettingsRoboTests Change-Id: Ifd4762640bd5ad98ce64ab174f7a7f44dbb1aa27 --- res/values/strings.xml | 2 + .../fuelgauge/AdvancedPowerUsageDetail.java | 42 +++++++++++------- .../AdvancedPowerUsageDetailTest.java | 44 +++++++++++++++++-- 3 files changed, 70 insertions(+), 18 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 051bd68b001..473a89b2826 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4776,6 +4776,8 @@ Used for ^1 + + Active for ^1 Screen usage ^1 diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java index 8dbb183fbb1..72dc835a220 100644 --- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java @@ -28,6 +28,7 @@ import android.os.UserManager; import android.support.annotation.VisibleForTesting; import android.support.v14.preference.PreferenceFragment; import android.support.v7.preference.Preference; +import android.text.TextUtils; import android.view.View; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -86,9 +87,12 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements @VisibleForTesting BatteryUtils mBatteryUtils; - private Preference mForegroundPreference; - private Preference mBackgroundPreference; - private Preference mPowerUsagePreference; + @VisibleForTesting + Preference mForegroundPreference; + @VisibleForTesting + Preference mBackgroundPreference; + @VisibleForTesting + Preference mPowerUsagePreference; private AppButtonsPreferenceController mAppButtonsPreferenceController; private DevicePolicyManagerWrapper mDpm; @@ -174,18 +178,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements super.onResume(); initHeader(); - - final Bundle bundle = getArguments(); - final Context context = getContext(); - - final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME); - final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME); - final String usagePercent = bundle.getString(EXTRA_POWER_USAGE_PERCENT); - final int powerMah = bundle.getInt(EXTRA_POWER_USAGE_AMOUNT); - mForegroundPreference.setSummary(Utils.formatElapsedTime(context, foregroundTimeMs, false)); - mBackgroundPreference.setSummary(Utils.formatElapsedTime(context, backgroundTimeMs, false)); - mPowerUsagePreference.setSummary( - getString(R.string.battery_detail_power_percentage, usagePercent, powerMah)); + initPreference(); } @VisibleForTesting @@ -222,6 +215,25 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements controller.done(context, true /* rebindActions */); } + @VisibleForTesting + void initPreference() { + final Bundle bundle = getArguments(); + final Context context = getContext(); + + final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME); + final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME); + final String usagePercent = bundle.getString(EXTRA_POWER_USAGE_PERCENT); + final int powerMah = bundle.getInt(EXTRA_POWER_USAGE_AMOUNT); + mForegroundPreference.setSummary( + TextUtils.expandTemplate(getText(R.string.battery_used_for), + Utils.formatElapsedTime(context, foregroundTimeMs, false))); + mBackgroundPreference.setSummary( + TextUtils.expandTemplate(getText(R.string.battery_active_for), + Utils.formatElapsedTime(context, backgroundTimeMs, false))); + mPowerUsagePreference.setSummary( + getString(R.string.battery_detail_power_percentage, usagePercent, powerMah)); + } + @Override public int getMetricsCategory() { return MetricsEvent.FUELGAUGE_POWER_USAGE_DETAIL; diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java index cb91d412f1f..3982f1bf41a 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java @@ -37,6 +37,7 @@ import android.graphics.drawable.Drawable; import android.os.BatteryStats; import android.os.Bundle; import android.os.UserHandle; +import android.support.v7.preference.Preference; import android.support.v7.widget.RecyclerView; import com.android.internal.os.BatterySipper; @@ -45,6 +46,7 @@ import com.android.settings.SettingsActivity; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.applications.LayoutPreference; +import com.android.settings.R; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.widget.EntityHeaderController; @@ -73,9 +75,10 @@ public class AdvancedPowerUsageDetailTest { private static final String APP_LABEL = "app label"; private static final String SUMMARY = "summary"; private static final String[] PACKAGE_NAME = {"com.android.app"}; - private static final String USAGE_PERCENT = "16"; + private static final String USAGE_PERCENT = "16%"; private static final int ICON_ID = 123; private static final int UID = 1; + private static final int POWER_MAH = 150; private static final long BACKGROUND_TIME_US = 100 * 1000; private static final long FOREGROUND_TIME_US = 200 * 1000; private static final long BACKGROUND_TIME_MS = 100; @@ -83,8 +86,6 @@ public class AdvancedPowerUsageDetailTest { private static final long PHONE_FOREGROUND_TIME_MS = 250 * 1000; private static final long PHONE_BACKGROUND_TIME_MS = 0; - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private Context mContext; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Activity mActivity; @Mock @@ -107,6 +108,10 @@ public class AdvancedPowerUsageDetailTest { private BatteryStats.Uid mUid; @Mock private PackageManager mPackageManager; + private Context mContext; + private Preference mForegroundPreference; + private Preference mBackgroundPreference; + private Preference mPowerUsagePreference; private AdvancedPowerUsageDetail mFragment; private FakeFeatureFactory mFeatureFactory; private SettingsActivity mTestActivity; @@ -114,6 +119,8 @@ public class AdvancedPowerUsageDetailTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); + + mContext = spy(RuntimeEnvironment.application); FakeFeatureFactory.setupForTest(mContext); mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); @@ -170,6 +177,13 @@ public class AdvancedPowerUsageDetailTest { doAnswer(callable).when(mTestActivity).startPreferencePanelAsUser( nullable(Fragment.class), nullable(String.class), captor.capture(), anyInt(), nullable(CharSequence.class), nullable(UserHandle.class)); + + mForegroundPreference = new Preference(mContext); + mBackgroundPreference = new Preference(mContext); + mPowerUsagePreference = new Preference(mContext); + mFragment.mForegroundPreference = mForegroundPreference; + mFragment.mBackgroundPreference = mBackgroundPreference; + mFragment.mPowerUsagePreference = mPowerUsagePreference; } @After @@ -305,4 +319,28 @@ public class AdvancedPowerUsageDetailTest { "0%"); } + @Test + public void testInitPreference_hasCorrectSummary() { + Bundle bundle = new Bundle(4); + bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, BACKGROUND_TIME_MS); + bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, FOREGROUND_TIME_MS); + bundle.putString(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_PERCENT, USAGE_PERCENT); + bundle.putInt(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_AMOUNT, POWER_MAH); + doReturn(bundle).when(mFragment).getArguments(); + + doReturn(mContext.getText(R.string.battery_used_for)).when(mFragment).getText( + R.string.battery_used_for); + doReturn(mContext.getText(R.string.battery_active_for)).when(mFragment).getText( + R.string.battery_active_for); + doReturn(mContext.getString(R.string.battery_detail_power_percentage, USAGE_PERCENT, + POWER_MAH)).when(mFragment) + .getString(R.string.battery_detail_power_percentage, USAGE_PERCENT, POWER_MAH); + + mFragment.initPreference(); + + assertThat(mForegroundPreference.getSummary().toString()).isEqualTo("Used for 0m"); + assertThat(mBackgroundPreference.getSummary().toString()).isEqualTo("Active for 0m"); + assertThat(mPowerUsagePreference.getSummary()).isEqualTo("16% of total app usage (150mAh)"); + } + }