Refactor some Preference Controllers to use BasePreferenceController

Test: atest SettingsUnitTests
Change-Id: Ic93f29d6c35cb1a43937fa7bf2f1e2d489cdd09f
This commit is contained in:
Yuri Ufimtsev
2022-01-05 10:42:11 +00:00
parent fe76826c73
commit cdc2677cd1
11 changed files with 33 additions and 77 deletions

View File

@@ -27,7 +27,8 @@
android:key="encryption_and_credentials_encryption_status" android:key="encryption_and_credentials_encryption_status"
android:title="@string/crypt_keeper_encrypt_title" android:title="@string/crypt_keeper_encrypt_title"
android:fragment="com.android.settings.security.CryptKeeperSettings" android:fragment="com.android.settings.security.CryptKeeperSettings"
android:summary="@string/summary_placeholder" /> android:summary="@string/summary_placeholder"
settings:controller="com.android.settings.security.EncryptionStatusPreferenceController"/>
</PreferenceCategory> </PreferenceCategory>

View File

@@ -47,20 +47,23 @@
android:key="enterprise_privacy" android:key="enterprise_privacy"
android:title="@string/enterprise_privacy_settings" android:title="@string/enterprise_privacy_settings"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.enterprise.EnterprisePrivacySettings" /> android:fragment="com.android.settings.enterprise.EnterprisePrivacySettings"
settings:controller="com.android.settings.enterprise.EnterprisePrivacyPreferenceController"/>
<Preference <Preference
android:key="financed_privacy" android:key="financed_privacy"
android:title="@string/financed_privacy_settings" android:title="@string/financed_privacy_settings"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.enterprise.EnterprisePrivacySettings" /> android:fragment="com.android.settings.enterprise.EnterprisePrivacySettings"
settings:controller="com.android.settings.enterprise.FinancedPrivacyPreferenceController"/>
</PreferenceCategory> </PreferenceCategory>
<Preference <Preference
android:order="50" android:order="50"
android:key="sim_lock_settings" android:key="sim_lock_settings"
android:title="@string/sim_lock_settings_category"> android:title="@string/sim_lock_settings_category"
settings:controller="com.android.settings.security.SimLockPreferenceController">
<intent <intent
android:action="android.intent.action.MAIN" android:action="android.intent.action.MAIN"
@@ -74,14 +77,16 @@
android:key="encryption_and_credential" android:key="encryption_and_credential"
android:title="@string/encryption_and_credential_settings_title" android:title="@string/encryption_and_credential_settings_title"
android:summary="@string/encryption_and_credential_settings_summary" android:summary="@string/encryption_and_credential_settings_summary"
android:fragment="com.android.settings.security.EncryptionAndCredential" /> android:fragment="com.android.settings.security.EncryptionAndCredential"
settings:controller="com.android.settings.security.EncryptionStatusPreferenceController" />
<Preference <Preference
android:order="70" android:order="70"
android:key="manage_trust_agents" android:key="manage_trust_agents"
android:title="@string/manage_trust_agents" android:title="@string/manage_trust_agents"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.security.trustagent.TrustAgentSettings" /> android:fragment="com.android.settings.security.trustagent.TrustAgentSettings"
settings:controller="com.android.settings.security.trustagent.ManageTrustAgentsPreferenceController" />
<Preference <Preference
android:order="80" android:order="80"
@@ -89,14 +94,15 @@
android:title="@string/screen_pinning_title" android:title="@string/screen_pinning_title"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.security.ScreenPinningSettings" android:fragment="com.android.settings.security.ScreenPinningSettings"
settings:keywords="@string/keywords_app_pinning" /> settings:keywords="@string/keywords_app_pinning"
settings:controller="com.android.settings.security.ScreenPinningPreferenceController" />
<SwitchPreference <SwitchPreference
android:order="90" android:order="90"
android:key="confirm_sim_deletion" android:key="confirm_sim_deletion"
android:title="@string/confirm_sim_deletion_title" android:title="@string/confirm_sim_deletion_title"
android:summary="@string/confirm_sim_deletion_description" android:summary="@string/confirm_sim_deletion_description"
settings:controller="com.android.settings.security.ConfirmSimDeletionPreferenceController"/> settings:controller="com.android.settings.security.ConfirmSimDeletionPreferenceController" />
<!-- work profile security section --> <!-- work profile security section -->
<PreferenceCategory <PreferenceCategory

