From 076b67476431319dcab65f7b4e41f7729354aba0 Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Tue, 24 Jul 2018 10:49:05 -0700 Subject: [PATCH] PowerUsageSummary: move controllers to xml Also change the following controllers to have standard constructor 1. BatteryHeaderPreferenceController 2. BatteryTipPreferenceController Change-Id: I2e68082295eb8ef18de9fef9483a10b070c77a47 Fixes: 111131567 Test: robotest --- res/xml/power_usage_summary.xml | 11 ++++-- .../BatteryPercentagePreferenceController.java | 22 ++++------- .../BatteryHeaderPreferenceController.java | 43 +++++++++++----------- .../settings/fuelgauge/PowerUsageSummary.java | 37 ++++++++----------- .../batterytip/BatteryTipPreferenceController.java | 23 +++++++----- ...t_sharing_pref_controllers_with_search_provider | 1 - .../BatteryPercentagePreferenceControllerTest.java | 4 +- .../BatteryHeaderPreferenceControllerTest.java | 15 +++++++- .../settings/fuelgauge/PowerUsageSummaryTest.java | 15 -------- .../BatteryTipPreferenceControllerTest.java | 26 ++++++++++--- 10 files changed, 103 insertions(+), 94 deletions(-) diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml index 4ff67b7650..b4db4ed155 100644 --- a/res/xml/power_usage_summary.xml +++ b/res/xml/power_usage_summary.xml @@ -23,12 +23,16 @@ + android:layout="@layout/battery_header" + settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" /> + android:title="@string/summary_placeholder" + android:layout="@layout/preference_category_no_label" + settings:controller="com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController" /> + android:summary="@string/battery_percentage_description" + settings:controller="com.android.settings.display.BatteryPercentagePreferenceController" /> createPreferenceControllers(Context context) { - final Lifecycle lifecycle = getSettingsLifecycle(); - final SettingsActivity activity = (SettingsActivity) getActivity(); - final List controllers = new ArrayList<>(); - mBatteryHeaderPreferenceController = new BatteryHeaderPreferenceController( - context, activity, this /* host */, lifecycle); - controllers.add(mBatteryHeaderPreferenceController); - mBatteryTipPreferenceController = new BatteryTipPreferenceController(context, - KEY_BATTERY_TIP, (SettingsActivity) getActivity(), this /* fragment */, this /* - BatteryTipListener */); - controllers.add(mBatteryTipPreferenceController); - controllers.add(new BatteryPercentagePreferenceController(context)); - return controllers; - } - - @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { if (DEBUG) { menu.add(Menu.NONE, MENU_STATS_TYPE, Menu.NONE, R.string.menu_stats_total) diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java index 0a9a4c7525..158ffd4738 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java @@ -59,24 +59,27 @@ public class BatteryTipPreferenceController extends BasePreferenceController { InstrumentedPreferenceFragment mFragment; public BatteryTipPreferenceController(Context context, String preferenceKey) { - this(context, preferenceKey, null, null, null); - } - - public BatteryTipPreferenceController(Context context, String preferenceKey, - SettingsActivity settingsActivity, InstrumentedPreferenceFragment fragment, - BatteryTipListener batteryTipListener) { super(context, preferenceKey); - mBatteryTipListener = batteryTipListener; mBatteryTipMap = new HashMap<>(); - mFragment = fragment; - mSettingsActivity = settingsActivity; mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); mNeedUpdate = true; } + public void setActivity(SettingsActivity activity) { + mSettingsActivity = activity; + } + + public void setFragment(InstrumentedPreferenceFragment fragment) { + mFragment = fragment; + } + + public void setBatteryTipListener(BatteryTipListener lsn) { + mBatteryTipListener = lsn; + } + @Override public int getAvailabilityStatus() { - return AVAILABLE; + return AVAILABLE_UNSEARCHABLE; } @Override diff --git a/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider b/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider index b3290725c9..e69de29bb2 100644 --- a/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider +++ b/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider @@ -1 +0,0 @@ -com.android.settings.fuelgauge.PowerUsageSummary diff --git a/tests/robotests/src/com/android/settings/display/BatteryPercentagePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/BatteryPercentagePreferenceControllerTest.java index 673abb0e93..140fc5cb22 100644 --- a/tests/robotests/src/com/android/settings/display/BatteryPercentagePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/BatteryPercentagePreferenceControllerTest.java @@ -32,13 +32,15 @@ import org.robolectric.RuntimeEnvironment; @RunWith(SettingsRobolectricTestRunner.class) public class BatteryPercentagePreferenceControllerTest { + private static final String PREF_KEY = "battery_percentage"; + private Context mContext; private BatteryPercentagePreferenceController mController; @Before public void setup() { mContext = RuntimeEnvironment.application; - mController = new BatteryPercentagePreferenceController(mContext); + mController = new BatteryPercentagePreferenceController(mContext, PREF_KEY); } private int getPercentageSetting() { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java index 91cb078d54..337b950fe4 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceControllerTest.java @@ -36,6 +36,7 @@ import android.widget.TextView; import com.android.settings.R; import com.android.settings.applications.LayoutPreference; +import com.android.settings.core.BasePreferenceController; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl; @@ -68,6 +69,7 @@ import androidx.recyclerview.widget.RecyclerView; }) public class BatteryHeaderPreferenceControllerTest { + private static final String PREF_KEY = "battery_header"; private static final int BATTERY_LEVEL = 60; private static final String TIME_LEFT = "2h30min"; private static final String BATTERY_STATUS = "Charging"; @@ -121,8 +123,11 @@ public class BatteryHeaderPreferenceControllerTest { mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); - mController = new BatteryHeaderPreferenceController( - mContext, mActivity, mPreferenceFragment, mLifecycle); + mController = new BatteryHeaderPreferenceController(mContext, PREF_KEY); + mLifecycle.addObserver(mController); + mController.setActivity(mActivity); + mController.setFragment(mPreferenceFragment); + mController.setLifecycle(mLifecycle); mController.mBatteryMeterView = mBatteryMeterView; mController.mBatteryPercentText = mBatteryPercentText; mController.mSummary1 = mSummary; @@ -207,4 +212,10 @@ public class BatteryHeaderPreferenceControllerTest { assertThat(mBatteryMeterView.getPowerSave()).isEqualTo(value); } } + + @Test + public void getAvailabilityStatus_returnAvailableUnsearchable() { + assertThat(mController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.AVAILABLE_UNSEARCHABLE); + } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java index 97e272bf07..68d9994cf9 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java @@ -223,21 +223,6 @@ public class PowerUsageSummaryTest { } @Test - public void preferenceControllers_getPreferenceKeys_existInPreferenceScreen() { - final Context context = RuntimeEnvironment.application; - final PowerUsageSummary fragment = new PowerUsageSummary(); - final List preferenceScreenKeys = - XmlTestUtils.getKeysFromPreferenceXml(context, fragment.getPreferenceScreenResId()); - final List preferenceKeys = new ArrayList<>(); - - for (AbstractPreferenceController controller : fragment.createPreferenceControllers(context)) { - preferenceKeys.add(controller.getPreferenceKey()); - } - - assertThat(preferenceScreenKeys).containsAllIn(preferenceKeys); - } - - @Test public void restartBatteryTipLoader() { //TODO: add policy logic here when BatteryTipPolicy is implemented doReturn(mLoaderManager).when(mFragment).getLoaderManager(); 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 7e9ffeb3d8..e7aafef979 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java @@ -31,6 +31,7 @@ import android.text.format.DateUtils; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.SettingsActivity; +import com.android.settings.core.BasePreferenceController; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.fuelgauge.batterytip.tips.BatteryTip; import com.android.settings.fuelgauge.batterytip.tips.SummaryTip; @@ -100,8 +101,7 @@ public class BatteryTipPreferenceControllerTest { mNewBatteryTips = new ArrayList<>(); mNewBatteryTips.add(new SummaryTip(BatteryTip.StateType.INVISIBLE, AVERAGE_TIME_MS)); - mBatteryTipPreferenceController = new BatteryTipPreferenceController(mContext, KEY_PREF, - mSettingsActivity, mFragment, mBatteryTipListener); + mBatteryTipPreferenceController = buildBatteryTipPreferenceController(); mBatteryTipPreferenceController.mPreferenceGroup = mPreferenceGroup; mBatteryTipPreferenceController.mPrefContext = mContext; } @@ -139,8 +139,7 @@ public class BatteryTipPreferenceControllerTest { final Bundle bundle = new Bundle(); mBatteryTipPreferenceController.saveInstanceState(bundle); - final BatteryTipPreferenceController controller = new BatteryTipPreferenceController( - mContext, KEY_PREF, mSettingsActivity, mFragment, mBatteryTipListener); + final BatteryTipPreferenceController controller = buildBatteryTipPreferenceController(); controller.mPreferenceGroup = mPreferenceGroup; controller.mPrefContext = mContext; controller.restoreInstanceState(bundle); @@ -154,8 +153,7 @@ public class BatteryTipPreferenceControllerTest { // Battery tip list is null at this time mBatteryTipPreferenceController.saveInstanceState(bundle); - final BatteryTipPreferenceController controller = new BatteryTipPreferenceController( - mContext, KEY_PREF, mSettingsActivity, mFragment, mBatteryTipListener); + final BatteryTipPreferenceController controller = buildBatteryTipPreferenceController(); // Should not crash controller.restoreInstanceState(bundle); @@ -176,6 +174,12 @@ public class BatteryTipPreferenceControllerTest { verify(mBatteryTipListener).onBatteryTipHandled(mBatteryTip); } + @Test + public void getAvailabilityStatus_returnAvailableUnsearchable() { + assertThat(mBatteryTipPreferenceController.getAvailabilityStatus()).isEqualTo( + BasePreferenceController.AVAILABLE_UNSEARCHABLE); + } + private void assertOnlyContainsSummaryTip(final PreferenceGroup preferenceGroup) { assertThat(preferenceGroup.getPreferenceCount()).isEqualTo(1); @@ -185,4 +189,14 @@ public class BatteryTipPreferenceControllerTest { assertThat(preference.getSummary()).isEqualTo( mContext.getString(R.string.battery_tip_summary_summary)); } + + private BatteryTipPreferenceController buildBatteryTipPreferenceController() { + final BatteryTipPreferenceController controller = new BatteryTipPreferenceController( + mContext, KEY_PREF); + controller.setActivity(mSettingsActivity); + controller.setFragment(mFragment); + controller.setBatteryTipListener(mBatteryTipListener); + + return controller; + } } -- 2.11.0