Migrate About/Reset/Legal to SettingsFragment/PreferenceController<T>
Also move LanguageSettingsEntryPreferenceController to language package.
Bug: 120942613
Test: Manual, Build, Robolectric
Change-Id: Ic532aa813561f06e97646d48f768b173c6bd98cf
diff --git a/res/xml/about_settings_fragment.xml b/res/xml/about_settings_fragment.xml
index c12ef2d..1b48e45 100644
--- a/res/xml/about_settings_fragment.xml
+++ b/res/xml/about_settings_fragment.xml
@@ -18,31 +18,25 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
- android:orderingFromXml="false"
android:title="@string/about_settings">
<Preference
android:key="@string/pk_model_info"
- android:order="0"
android:title="@string/model_info"
settings:controller="com.android.car.settings.system.ModelInfoPreferenceController"/>
<Preference
android:key="@string/pk_firmware_version"
- android:order="100"
android:title="@string/firmware_version"
settings:controller="com.android.car.settings.system.FirmwareVersionPreferenceController"/>
<Preference
android:key="@string/pk_security_patch"
- android:order="200"
android:title="@string/security_patch"
settings:controller="com.android.car.settings.system.SecurityPatchPreferenceController"/>
<Preference
android:key="@string/pk_kernel_version"
- android:order="300"
android:title="@string/kernel_version"
settings:controller="com.android.car.settings.system.KernelVersionPreferenceController"/>
<Preference
android:key="@string/pk_build_number"
- android:order="400"
android:title="@string/build_number"
settings:controller="com.android.car.settings.system.BuildNumberPreferenceController"/>
</PreferenceScreen>
diff --git a/res/xml/languages_and_input_fragment.xml b/res/xml/languages_and_input_fragment.xml
index 7e8f8ac..c206833 100644
--- a/res/xml/languages_and_input_fragment.xml
+++ b/res/xml/languages_and_input_fragment.xml
@@ -22,5 +22,5 @@
android:icon="@drawable/ic_translate"
android:key="@string/pk_language_settings_entry"
android:title="@string/language_settings"
- settings:controller="com.android.car.settings.system.LanguageSettingsEntryPreferenceController"/>
+ settings:controller="com.android.car.settings.language.LanguageSettingsEntryPreferenceController"/>
</PreferenceScreen>
diff --git a/res/xml/legal_information_fragment.xml b/res/xml/legal_information_fragment.xml
index 1fe7662..5e1541a 100644
--- a/res/xml/legal_information_fragment.xml
+++ b/res/xml/legal_information_fragment.xml
@@ -18,20 +18,17 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
- android:orderingFromXml="false"
android:title="@string/legal_information">
<Preference
android:key="@string/pk_system_license_entry"
- android:order="0"
android:title="@string/webview_license_title"
- settings:controller="com.android.car.settings.common.NoSetupPreferenceController">
+ settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
<intent android:action="android.settings.WEBVIEW_LICENSE"/>
</Preference>
<Preference
android:key="@string/pk_third_party_license_entry"
- android:order="100"
android:title="@string/settings_license_activity_title"
- settings:controller="com.android.car.settings.common.NoSetupPreferenceController">
+ settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
<intent
android:targetClass="com.android.car.settings.system.ThirdPartyLicensesActivity"
android:targetPackage="com.android.car.settings"/>
diff --git a/res/xml/reset_options_fragment.xml b/res/xml/reset_options_fragment.xml
index 7800312..f0fda00 100644
--- a/res/xml/reset_options_fragment.xml
+++ b/res/xml/reset_options_fragment.xml
@@ -30,7 +30,7 @@
android:fragment="com.android.car.settings.system.ResetAppPrefFragment"
android:key="@string/pk_reset_app_pref"
android:title="@string/reset_app_pref_title"
- settings:controller="com.android.car.settings.common.NoSetupPreferenceController"/>
+ settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
<com.android.car.settings.common.RestrictedPreference
android:key="@string/pk_master_clear"
android:title="@string/master_clear_title"
diff --git a/src/com/android/car/settings/system/LanguageSettingsEntryPreferenceController.java b/src/com/android/car/settings/language/LanguageSettingsEntryPreferenceController.java
similarity index 96%
rename from src/com/android/car/settings/system/LanguageSettingsEntryPreferenceController.java
rename to src/com/android/car/settings/language/LanguageSettingsEntryPreferenceController.java
index e161b85..3e31c11 100644
--- a/src/com/android/car/settings/system/LanguageSettingsEntryPreferenceController.java
+++ b/src/com/android/car/settings/language/LanguageSettingsEntryPreferenceController.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.car.settings.system;
+package com.android.car.settings.language;
import android.content.Context;
diff --git a/src/com/android/car/settings/system/AboutSettingsFragment.java b/src/com/android/car/settings/system/AboutSettingsFragment.java
index 8969dcd..4171542 100644
--- a/src/com/android/car/settings/system/AboutSettingsFragment.java
+++ b/src/com/android/car/settings/system/AboutSettingsFragment.java
@@ -19,12 +19,12 @@
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
+import com.android.car.settings.common.SettingsFragment;
/**
* Shows basic info about the system and provide some actions like update, reset etc.
*/
-public class AboutSettingsFragment extends BasePreferenceFragment {
+public class AboutSettingsFragment extends SettingsFragment {
@Override
@XmlRes
diff --git a/src/com/android/car/settings/system/BuildNumberPreferenceController.java b/src/com/android/car/settings/system/BuildNumberPreferenceController.java
index 47c70eb..c9187e4 100644
--- a/src/com/android/car/settings/system/BuildNumberPreferenceController.java
+++ b/src/com/android/car/settings/system/BuildNumberPreferenceController.java
@@ -16,10 +16,10 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.car.userlib.CarUserManagerHelper;
import android.content.Context;
import android.os.Build;
-import android.text.TextUtils;
import android.widget.Toast;
import androidx.lifecycle.Lifecycle;
@@ -29,22 +29,26 @@
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import com.android.car.settings.development.DevelopmentSettingsUtil;
/** Updates the build number entry summary with the build number. */
-public class BuildNumberPreferenceController extends NoSetupPreferenceController implements
+public class BuildNumberPreferenceController extends PreferenceController<Preference> implements
LifecycleObserver {
private final CarUserManagerHelper mCarUserManagerHelper;
private Toast mDevHitToast;
private int mDevHitCountdown;
- public BuildNumberPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
- mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+ public BuildNumberPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ mCarUserManagerHelper = new CarUserManagerHelper(context);
+ }
+
+ @Override
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
}
/**
@@ -54,41 +58,38 @@
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void onResume() {
mDevHitToast = null;
- mDevHitCountdown = DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
+ mDevHitCountdown = DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(getContext(),
mCarUserManagerHelper) ? -1 : getTapsToBecomeDeveloper();
}
@Override
- public CharSequence getSummary() {
- return Build.DISPLAY;
+ protected void updateState(Preference preference) {
+ preference.setSummary(Build.DISPLAY);
}
@Override
- public boolean handlePreferenceTreeClick(Preference preference) {
- if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
- return false;
- }
-
+ protected boolean handlePreferenceClicked(Preference preference) {
if (!mCarUserManagerHelper.isCurrentProcessAdminUser()
&& !mCarUserManagerHelper.isCurrentProcessDemoUser()) {
return false;
}
- if (!DevelopmentSettingsUtil.isDeviceProvisioned(mContext)) {
+ if (!DevelopmentSettingsUtil.isDeviceProvisioned(getContext())) {
return false;
}
if (mDevHitCountdown > 0) {
mDevHitCountdown--;
if (mDevHitCountdown == 0) {
- DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(mContext, true);
- showToast(mContext.getString(R.string.show_dev_on), Toast.LENGTH_LONG);
+ DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(getContext(), true);
+ showToast(getContext().getString(R.string.show_dev_on), Toast.LENGTH_LONG);
} else if (mDevHitCountdown <= getTapsToBecomeDeveloper() - getTapsToShowToast()) {
- showToast(mContext.getResources().getQuantityString(R.plurals.show_dev_countdown,
- mDevHitCountdown, mDevHitCountdown), Toast.LENGTH_SHORT);
+ showToast(getContext().getResources().getQuantityString(
+ R.plurals.show_dev_countdown, mDevHitCountdown, mDevHitCountdown),
+ Toast.LENGTH_SHORT);
}
} else if (mDevHitCountdown < 0) {
- showToast(mContext.getString(R.string.show_dev_already), Toast.LENGTH_LONG);
+ showToast(getContext().getString(R.string.show_dev_already), Toast.LENGTH_LONG);
}
return true;
}
@@ -97,16 +98,17 @@
if (mDevHitToast != null) {
mDevHitToast.cancel();
}
- mDevHitToast = Toast.makeText(mContext, text, duration);
+ mDevHitToast = Toast.makeText(getContext(), text, duration);
mDevHitToast.show();
}
private int getTapsToBecomeDeveloper() {
- return mContext.getResources().getInteger(R.integer.enable_developer_settings_click_count);
+ return getContext().getResources().getInteger(
+ R.integer.enable_developer_settings_click_count);
}
private int getTapsToShowToast() {
- return mContext.getResources().getInteger(
+ return getContext().getResources().getInteger(
R.integer.enable_developer_settings_clicks_to_show_toast_count);
}
}
diff --git a/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java b/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java
index 090fa94..0d24dec 100644
--- a/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java
+++ b/src/com/android/car/settings/system/FirmwareVersionPreferenceController.java
@@ -16,24 +16,32 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.os.Build;
+import androidx.preference.Preference;
+
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
/** Updates the firmware version entry summary with the firmware version. */
-public class FirmwareVersionPreferenceController extends NoSetupPreferenceController {
+public class FirmwareVersionPreferenceController extends PreferenceController<Preference> {
- public FirmwareVersionPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ public FirmwareVersionPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
- return mContext.getString(R.string.about_summary, Build.VERSION.RELEASE);
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(
+ getContext().getString(R.string.about_summary, Build.VERSION.RELEASE));
}
}
diff --git a/src/com/android/car/settings/system/KernelVersionPreferenceController.java b/src/com/android/car/settings/system/KernelVersionPreferenceController.java
index d6a1bfc..1d18523 100644
--- a/src/com/android/car/settings/system/KernelVersionPreferenceController.java
+++ b/src/com/android/car/settings/system/KernelVersionPreferenceController.java
@@ -16,23 +16,30 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
+import androidx.preference.Preference;
+
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import com.android.settingslib.DeviceInfoUtils;
/** Updates the kernel version entry summary with the kernel version. */
-public class KernelVersionPreferenceController extends NoSetupPreferenceController {
+public class KernelVersionPreferenceController extends PreferenceController<Preference> {
- public KernelVersionPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ public KernelVersionPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
- return DeviceInfoUtils.getFormattedKernelVersion(mContext);
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(DeviceInfoUtils.getFormattedKernelVersion(getContext()));
}
}
diff --git a/src/com/android/car/settings/system/LegalInformationFragment.java b/src/com/android/car/settings/system/LegalInformationFragment.java
index 21c07f0..69b9bc6 100644
--- a/src/com/android/car/settings/system/LegalInformationFragment.java
+++ b/src/com/android/car/settings/system/LegalInformationFragment.java
@@ -19,12 +19,12 @@
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
+import com.android.car.settings.common.SettingsFragment;
/**
* Fragment showing legal information.
*/
-public class LegalInformationFragment extends BasePreferenceFragment {
+public class LegalInformationFragment extends SettingsFragment {
@Override
@XmlRes
diff --git a/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java b/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
index ea2c1b9..b48920f 100644
--- a/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
+++ b/src/com/android/car/settings/system/MasterClearEntryPreferenceController.java
@@ -16,35 +16,43 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.car.userlib.CarUserManagerHelper;
import android.content.Context;
import android.os.UserManager;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.RestrictedPreference;
/**
* Controller which determines if master clear (aka "factory reset") should be displayed based on
* user status.
*/
-public class MasterClearEntryPreferenceController extends NoSetupPreferenceController {
+public class MasterClearEntryPreferenceController extends
+ PreferenceController<RestrictedPreference> {
private final CarUserManagerHelper mCarUserManagerHelper;
public MasterClearEntryPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
mCarUserManagerHelper = new CarUserManagerHelper(context);
}
@Override
+ protected Class<RestrictedPreference> getPreferenceType() {
+ return RestrictedPreference.class;
+ }
+
+ @Override
public int getAvailabilityStatus() {
return (mCarUserManagerHelper.isCurrentProcessAdminUser() || isDemoUser()) ? AVAILABLE
: DISABLED_FOR_USER;
}
private boolean isDemoUser() {
- return UserManager.isDeviceInDemoMode(mContext)
+ return UserManager.isDeviceInDemoMode(getContext())
&& mCarUserManagerHelper.isCurrentProcessDemoUser();
}
}
diff --git a/src/com/android/car/settings/system/ModelInfoPreferenceController.java b/src/com/android/car/settings/system/ModelInfoPreferenceController.java
index f23ec65..4fd8b53 100644
--- a/src/com/android/car/settings/system/ModelInfoPreferenceController.java
+++ b/src/com/android/car/settings/system/ModelInfoPreferenceController.java
@@ -16,24 +16,31 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.os.Build;
+import androidx.preference.Preference;
+
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import com.android.settingslib.DeviceInfoUtils;
/** Updates the model info entry summary with the model info. */
-public class ModelInfoPreferenceController extends NoSetupPreferenceController {
+public class ModelInfoPreferenceController extends PreferenceController<Preference> {
- public ModelInfoPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ public ModelInfoPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
- return Build.MODEL + DeviceInfoUtils.getMsvSuffix();
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(Build.MODEL + DeviceInfoUtils.getMsvSuffix());
}
}
diff --git a/src/com/android/car/settings/system/ResetAppPrefFragment.java b/src/com/android/car/settings/system/ResetAppPrefFragment.java
index 2f50e05..70725e9 100644
--- a/src/com/android/car/settings/system/ResetAppPrefFragment.java
+++ b/src/com/android/car/settings/system/ResetAppPrefFragment.java
@@ -38,8 +38,8 @@
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.SettingsFragment;
import java.lang.ref.WeakReference;
import java.util.List;
@@ -47,7 +47,7 @@
/**
* Presents the user with information about resetting app preferences.
*/
-public class ResetAppPrefFragment extends BasePreferenceFragment {
+public class ResetAppPrefFragment extends SettingsFragment {
private static final Logger LOG = new Logger(ResetAppPrefFragment.class);
diff --git a/src/com/android/car/settings/system/ResetEsimPreferenceController.java b/src/com/android/car/settings/system/ResetEsimPreferenceController.java
index 6b11408..863d819 100644
--- a/src/com/android/car/settings/system/ResetEsimPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetEsimPreferenceController.java
@@ -16,23 +16,31 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.telephony.euicc.EuiccManager;
+import androidx.preference.TwoStatePreference;
+
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
/**
* Controller which determines if a checkbox to reset the device's eSIMs is shown. Not all
* devices support eSIMs.
*/
-public class ResetEsimPreferenceController extends NoSetupPreferenceController {
+public class ResetEsimPreferenceController extends PreferenceController<TwoStatePreference> {
public ResetEsimPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ }
+
+ @Override
+ protected Class<TwoStatePreference> getPreferenceType() {
+ return TwoStatePreference.class;
}
@Override
@@ -41,11 +49,12 @@
}
private boolean showEuiccSettings() {
- EuiccManager euiccManager = (EuiccManager) mContext.getSystemService(Context.EUICC_SERVICE);
+ EuiccManager euiccManager = (EuiccManager) getContext().getSystemService(
+ Context.EUICC_SERVICE);
if (!euiccManager.isEnabled()) {
return false;
}
- ContentResolver resolver = mContext.getContentResolver();
+ ContentResolver resolver = getContext().getContentResolver();
return Settings.Global.getInt(resolver, Settings.Global.EUICC_PROVISIONED, 0) != 0
|| Settings.Global.getInt(resolver, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0)
!= 0;
diff --git a/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java b/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
index 9759498..29c2453 100644
--- a/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
+++ b/src/com/android/car/settings/system/ResetNetworkConfirmFragment.java
@@ -45,14 +45,14 @@
import androidx.preference.PreferenceManager;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
import com.android.car.settings.common.ErrorDialog;
+import com.android.car.settings.common.SettingsFragment;
/**
* Final warning presented to user to confirm restoring network settings to the factory default.
* If a user confirms, all settings are reset for connectivity, Wi-Fi, and Bluetooth.
*/
-public class ResetNetworkConfirmFragment extends BasePreferenceFragment {
+public class ResetNetworkConfirmFragment extends SettingsFragment {
// Copied from com.android.settings.network.ApnSettings.
@VisibleForTesting
diff --git a/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
index d2e3e27..10632d7 100644
--- a/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetNetworkEntryPreferenceController.java
@@ -16,24 +16,32 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.car.userlib.CarUserManagerHelper;
import android.content.Context;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.car.settings.common.RestrictedPreference;
/** Controller which determines if network reset should be displayed based on user status. */
-public class ResetNetworkEntryPreferenceController extends NoSetupPreferenceController {
+public class ResetNetworkEntryPreferenceController extends
+ PreferenceController<RestrictedPreference> {
private final CarUserManagerHelper mCarUserManagerHelper;
public ResetNetworkEntryPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
mCarUserManagerHelper = new CarUserManagerHelper(context);
}
@Override
+ protected Class<RestrictedPreference> getPreferenceType() {
+ return RestrictedPreference.class;
+ }
+
+ @Override
public int getAvailabilityStatus() {
return mCarUserManagerHelper.isCurrentProcessAdminUser() ? AVAILABLE : DISABLED_FOR_USER;
}
diff --git a/src/com/android/car/settings/system/ResetNetworkFragment.java b/src/com/android/car/settings/system/ResetNetworkFragment.java
index 956a8d6..ef81b8b 100644
--- a/src/com/android/car/settings/system/ResetNetworkFragment.java
+++ b/src/com/android/car/settings/system/ResetNetworkFragment.java
@@ -28,8 +28,8 @@
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.SettingsFragment;
import com.android.car.settings.security.CheckLockActivity;
/**
@@ -37,7 +37,7 @@
* values. If a user confirms, they will first be required to authenticate then presented with a
* secondary confirmation: {@link ResetNetworkConfirmFragment}.
*/
-public class ResetNetworkFragment extends BasePreferenceFragment {
+public class ResetNetworkFragment extends SettingsFragment {
// Arbitrary request code for starting CheckLockActivity when the reset button is clicked.
private static final int REQUEST_CODE = 123;
diff --git a/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java
index 4375e2d..d018c3c 100644
--- a/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetNetworkItemsPreferenceController.java
@@ -16,39 +16,51 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.content.pm.PackageManager;
+import androidx.preference.Preference;
+
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import java.util.StringJoiner;
/** Controller to determine which items appear as resetable within the reset network description. */
-public class ResetNetworkItemsPreferenceController extends NoSetupPreferenceController {
+public class ResetNetworkItemsPreferenceController extends PreferenceController<Preference> {
public ResetNetworkItemsPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(getSummary());
+ }
+
+ private CharSequence getSummary() {
StringJoiner joiner = new StringJoiner(System.lineSeparator());
if (hasFeature(PackageManager.FEATURE_WIFI)) {
- joiner.add(mContext.getString(R.string.reset_network_item_wifi));
+ joiner.add(getContext().getString(R.string.reset_network_item_wifi));
}
if (hasFeature(PackageManager.FEATURE_TELEPHONY)) {
- joiner.add(mContext.getString(R.string.reset_network_item_mobile));
+ joiner.add(getContext().getString(R.string.reset_network_item_mobile));
}
if (hasFeature(PackageManager.FEATURE_BLUETOOTH)) {
- joiner.add(mContext.getString(R.string.reset_network_item_bluetooth));
+ joiner.add(getContext().getString(R.string.reset_network_item_bluetooth));
}
return joiner.toString();
}
private boolean hasFeature(String feature) {
- return mContext.getPackageManager().hasSystemFeature(feature);
+ return getContext().getPackageManager().hasSystemFeature(feature);
}
}
diff --git a/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java b/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
index 9ebd355..fab9b03 100644
--- a/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
+++ b/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceController.java
@@ -16,6 +16,7 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
import android.content.pm.PackageManager;
import android.telephony.SubscriptionInfo;
@@ -23,12 +24,10 @@
import android.text.TextUtils;
import androidx.preference.ListPreference;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import java.util.ArrayList;
import java.util.List;
@@ -38,40 +37,41 @@
* network subscriptions, a user may select the network to reset.
*/
public class ResetNetworkSubscriptionPreferenceController extends
- NoSetupPreferenceController implements Preference.OnPreferenceChangeListener {
+ PreferenceController<ListPreference> {
private final SubscriptionManager mSubscriptionManager;
- private ListPreference mListPreference;
public ResetNetworkSubscriptionPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
mSubscriptionManager = (SubscriptionManager) context.getSystemService(
Context.TELEPHONY_SUBSCRIPTION_SERVICE);
}
@Override
+ protected Class<ListPreference> getPreferenceType() {
+ return ListPreference.class;
+ }
+
+ @Override
public int getAvailabilityStatus() {
- return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+ return getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
- public void displayPreference(PreferenceScreen screen) {
- super.displayPreference(screen);
- mListPreference = (ListPreference) screen.findPreference(getPreferenceKey());
-
+ protected void updateState(ListPreference preference) {
List<SubscriptionInfo> subscriptions = mSubscriptionManager.getActiveSubscriptionInfoList();
if (subscriptions == null || subscriptions.isEmpty()) {
// No subscriptions to reset.
- mListPreference.setValue(String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
- mListPreference.setVisible(false);
+ preference.setValue(String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
+ preference.setVisible(false);
return;
}
if (subscriptions.size() == 1) {
// Only one subscription, so nothing else to select. Use it and hide the preference.
- mListPreference.setValue(String.valueOf(subscriptions.get(0).getSubscriptionId()));
- mListPreference.setVisible(false);
+ preference.setValue(String.valueOf(subscriptions.get(0).getSubscriptionId()));
+ preference.setVisible(false);
return;
}
@@ -91,10 +91,19 @@
subscriptionIds.add(String.valueOf(subscriptionId));
}
- mListPreference.setEntries(toCharSequenceArray(subscriptionNames));
- mListPreference.setEntryValues(toCharSequenceArray(subscriptionIds));
- mListPreference.setTitle(subscriptionNames.get(selectedIndex));
- mListPreference.setValueIndex(selectedIndex);
+ preference.setEntries(toCharSequenceArray(subscriptionNames));
+ preference.setEntryValues(toCharSequenceArray(subscriptionIds));
+ preference.setTitle(subscriptionNames.get(selectedIndex));
+ preference.setValueIndex(selectedIndex);
+ }
+
+ @Override
+ protected boolean handlePreferenceChanged(ListPreference preference, Object newValue) {
+ String subscriptionIdStr = (String) newValue;
+ int index = preference.findIndexOfValue(subscriptionIdStr);
+ CharSequence subscriptionName = preference.getEntries()[index];
+ preference.setTitle(subscriptionName);
+ return true;
}
/**
@@ -127,7 +136,7 @@
name = subscription.getCarrierName().toString();
}
if (TextUtils.isEmpty(name)) {
- name = mContext.getString(R.string.reset_network_fallback_subscription_name,
+ name = getContext().getString(R.string.reset_network_fallback_subscription_name,
subscription.getMcc(), subscription.getMnc(), subscription.getSimSlotIndex(),
subscription.getSubscriptionId());
}
@@ -139,13 +148,4 @@
list.toArray(array);
return array;
}
-
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- String subscriptionIdStr = (String) newValue;
- int index = mListPreference.findIndexOfValue(subscriptionIdStr);
- CharSequence subscriptionName = mListPreference.getEntries()[index];
- mListPreference.setTitle(subscriptionName);
- return true;
- }
}
diff --git a/src/com/android/car/settings/system/ResetOptionsFragment.java b/src/com/android/car/settings/system/ResetOptionsFragment.java
index 8af0e38..a0643cf 100644
--- a/src/com/android/car/settings/system/ResetOptionsFragment.java
+++ b/src/com/android/car/settings/system/ResetOptionsFragment.java
@@ -17,12 +17,12 @@
package com.android.car.settings.system;
import com.android.car.settings.R;
-import com.android.car.settings.common.BasePreferenceFragment;
+import com.android.car.settings.common.SettingsFragment;
/**
* Shows options to reset network settings, reset app preferences, and factory reset the device.
*/
-public class ResetOptionsFragment extends BasePreferenceFragment {
+public class ResetOptionsFragment extends SettingsFragment {
@Override
protected int getPreferenceScreenResId() {
diff --git a/src/com/android/car/settings/system/SecurityPatchPreferenceController.java b/src/com/android/car/settings/system/SecurityPatchPreferenceController.java
index 54e68cc..f48357c 100644
--- a/src/com/android/car/settings/system/SecurityPatchPreferenceController.java
+++ b/src/com/android/car/settings/system/SecurityPatchPreferenceController.java
@@ -16,23 +16,30 @@
package com.android.car.settings.system;
+import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
+import androidx.preference.Preference;
+
import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.NoSetupPreferenceController;
+import com.android.car.settings.common.PreferenceController;
import com.android.settingslib.DeviceInfoUtils;
/** Updates the security patch entry summary with the security patch. */
-public class SecurityPatchPreferenceController extends NoSetupPreferenceController {
+public class SecurityPatchPreferenceController extends PreferenceController<Preference> {
- public SecurityPatchPreferenceController(Context context,
- String preferenceKey,
- FragmentController fragmentController) {
- super(context, preferenceKey, fragmentController);
+ public SecurityPatchPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
}
@Override
- public CharSequence getSummary() {
- return DeviceInfoUtils.getSecurityPatch();
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(DeviceInfoUtils.getSecurityPatch());
}
}
diff --git a/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java
index c0ff970..f9e9a6c 100644
--- a/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/BuildNumberPreferenceControllerTest.java
@@ -20,7 +20,6 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.car.userlib.CarUserManagerHelper;
@@ -29,11 +28,12 @@
import android.os.UserManager;
import android.provider.Settings;
+import androidx.lifecycle.Lifecycle;
import androidx.preference.Preference;
import com.android.car.settings.CarSettingsRobolectricTestRunner;
import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
import com.android.car.settings.development.DevelopmentSettingsUtil;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
@@ -51,9 +51,9 @@
@Config(shadows = {ShadowCarUserManagerHelper.class})
public class BuildNumberPreferenceControllerTest {
- private static final String PREFERENCE_KEY = "preference_key";
-
private Context mContext;
+ private PreferenceControllerTestHelper<BuildNumberPreferenceController>
+ mPreferenceControllerHelper;
private BuildNumberPreferenceController mController;
private Preference mPreference;
@Mock
@@ -64,10 +64,10 @@
MockitoAnnotations.initMocks(this);
ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
mContext = RuntimeEnvironment.application;
- mController = new BuildNumberPreferenceController(mContext, PREFERENCE_KEY,
- mock(FragmentController.class));
mPreference = new Preference(mContext);
- mPreference.setKey(PREFERENCE_KEY);
+ mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+ BuildNumberPreferenceController.class, mPreference);
+ mController = mPreferenceControllerHelper.getController();
// By default, user is an admin user.
when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
@@ -79,13 +79,13 @@
any(UserInfo.class))).thenReturn(false);
// By default device is provisioned.
- Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
- 1);
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 1);
// By default development settings is disabled.
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
- mController.onResume();
+ mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_RESUME);
}
@After
@@ -94,48 +94,43 @@
}
@Test
- public void testHandlePreferenceTreeClick_wrongPreference_returnFalse() {
- assertThat(mController.handlePreferenceTreeClick(new Preference(mContext))).isFalse();
+ public void testHandlePreferenceClicked_notProvisioned_returnFalse() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 0);
+ assertThat(mController.handlePreferenceClicked(mPreference)).isFalse();
}
@Test
- public void testHandlePreferenceTreeClick_notProvisioned_returnFalse() {
- Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
- 0);
- assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
- }
-
- @Test
- public void testHandlePreferenceTreeClick_nonAdmin_returnFalse() {
+ public void testHandlePreferenceClicked_nonAdmin_returnFalse() {
when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(false);
- assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
+ assertThat(mController.handlePreferenceClicked(mPreference)).isFalse();
}
@Test
- public void testHandlePreferenceTreeClick_demoUser_returnsTrue() {
+ public void testHandlePreferenceClicked_demoUser_returnsTrue() {
when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(true);
- assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue();
+ assertThat(mController.handlePreferenceClicked(mPreference)).isTrue();
}
@Test
- public void testHandlePreferenceTreeClick_adminUser_returnsTrue() {
- assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue();
+ public void testHandlePreferenceClicked_adminUser_returnsTrue() {
+ assertThat(mController.handlePreferenceClicked(mPreference)).isTrue();
}
@Test
- public void testHandlePreferenceTreeClick_devSettingsDisabled_firstClick_noToast() {
- mController.handlePreferenceTreeClick(mPreference);
+ public void testHandlePreferenceClicked_devSettingsDisabled_firstClick_noToast() {
+ mPreference.performClick();
assertThat(ShadowToast.shownToastCount()).isEqualTo(0);
}
@Test
- public void testHandlePreferenceTreeClick_devSettingsDisabled_someClicks_showToast() {
+ public void testHandlePreferenceClicked_devSettingsDisabled_someClicks_showToast() {
for (int i = 0; i < getTapsToShowToast(); i++) {
- mController.handlePreferenceTreeClick(mPreference);
+ mPreference.performClick();
}
int remainingClicks = getTapsToBecomeDeveloper() - getTapsToShowToast();
@@ -145,39 +140,40 @@
}
@Test
- public void testHandlePreferenceTreeClick_devSettingsDisabled_allClicks_showDevEnabledToast() {
+ public void testHandlePreferenceClicked_devSettingsDisabled_allClicks_showDevEnabledToast() {
for (int i = 0; i < getTapsToBecomeDeveloper(); i++) {
- mController.handlePreferenceTreeClick(mPreference);
+ mPreference.performClick();
}
assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(
mContext.getString(R.string.show_dev_on));
}
@Test
- public void testHandlePreferenceTreeClick_devSettingsDisabled_allClicks_devSettingsEnabled() {
+ public void testHandlePreferenceClicked_devSettingsDisabled_allClicks_devSettingsEnabled() {
for (int i = 0; i < getTapsToBecomeDeveloper(); i++) {
- mController.handlePreferenceTreeClick(mPreference);
+ mPreference.performClick();
}
assertThat(DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(mContext,
mCarUserManagerHelper)).isTrue();
}
@Test
- public void testHandlePreferenceTreeClick_devSettingsDisabled_extraClicks_noAlreadyDevToast() {
+ public void testHandlePreferenceClicked_devSettingsDisabled_extraClicks_noAlreadyDevToast() {
int extraClicks = 100;
for (int i = 0; i < getTapsToBecomeDeveloper() + extraClicks; i++) {
- mController.handlePreferenceTreeClick(mPreference);
+ mPreference.performClick();
}
assertThat(
ShadowToast.showedToast(mContext.getString(R.string.show_dev_already))).isFalse();
}
@Test
- public void testHandlePreferenceTreeClick_devSettingsEnabled_click_showAlreadyDevToast() {
+ public void testHandlePreferenceClicked_devSettingsEnabled_click_showAlreadyDevToast() {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
- mController.onResume();
- mController.handlePreferenceTreeClick(mPreference);
+ mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_PAUSE);
+ mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_RESUME);
+ mPreference.performClick();
assertThat(ShadowToast.showedToast(mContext.getString(R.string.show_dev_already))).isTrue();
}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java
index a8283d2..c596741 100644
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearEntryPreferenceControllerTest.java
@@ -21,14 +21,15 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
import android.provider.Settings;
import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.RestrictedPreference;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
import org.junit.After;
@@ -45,24 +46,25 @@
@Config(shadows = {ShadowCarUserManagerHelper.class})
public class MasterClearEntryPreferenceControllerTest {
- private static final String PREFERENCE_KEY = "preference_key";
-
+ private Context mContext;
+ private MasterClearEntryPreferenceController mController;
@Mock
private CarUserManagerHelper mCarUserManagerHelper;
- private MasterClearEntryPreferenceController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+ mContext = RuntimeEnvironment.application;
- mController = new MasterClearEntryPreferenceController(RuntimeEnvironment.application,
- PREFERENCE_KEY, mock(FragmentController.class));
+ mController = new PreferenceControllerTestHelper<>(mContext,
+ MasterClearEntryPreferenceController.class,
+ new RestrictedPreference(mContext)).getController();
}
@After
public void tearDown() {
- Settings.Global.putInt(RuntimeEnvironment.application.getContentResolver(),
+ Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVICE_DEMO_MODE, 0);
ShadowCarUserManagerHelper.reset();
}
@@ -85,7 +87,7 @@
public void getAvailabilityStatus_demoMode_demoUser_available() {
when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(false);
when(mCarUserManagerHelper.isCurrentProcessDemoUser()).thenReturn(true);
- Settings.Global.putInt(RuntimeEnvironment.application.getContentResolver(),
+ Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVICE_DEMO_MODE, 1);
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
index e7065e9..623fbd3 100644
--- a/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
@@ -21,13 +21,13 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-
import android.content.Context;
import android.provider.Settings;
+import androidx.preference.SwitchPreference;
+
import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
import org.junit.After;
import org.junit.Before;
@@ -41,8 +41,6 @@
@RunWith(CarSettingsRobolectricTestRunner.class)
public class ResetEsimPreferenceControllerTest {
- private static final String PREFERENCE_KEY = "preference_key";
-
private Context mContext;
private ShadowEuiccManager mShadowEuiccManager;
private ResetEsimPreferenceController mController;
@@ -51,8 +49,9 @@
public void setUp() {
mContext = RuntimeEnvironment.application;
mShadowEuiccManager = Shadow.extract(mContext.getSystemService(Context.EUICC_SERVICE));
- mController = new ResetEsimPreferenceController(mContext, PREFERENCE_KEY,
- mock(FragmentController.class));
+ mController = new PreferenceControllerTestHelper<>(mContext,
+ ResetEsimPreferenceController.class,
+ new SwitchPreference(mContext)).getController();
}
@After
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java
index 6b45392..422c5ef 100644
--- a/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/ResetNetworkEntryPreferenceControllerTest.java
@@ -21,13 +21,14 @@
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.common.RestrictedPreference;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
import org.junit.After;
@@ -44,8 +45,6 @@
@Config(shadows = {ShadowCarUserManagerHelper.class})
public class ResetNetworkEntryPreferenceControllerTest {
- private static final String PREFERENCE_KEY = "preference_key";
-
@Mock
private CarUserManagerHelper mCarUserManagerHelper;
private ResetNetworkEntryPreferenceController mController;
@@ -54,9 +53,11 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+ Context context = RuntimeEnvironment.application;
- mController = new ResetNetworkEntryPreferenceController(RuntimeEnvironment.application,
- PREFERENCE_KEY, mock(FragmentController.class));
+ mController = new PreferenceControllerTestHelper<>(context,
+ ResetNetworkEntryPreferenceController.class,
+ new RestrictedPreference(context)).getController();
}
@After
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
index 046aee0..2794d86 100644
--- a/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
@@ -31,12 +31,11 @@
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
+import androidx.lifecycle.Lifecycle;
import androidx.preference.ListPreference;
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
import org.junit.Before;
import org.junit.Test;
@@ -54,8 +53,6 @@
@RunWith(CarSettingsRobolectricTestRunner.class)
public class ResetNetworkSubscriptionPreferenceControllerTest {
- private static final String PREFERENCE_KEY = "preference_key";
-
private static final int SUBID_1 = MIN_SUBSCRIPTION_ID_VALUE;
private static final int SUBID_2 = SUBID_1 + 1;
private static final int SUBID_3 = SUBID_2 + 1;
@@ -63,8 +60,9 @@
private Context mContext;
private ShadowSubscriptionManager mShadowSubscriptionManager;
- private PreferenceScreen mScreen;
private ListPreference mListPreference;
+ private PreferenceControllerTestHelper<ResetNetworkSubscriptionPreferenceController>
+ mPreferenceControllerHelper;
private ResetNetworkSubscriptionPreferenceController mController;
@Before
@@ -73,17 +71,16 @@
mShadowSubscriptionManager = Shadow.extract(
mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE));
- mScreen = new PreferenceManager(mContext).createPreferenceScreen(mContext);
mListPreference = new ListPreference(mContext);
- mListPreference.setKey(PREFERENCE_KEY);
- mScreen.addPreference(mListPreference);
- mController = new ResetNetworkSubscriptionPreferenceController(mContext, PREFERENCE_KEY,
- mock(FragmentController.class));
+ mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+ ResetNetworkSubscriptionPreferenceController.class, mListPreference);
+ mController = mPreferenceControllerHelper.getController();
// Default to AVAILABLE status. Tests for this behavior will do their own setup.
ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
shadowPackageManager.setSystemFeature(PackageManager.FEATURE_TELEPHONY, /* supported= */
true);
+ mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
}
@Test
@@ -105,78 +102,78 @@
}
@Test
- public void displayPreference_nullSubscriptions_hidesPreference() {
- mController.displayPreference(mScreen);
+ public void refreshUi_nullSubscriptions_hidesPreference() {
+ mController.refreshUi();
assertThat(mListPreference.isVisible()).isFalse();
}
@Test
- public void displayPreference_nullSubscriptions_setsValue() {
- mController.displayPreference(mScreen);
+ public void refreshUi_nullSubscriptions_setsValue() {
+ mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(
String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
}
@Test
- public void displayPreference_noSubscriptions_hidesPreference() {
+ public void refreshUi_noSubscriptions_hidesPreference() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(Collections.emptyList());
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.isVisible()).isFalse();
}
@Test
- public void displayPreference_noSubscriptions_setsValue() {
+ public void refreshUi_noSubscriptions_setsValue() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(Collections.emptyList());
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(
String.valueOf(SubscriptionManager.INVALID_SUBSCRIPTION_ID));
}
@Test
- public void displayPreference_oneSubscription_hidesPreference() {
+ public void refreshUi_oneSubscription_hidesPreference() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Collections.singletonList(createSubInfo(SUBID_1, "sub1")));
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.isVisible()).isFalse();
}
@Test
- public void displayPreference_oneSubscription_setsValue() {
+ public void refreshUi_oneSubscription_setsValue() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Collections.singletonList(createSubInfo(SUBID_1, "sub1")));
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_1));
}
@Test
- public void displayPreference_multipleSubscriptions_showsPreference() {
+ public void refreshUi_multipleSubscriptions_showsPreference() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.isVisible()).isTrue();
}
@Test
- public void displayPreference_multipleSubscriptions_populatesEntries() {
+ public void refreshUi_multipleSubscriptions_populatesEntries() {
String displayName1 = "sub1";
String displayName2 = "sub2";
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, displayName1),
createSubInfo(SUBID_2, displayName2)));
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(Arrays.asList(mListPreference.getEntries())).containsExactly(displayName1,
displayName2);
@@ -186,32 +183,32 @@
}
@Test
- public void displayPreference_defaultSelection_fourthPriority_system() {
+ public void refreshUi_defaultSelection_fourthPriority_system() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_4));
}
@Test
- public void displayPreference_defaultSelection_thirdPriority_sms() {
+ public void refreshUi_defaultSelection_thirdPriority_sms() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_3));
}
@Test
- public void displayPreference_defaultSelection_secondPriority_voice() {
+ public void refreshUi_defaultSelection_secondPriority_voice() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
@@ -219,13 +216,13 @@
ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUBID_2);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_2));
}
@Test
- public void displayPreference_defaultSelection_firstPriority_data() {
+ public void refreshUi_defaultSelection_firstPriority_data() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2"),
createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
@@ -234,13 +231,13 @@
ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUBID_2);
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_1));
}
@Test
- public void displayPreference_title_fourthPriority_subscriptionNetworkIds() {
+ public void refreshUi_title_fourthPriority_subscriptionNetworkIds() {
SubscriptionInfo subInfo = createSubInfo(
SUBID_1,
/* displayName= */ "",
@@ -251,7 +248,7 @@
Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
String title = mListPreference.getTitle().toString();
assertThat(title).contains(String.valueOf(subInfo.getMcc()));
@@ -261,7 +258,7 @@
}
@Test
- public void displayPreference_title_thirdPriority_subscriptionCarrierName() {
+ public void refreshUi_title_thirdPriority_subscriptionCarrierName() {
SubscriptionInfo subInfo = createSubInfo(
SUBID_1,
/* displayName= */ "",
@@ -272,13 +269,13 @@
Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.getTitle()).isEqualTo(subInfo.getCarrierName());
}
@Test
- public void displayPreference_title_secondPriority_subscriptionNumber() {
+ public void refreshUi_title_secondPriority_subscriptionNumber() {
SubscriptionInfo subInfo = createSubInfo(
SUBID_1,
/* displayName= */ "",
@@ -289,13 +286,13 @@
Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.getTitle()).isEqualTo(subInfo.getNumber());
}
@Test
- public void displayPreference_title_firstPriority_subscriptionDisplayName() {
+ public void refreshUi_title_firstPriority_subscriptionDisplayName() {
SubscriptionInfo subInfo = createSubInfo(
SUBID_1,
"displayName",
@@ -306,32 +303,32 @@
Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
assertThat(mListPreference.getTitle()).isEqualTo(subInfo.getDisplayName());
}
@Test
- public void onPreferenceChange_updatesTitle() {
+ public void handlePreferenceChanged_updatesTitle() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
- mController.onPreferenceChange(mListPreference, String.valueOf(SUBID_2));
+ mListPreference.callChangeListener(String.valueOf(SUBID_2));
assertThat(mListPreference.getTitle()).isEqualTo("sub2");
}
@Test
- public void onPreferenceChange_returnsTrue() {
+ public void handlePreferenceChanged_returnsTrue() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
- mController.displayPreference(mScreen);
+ mController.refreshUi();
- assertThat(
- mController.onPreferenceChange(mListPreference, String.valueOf(SUBID_2))).isTrue();
+ assertThat(mController.handlePreferenceChanged(mListPreference,
+ String.valueOf(SUBID_2))).isTrue();
}
/** Reduce SubscriptionInfo constructor args to the ones we care about here. */