View File

@@ -18,21 +18,15 @@ import android.content.Context;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.Objects; import java.util.Objects;
public class EnterprisePrivacyPreferenceController extends AbstractPreferenceController implements public class EnterprisePrivacyPreferenceController extends BasePreferenceController implements
PreferenceControllerMixin { PreferenceControllerMixin {
private static final String KEY_ENTERPRISE_PRIVACY = "enterprise_privacy";
private final PrivacyPreferenceControllerHelper mPrivacyPreferenceControllerHelper; private final PrivacyPreferenceControllerHelper mPrivacyPreferenceControllerHelper;
private final String mPreferenceKey;
public EnterprisePrivacyPreferenceController(Context context) {
this(Objects.requireNonNull(context), KEY_ENTERPRISE_PRIVACY);
}
public EnterprisePrivacyPreferenceController(Context context, String key) { public EnterprisePrivacyPreferenceController(Context context, String key) {
this(Objects.requireNonNull(context), new PrivacyPreferenceControllerHelper(context), key); this(Objects.requireNonNull(context), new PrivacyPreferenceControllerHelper(context), key);
@@ -41,10 +35,9 @@ public class EnterprisePrivacyPreferenceController extends AbstractPreferenceCon
@VisibleForTesting @VisibleForTesting
EnterprisePrivacyPreferenceController(Context context, EnterprisePrivacyPreferenceController(Context context,
PrivacyPreferenceControllerHelper privacyPreferenceControllerHelper, String key) { PrivacyPreferenceControllerHelper privacyPreferenceControllerHelper, String key) {
super(Objects.requireNonNull(context)); super(Objects.requireNonNull(context), key);
mPrivacyPreferenceControllerHelper = Objects.requireNonNull( mPrivacyPreferenceControllerHelper = Objects.requireNonNull(
privacyPreferenceControllerHelper); privacyPreferenceControllerHelper);
this.mPreferenceKey = key;
} }
@Override @Override
@@ -53,13 +46,10 @@ public class EnterprisePrivacyPreferenceController extends AbstractPreferenceCon
} }
@Override @Override
public boolean isAvailable() { public int getAvailabilityStatus() {
return mPrivacyPreferenceControllerHelper.hasDeviceOwner() return mPrivacyPreferenceControllerHelper.hasDeviceOwner()
&& !mPrivacyPreferenceControllerHelper.isFinancedDevice(); && !mPrivacyPreferenceControllerHelper.isFinancedDevice()
} ? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
@Override
public String getPreferenceKey() {
return mPreferenceKey;
} }
} }

View File

@@ -21,22 +21,16 @@ import android.content.Context;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.Objects; import java.util.Objects;
/** Preference controller which displays a financed preference for financed devices. */ /** Preference controller which displays a financed preference for financed devices. */
public class FinancedPrivacyPreferenceController extends AbstractPreferenceController implements public class FinancedPrivacyPreferenceController extends BasePreferenceController implements
PreferenceControllerMixin { PreferenceControllerMixin {
private static final String PREF_KEY_FINANCED_PRIVACY = "financed_privacy";
private final PrivacyPreferenceControllerHelper mPrivacyPreferenceControllerHelper; private final PrivacyPreferenceControllerHelper mPrivacyPreferenceControllerHelper;
private final String mPreferenceKey;
public FinancedPrivacyPreferenceController(Context context) {
this(Objects.requireNonNull(context), PREF_KEY_FINANCED_PRIVACY);
}
public FinancedPrivacyPreferenceController(Context context, String key) { public FinancedPrivacyPreferenceController(Context context, String key) {
this(Objects.requireNonNull(context), new PrivacyPreferenceControllerHelper(context), key); this(Objects.requireNonNull(context), new PrivacyPreferenceControllerHelper(context), key);
@@ -45,10 +39,9 @@ public class FinancedPrivacyPreferenceController extends AbstractPreferenceContr
@VisibleForTesting @VisibleForTesting
FinancedPrivacyPreferenceController(Context context, FinancedPrivacyPreferenceController(Context context,
PrivacyPreferenceControllerHelper privacyPreferenceControllerHelper, String key) { PrivacyPreferenceControllerHelper privacyPreferenceControllerHelper, String key) {
super(Objects.requireNonNull(context)); super(Objects.requireNonNull(context), key);
mPrivacyPreferenceControllerHelper = Objects.requireNonNull( mPrivacyPreferenceControllerHelper = Objects.requireNonNull(
privacyPreferenceControllerHelper); privacyPreferenceControllerHelper);
this.mPreferenceKey = key;
} }
@Override @Override
@@ -57,12 +50,9 @@ public class FinancedPrivacyPreferenceController extends AbstractPreferenceContr
} }
@Override @Override
public boolean isAvailable() { public int getAvailabilityStatus() {
return mPrivacyPreferenceControllerHelper.isFinancedDevice(); return mPrivacyPreferenceControllerHelper.isFinancedDevice()
} ? AVAILABLE
: CONDITIONALLY_UNAVAILABLE;
@Override
public String getPreferenceKey() {
return mPreferenceKey;
} }
} }

View File

@@ -24,12 +24,6 @@ import com.android.settings.core.BasePreferenceController;
public class ScreenPinningPreferenceController extends BasePreferenceController { public class ScreenPinningPreferenceController extends BasePreferenceController {
private static final String KEY_SCREEN_PINNING = "screen_pinning_settings";
public ScreenPinningPreferenceController(Context context) {
this(context, KEY_SCREEN_PINNING);
}
public ScreenPinningPreferenceController(Context context, String key) { public ScreenPinningPreferenceController(Context context, String key) {
super(context, key); super(context, key);
} }
@@ -37,7 +31,7 @@ public class ScreenPinningPreferenceController extends BasePreferenceController
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return mContext.getResources().getBoolean(R.bool.config_show_screen_pinning_settings) return mContext.getResources().getBoolean(R.bool.config_show_screen_pinning_settings)
? AVAILABLE : UNSUPPORTED_ON_DEVICE; ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
} }
@Override @Override

View File

@@ -16,8 +16,6 @@
package com.android.settings.security; package com.android.settings.security;
import static com.android.settings.security.EncryptionStatusPreferenceController.PREF_KEY_ENCRYPTION_SECURITY_PAGE;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -27,10 +25,7 @@ import com.android.settings.biometrics.combination.CombinedBiometricProfileStatu
import com.android.settings.biometrics.face.FaceProfileStatusPreferenceController; import com.android.settings.biometrics.face.FaceProfileStatusPreferenceController;
import com.android.settings.biometrics.fingerprint.FingerprintProfileStatusPreferenceController; import com.android.settings.biometrics.fingerprint.FingerprintProfileStatusPreferenceController;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.enterprise.EnterprisePrivacyPreferenceController;
import com.android.settings.enterprise.FinancedPrivacyPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.security.trustagent.ManageTrustAgentsPreferenceController;
import com.android.settings.security.trustagent.TrustAgentListPreferenceController; import com.android.settings.security.trustagent.TrustAgentListPreferenceController;
import com.android.settings.widget.PreferenceCategoryController; import com.android.settings.widget.PreferenceCategoryController;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
@@ -96,13 +91,6 @@ public class SecurityAdvancedSettings extends DashboardFragment {
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context, private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
Lifecycle lifecycle, DashboardFragment host) { Lifecycle lifecycle, DashboardFragment host) {
final List<AbstractPreferenceController> controllers = new ArrayList<>(); final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new EnterprisePrivacyPreferenceController(context));
controllers.add(new FinancedPrivacyPreferenceController(context));
controllers.add(new ManageTrustAgentsPreferenceController(context));
controllers.add(new ScreenPinningPreferenceController(context));
controllers.add(new SimLockPreferenceController(context));
controllers.add(new EncryptionStatusPreferenceController(context,
PREF_KEY_ENCRYPTION_SECURITY_PAGE));
controllers.add(new TrustAgentListPreferenceController(context, host, lifecycle)); controllers.add(new TrustAgentListPreferenceController(context, host, lifecycle));
final List<AbstractPreferenceController> profileSecurityControllers = new ArrayList<>(); final List<AbstractPreferenceController> profileSecurityControllers = new ArrayList<>();

View File

@@ -33,17 +33,11 @@ import java.util.List;
public class SimLockPreferenceController extends BasePreferenceController { public class SimLockPreferenceController extends BasePreferenceController {
private static final String KEY_SIM_LOCK = "sim_lock_settings";
private final CarrierConfigManager mCarrierConfigManager; private final CarrierConfigManager mCarrierConfigManager;
private final UserManager mUserManager; private final UserManager mUserManager;
private final SubscriptionManager mSubscriptionManager; private final SubscriptionManager mSubscriptionManager;
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
public SimLockPreferenceController(Context context) {
this(context, KEY_SIM_LOCK);
}
public SimLockPreferenceController(Context context, String key) { public SimLockPreferenceController(Context context, String key) {
super(context, key); super(context, key);
mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);

View File

@@ -19,7 +19,6 @@ package com.android.settings.security.trustagent;
import android.content.Context; import android.content.Context;
import android.os.UserHandle; import android.os.UserHandle;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
@@ -30,17 +29,11 @@ import com.android.settings.security.SecurityFeatureProvider;
public class ManageTrustAgentsPreferenceController extends BasePreferenceController { public class ManageTrustAgentsPreferenceController extends BasePreferenceController {
@VisibleForTesting
static final String KEY_MANAGE_TRUST_AGENTS = "manage_trust_agents";
private static final int MY_USER_ID = UserHandle.myUserId(); private static final int MY_USER_ID = UserHandle.myUserId();
private final LockPatternUtils mLockPatternUtils; private final LockPatternUtils mLockPatternUtils;
private TrustAgentManager mTrustAgentManager; private TrustAgentManager mTrustAgentManager;
public ManageTrustAgentsPreferenceController(Context context) {
this(context, KEY_MANAGE_TRUST_AGENTS);
}
public ManageTrustAgentsPreferenceController(Context context, String key) { public ManageTrustAgentsPreferenceController(Context context, String key) {
super(context, key); super(context, key);
final SecurityFeatureProvider securityFeatureProvider = FeatureFactory.getFactory(context) final SecurityFeatureProvider securityFeatureProvider = FeatureFactory.getFactory(context)

View File

@@ -46,7 +46,7 @@ public class ScreenPinningPreferenceControllerTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mController = new ScreenPinningPreferenceController(mContext); mController = new ScreenPinningPreferenceController(mContext, "key");
mPreference = new Preference(mContext); mPreference = new Preference(mContext);
mPreference.setKey(mController.getPreferenceKey()); mPreference.setKey(mController.getPreferenceKey());
} }

View File

@@ -77,7 +77,7 @@ public class SimLockPreferenceControllerTest {
shadowApplication.setSystemService(Context.USER_SERVICE, mUserManager); shadowApplication.setSystemService(Context.USER_SERVICE, mUserManager);
shadowApplication.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager); shadowApplication.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager);
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mController = new SimLockPreferenceController(mContext); mController = new SimLockPreferenceController(mContext, "key");
mPreference = new Preference(mContext); mPreference = new Preference(mContext);
mPreference.setKey(mController.getPreferenceKey()); mPreference.setKey(mController.getPreferenceKey());
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);

View File

@@ -64,7 +64,7 @@ public class ManageTrustAgentsPreferenceControllerTest {
.thenReturn(mLockPatternUtils); .thenReturn(mLockPatternUtils);
when(mFeatureFactory.securityFeatureProvider.getTrustAgentManager()) when(mFeatureFactory.securityFeatureProvider.getTrustAgentManager())
.thenReturn(mTrustAgentManager); .thenReturn(mTrustAgentManager);
mController = new ManageTrustAgentsPreferenceController(mContext); mController = new ManageTrustAgentsPreferenceController(mContext, "key");
mPreference = new Preference(mContext); mPreference = new Preference(mContext);
mPreference.setKey(mController.getPreferenceKey()); mPreference.setKey(mController.getPreferenceKey());
} }