diff options
author | Fan Zhang <zhfan@google.com> | 2017-11-07 10:57:47 -0800 |
---|---|---|
committer | Fan Zhang <zhfan@google.com> | 2017-11-07 12:58:48 -0800 |
commit | b5f5ffbece14b4f2882144f465ee67b35d5aa567 (patch) | |
tree | 7d5b6518956039cbc3096b2c767eca933b28c575 /src/com/android/settings/enterprise | |
parent | 2260321fd899120e2a049e40dfd3f38343ea9fc4 (diff) | |
download | packages_apps_Settings-b5f5ffbece14b4f2882144f465ee67b35d5aa567.tar.gz packages_apps_Settings-b5f5ffbece14b4f2882144f465ee67b35d5aa567.tar.bz2 packages_apps_Settings-b5f5ffbece14b4f2882144f465ee67b35d5aa567.zip |
Remove DynamicAvailabilityPreferenceController.
- This class is over complex to use, and get in the way of show/hide
pref when availability change.
- The function from DynamicAvailabilityPreferenceController can be done
with PreferenceCategoryController.
Bug: 68956750
Bug: 32953042
Test: robotests
Change-Id: Ia7b7e214c072b8c77f5de3d959fdb1dc79217f76
Diffstat (limited to 'src/com/android/settings/enterprise')
19 files changed, 108 insertions, 263 deletions
diff --git a/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceController.java b/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceController.java index be41e4d5e6..6b4e70d1ad 100644 --- a/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceController.java +++ b/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceController.java @@ -17,18 +17,14 @@ package com.android.settings.enterprise; import android.Manifest; import android.content.Context; -import com.android.settingslib.core.lifecycle.Lifecycle; - public class AdminGrantedCameraPermissionPreferenceController extends AdminGrantedPermissionsPreferenceControllerBase { private static final String KEY_ENTERPRISE_PRIVACY_NUMBER_CAMERA_ACCESS_PACKAGES = "enterprise_privacy_number_camera_access_packages"; - public AdminGrantedCameraPermissionPreferenceController(Context context, Lifecycle lifecycle, - boolean async) { - super(context, lifecycle, async, new String[] {Manifest.permission.CAMERA}, - Manifest.permission_group.CAMERA); + public AdminGrantedCameraPermissionPreferenceController(Context context, boolean async) { + super(context, async, new String[] {Manifest.permission.CAMERA}); } @Override diff --git a/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceController.java b/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceController.java index 77c6040378..5c6dfc263d 100644 --- a/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceController.java +++ b/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceController.java @@ -17,18 +17,15 @@ package com.android.settings.enterprise; import android.Manifest; import android.content.Context; -import com.android.settingslib.core.lifecycle.Lifecycle; - public class AdminGrantedLocationPermissionsPreferenceController extends AdminGrantedPermissionsPreferenceControllerBase { private static final String KEY_ENTERPRISE_PRIVACY_NUMBER_LOCATION_ACCESS_PACKAGES = "enterprise_privacy_number_location_access_packages"; - public AdminGrantedLocationPermissionsPreferenceController(Context context, Lifecycle lifecycle, - boolean async) { - super(context, lifecycle, async, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION, - Manifest.permission.ACCESS_FINE_LOCATION}, Manifest.permission_group.LOCATION); + public AdminGrantedLocationPermissionsPreferenceController(Context context, boolean async) { + super(context, async, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION}); } @Override diff --git a/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceController.java b/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceController.java index 9896420ead..74e260a0d7 100644 --- a/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceController.java +++ b/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceController.java @@ -17,18 +17,14 @@ package com.android.settings.enterprise; import android.Manifest; import android.content.Context; -import com.android.settingslib.core.lifecycle.Lifecycle; - public class AdminGrantedMicrophonePermissionPreferenceController extends AdminGrantedPermissionsPreferenceControllerBase { private static final String KEY_ENTERPRISE_PRIVACY_NUMBER_MICROPHONE_ACCESS_PACKAGES = "enterprise_privacy_number_microphone_access_packages"; - public AdminGrantedMicrophonePermissionPreferenceController(Context context, - Lifecycle lifecycle, boolean async) { - super(context, lifecycle, async, new String[] {Manifest.permission.RECORD_AUDIO}, - Manifest.permission_group.MICROPHONE); + public AdminGrantedMicrophonePermissionPreferenceController(Context context, boolean async) { + super(context, async, new String[] {Manifest.permission.RECORD_AUDIO}); } @Override diff --git a/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java b/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java index 9187cecd33..dd5ab34b9b 100644 --- a/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java +++ b/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java @@ -20,24 +20,22 @@ import android.support.v7.preference.Preference; import com.android.settings.R; import com.android.settings.applications.ApplicationFeatureProvider; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; public abstract class AdminGrantedPermissionsPreferenceControllerBase - extends DynamicAvailabilityPreferenceController { + extends AbstractPreferenceController implements PreferenceControllerMixin { private final String[] mPermissions; - private final String mPermissionGroup; private final ApplicationFeatureProvider mFeatureProvider; private final boolean mAsync; private boolean mHasApps; - public AdminGrantedPermissionsPreferenceControllerBase(Context context, Lifecycle lifecycle, - boolean async, String[] permissions, String permissionGroup) { - super(context, lifecycle); + public AdminGrantedPermissionsPreferenceControllerBase(Context context, boolean async, + String[] permissions) { + super(context); mPermissions = permissions; - mPermissionGroup = permissionGroup; mFeatureProvider = FeatureFactory.getFactory(context) .getApplicationFeatureProvider(context); mAsync = async; @@ -58,7 +56,6 @@ public abstract class AdminGrantedPermissionsPreferenceControllerBase mHasApps = true; } preference.setVisible(mHasApps); - notifyOnAvailabilityUpdate(mHasApps); }); } @@ -80,7 +77,6 @@ public abstract class AdminGrantedPermissionsPreferenceControllerBase mFeatureProvider.calculateNumberOfAppsWithAdminGrantedPermissions(mPermissions, false /* async */, (num) -> haveAppsWithAdminGrantedPermissions[0] = num > 0); mHasApps = haveAppsWithAdminGrantedPermissions[0]; - notifyOnAvailabilityUpdate(mHasApps); return mHasApps; } diff --git a/src/com/android/settings/enterprise/AlwaysOnVpnCurrentUserPreferenceController.java b/src/com/android/settings/enterprise/AlwaysOnVpnCurrentUserPreferenceController.java index ed91fef053..883fd36bf9 100644 --- a/src/com/android/settings/enterprise/AlwaysOnVpnCurrentUserPreferenceController.java +++ b/src/com/android/settings/enterprise/AlwaysOnVpnCurrentUserPreferenceController.java @@ -17,18 +17,18 @@ import android.content.Context; import android.support.v7.preference.Preference; import com.android.settings.R; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; public class AlwaysOnVpnCurrentUserPreferenceController - extends DynamicAvailabilityPreferenceController { + extends AbstractPreferenceController implements PreferenceControllerMixin { private static final String KEY_ALWAYS_ON_VPN_PRIMARY_USER = "always_on_vpn_primary_user"; private final EnterprisePrivacyFeatureProvider mFeatureProvider; - public AlwaysOnVpnCurrentUserPreferenceController(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public AlwaysOnVpnCurrentUserPreferenceController(Context context) { + super(context); mFeatureProvider = FeatureFactory.getFactory(context) .getEnterprisePrivacyFeatureProvider(context); } @@ -42,9 +42,7 @@ public class AlwaysOnVpnCurrentUserPreferenceController @Override public boolean isAvailable() { - final boolean available = mFeatureProvider.isAlwaysOnVpnSetInCurrentUser(); - notifyOnAvailabilityUpdate(available); - return available; + return mFeatureProvider.isAlwaysOnVpnSetInCurrentUser(); } @Override diff --git a/src/com/android/settings/enterprise/AlwaysOnVpnManagedProfilePreferenceController.java b/src/com/android/settings/enterprise/AlwaysOnVpnManagedProfilePreferenceController.java index db6fc1d5b0..a23af0cde5 100644 --- a/src/com/android/settings/enterprise/AlwaysOnVpnManagedProfilePreferenceController.java +++ b/src/com/android/settings/enterprise/AlwaysOnVpnManagedProfilePreferenceController.java @@ -15,27 +15,25 @@ package com.android.settings.enterprise; import android.content.Context; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; public class AlwaysOnVpnManagedProfilePreferenceController - extends DynamicAvailabilityPreferenceController { + extends AbstractPreferenceController implements PreferenceControllerMixin { private static final String KEY_ALWAYS_ON_VPN_MANAGED_PROFILE = "always_on_vpn_managed_profile"; private final EnterprisePrivacyFeatureProvider mFeatureProvider; - public AlwaysOnVpnManagedProfilePreferenceController(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public AlwaysOnVpnManagedProfilePreferenceController(Context context) { + super(context); mFeatureProvider = FeatureFactory.getFactory(context) .getEnterprisePrivacyFeatureProvider(context); } @Override public boolean isAvailable() { - final boolean available = mFeatureProvider.isAlwaysOnVpnSetInManagedProfile(); - notifyOnAvailabilityUpdate(available); - return available; + return mFeatureProvider.isAlwaysOnVpnSetInManagedProfile(); } @Override diff --git a/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java b/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java index 30da90718a..e328fc579e 100644 --- a/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java +++ b/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java @@ -20,16 +20,13 @@ import android.support.v7.preference.Preference; import com.android.settings.R; -import com.android.settingslib.core.lifecycle.Lifecycle; - public class CaCertsCurrentUserPreferenceController extends CaCertsPreferenceControllerBase { @VisibleForTesting static final String CA_CERTS_CURRENT_USER = "ca_certs_current_user"; - public CaCertsCurrentUserPreferenceController(Context context, - Lifecycle lifecycle) { - super(context, lifecycle); + public CaCertsCurrentUserPreferenceController(Context context) { + super(context); } @Override diff --git a/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java b/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java index 2b4e72d724..94b923ff67 100644 --- a/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java +++ b/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java @@ -17,16 +17,13 @@ package com.android.settings.enterprise; import android.content.Context; import android.support.annotation.VisibleForTesting; -import com.android.settingslib.core.lifecycle.Lifecycle; - public class CaCertsManagedProfilePreferenceController extends CaCertsPreferenceControllerBase { @VisibleForTesting static final String CA_CERTS_MANAGED_PROFILE = "ca_certs_managed_profile"; - public CaCertsManagedProfilePreferenceController(Context context, - Lifecycle lifecycle) { - super(context, lifecycle); + public CaCertsManagedProfilePreferenceController(Context context) { + super(context); } @Override diff --git a/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java b/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java index 8009caf6fe..b9df20a728 100644 --- a/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java +++ b/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java @@ -18,17 +18,17 @@ import android.content.Context; import android.support.v7.preference.Preference; import com.android.settings.R; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; public abstract class CaCertsPreferenceControllerBase - extends DynamicAvailabilityPreferenceController { + extends AbstractPreferenceController implements PreferenceControllerMixin { protected final EnterprisePrivacyFeatureProvider mFeatureProvider; - public CaCertsPreferenceControllerBase(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public CaCertsPreferenceControllerBase(Context context) { + super(context); mFeatureProvider = FeatureFactory.getFactory(context) .getEnterprisePrivacyFeatureProvider(context); } @@ -42,9 +42,7 @@ public abstract class CaCertsPreferenceControllerBase @Override public boolean isAvailable() { - final boolean available = getNumberOfCaCerts() > 0; - notifyOnAvailabilityUpdate(available); - return available; + return getNumberOfCaCerts() > 0; } protected abstract int getNumberOfCaCerts(); diff --git a/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceController.java b/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceController.java index cced8e8526..1086c0e059 100644 --- a/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceController.java +++ b/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceController.java @@ -18,21 +18,20 @@ import android.support.v7.preference.Preference; import com.android.settings.R; import com.android.settings.applications.ApplicationFeatureProvider; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; public class EnterpriseInstalledPackagesPreferenceController - extends DynamicAvailabilityPreferenceController { + extends AbstractPreferenceController implements PreferenceControllerMixin { private static final String KEY_NUMBER_ENTERPRISE_INSTALLED_PACKAGES = "number_enterprise_installed_packages"; private final ApplicationFeatureProvider mFeatureProvider; private final boolean mAsync; - public EnterpriseInstalledPackagesPreferenceController(Context context, Lifecycle lifecycle, - boolean async) { - super(context, lifecycle); + public EnterpriseInstalledPackagesPreferenceController(Context context, boolean async) { + super(context); mFeatureProvider = FeatureFactory.getFactory(context) .getApplicationFeatureProvider(context); mAsync = async; @@ -53,7 +52,6 @@ public class EnterpriseInstalledPackagesPreferenceController } preference.setVisible(available); - notifyOnAvailabilityUpdate(available); }); } @@ -72,9 +70,8 @@ public class EnterpriseInstalledPackagesPreferenceController final Boolean[] haveEnterpriseInstalledPackages = { null }; mFeatureProvider.calculateNumberOfPolicyInstalledApps(false /* async */, (num) -> haveEnterpriseInstalledPackages[0] = num > 0); - final boolean available = haveEnterpriseInstalledPackages[0]; - notifyOnAvailabilityUpdate(available); - return available; + return haveEnterpriseInstalledPackages[0]; + } @Override diff --git a/src/com/android/settings/enterprise/EnterprisePrivacyPreferenceController.java b/src/com/android/settings/enterprise/EnterprisePrivacyPreferenceController.java index 6ec091bbca..11fc29e78e 100644 --- a/src/com/android/settings/enterprise/EnterprisePrivacyPreferenceController.java +++ b/src/com/android/settings/enterprise/EnterprisePrivacyPreferenceController.java @@ -17,23 +17,27 @@ import android.content.Context; import android.support.v7.preference.Preference; import com.android.settings.R; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; -public class EnterprisePrivacyPreferenceController extends DynamicAvailabilityPreferenceController { +public class EnterprisePrivacyPreferenceController extends AbstractPreferenceController implements + PreferenceControllerMixin { private static final String KEY_ENTERPRISE_PRIVACY = "enterprise_privacy"; private final EnterprisePrivacyFeatureProvider mFeatureProvider; - public EnterprisePrivacyPreferenceController(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public EnterprisePrivacyPreferenceController(Context context) { + super(context); mFeatureProvider = FeatureFactory.getFactory(context) .getEnterprisePrivacyFeatureProvider(context); } @Override public void updateState(Preference preference) { + if (preference == null) { + return; + } final String organizationName = mFeatureProvider.getDeviceOwnerOrganizationName(); if (organizationName == null) { preference.setSummary(R.string.enterprise_privacy_settings_summary_generic); @@ -45,9 +49,7 @@ public class EnterprisePrivacyPreferenceController extends DynamicAvailabilityPr @Override public boolean isAvailable() { - final boolean available = mFeatureProvider.hasDeviceOwner(); - notifyOnAvailabilityUpdate(available); - return available; + return mFeatureProvider.hasDeviceOwner(); } @Override diff --git a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java index 4caec302cc..0628dbb826 100644 --- a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java +++ b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java @@ -21,12 +21,11 @@ import android.provider.SearchIndexableResource; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; -import com.android.settings.core.DynamicAvailabilityPreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.widget.PreferenceCategoryController; import com.android.settingslib.core.AbstractPreferenceController; -import com.android.settingslib.core.lifecycle.Lifecycle; import java.util.ArrayList; import java.util.Arrays; @@ -53,45 +52,41 @@ public class EnterprisePrivacySettings extends DashboardFragment { @Override protected List<AbstractPreferenceController> getPreferenceControllers(Context context) { - return buildPreferenceControllers(context, getLifecycle(), true /* async */); + return buildPreferenceControllers(context, true /* async */); } private static List<AbstractPreferenceController> buildPreferenceControllers(Context context, - Lifecycle lifecycle, boolean async) { + boolean async) { final List<AbstractPreferenceController> controllers = new ArrayList<>(); controllers.add(new NetworkLogsPreferenceController(context)); controllers.add(new BugReportsPreferenceController(context)); controllers.add(new SecurityLogsPreferenceController(context)); - final List<DynamicAvailabilityPreferenceController> exposureChangesCategoryControllers = + final List<AbstractPreferenceController> exposureChangesCategoryControllers = new ArrayList<>(); exposureChangesCategoryControllers.add(new EnterpriseInstalledPackagesPreferenceController( - context, lifecycle, async)); + context, async)); exposureChangesCategoryControllers.add( - new AdminGrantedLocationPermissionsPreferenceController(context, lifecycle, async)); + new AdminGrantedLocationPermissionsPreferenceController(context, async)); exposureChangesCategoryControllers.add( - new AdminGrantedMicrophonePermissionPreferenceController(context, lifecycle, - async)); + new AdminGrantedMicrophonePermissionPreferenceController(context, async)); exposureChangesCategoryControllers.add(new AdminGrantedCameraPermissionPreferenceController( - context, lifecycle, async)); + context, async)); exposureChangesCategoryControllers.add(new EnterpriseSetDefaultAppsPreferenceController( - context, lifecycle)); + context)); exposureChangesCategoryControllers.add(new AlwaysOnVpnCurrentUserPreferenceController( - context, lifecycle)); + context)); exposureChangesCategoryControllers.add(new AlwaysOnVpnManagedProfilePreferenceController( - context, lifecycle)); - exposureChangesCategoryControllers.add(new ImePreferenceController(context, lifecycle)); - exposureChangesCategoryControllers.add(new GlobalHttpProxyPreferenceController(context, - lifecycle)); - exposureChangesCategoryControllers.add(new CaCertsCurrentUserPreferenceController( - context, lifecycle)); + context)); + exposureChangesCategoryControllers.add(new ImePreferenceController(context)); + exposureChangesCategoryControllers.add(new GlobalHttpProxyPreferenceController(context)); + exposureChangesCategoryControllers.add(new CaCertsCurrentUserPreferenceController(context)); exposureChangesCategoryControllers.add(new CaCertsManagedProfilePreferenceController( - context, lifecycle)); + context)); controllers.addAll(exposureChangesCategoryControllers); - controllers.add(new ExposureChangesCategoryPreferenceController(context, lifecycle, - exposureChangesCategoryControllers, async)); - controllers.add(new FailedPasswordWipeCurrentUserPreferenceController(context, lifecycle)); - controllers.add(new FailedPasswordWipeManagedProfilePreferenceController(context, - lifecycle)); + controllers.add(new PreferenceCategoryController(context, "exposure_changes_category", + exposureChangesCategoryControllers)); + controllers.add(new FailedPasswordWipeCurrentUserPreferenceController(context)); + controllers.add(new FailedPasswordWipeManagedProfilePreferenceController(context)); return controllers; } @@ -114,11 +109,12 @@ public class EnterprisePrivacySettings extends DashboardFragment { final SearchIndexableResource sir = new SearchIndexableResource(context); sir.xmlResId = R.xml.enterprise_privacy_settings; return Arrays.asList(sir); - } + } - @Override - public List<AbstractPreferenceController> getPreferenceControllers(Context context) { - return buildPreferenceControllers(context, null /* lifecycle */, false /* async */); + @Override + public List<AbstractPreferenceController> getPreferenceControllers( + Context context) { + return buildPreferenceControllers(context, false /* async */); } }; } diff --git a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java index 537ef780d1..0f9584beeb 100644 --- a/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java +++ b/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java @@ -21,20 +21,20 @@ import android.support.v7.preference.Preference; import com.android.settings.R; import com.android.settings.applications.ApplicationFeatureProvider; import com.android.settings.applications.EnterpriseDefaultApps; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settings.users.UserFeatureProvider; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; public class EnterpriseSetDefaultAppsPreferenceController - extends DynamicAvailabilityPreferenceController { + extends AbstractPreferenceController implements PreferenceControllerMixin { private static final String KEY_DEFAULT_APPS = "number_enterprise_set_default_apps"; private final ApplicationFeatureProvider mApplicationFeatureProvider; private final UserFeatureProvider mUserFeatureProvider; - public EnterpriseSetDefaultAppsPreferenceController(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public EnterpriseSetDefaultAppsPreferenceController(Context context) { + super(context); final FeatureFactory factory = FeatureFactory.getFactory(context); mApplicationFeatureProvider = factory.getApplicationFeatureProvider(context); mUserFeatureProvider = factory.getUserFeatureProvider(context); @@ -49,9 +49,7 @@ public class EnterpriseSetDefaultAppsPreferenceController @Override public boolean isAvailable() { - final boolean available = getNumberOfEnterpriseSetDefaultApps() > 0; - notifyOnAvailabilityUpdate(available); - return available; + return getNumberOfEnterpriseSetDefaultApps() > 0; } @Override diff --git a/src/com/android/settings/enterprise/ExposureChangesCategoryPreferenceController.java b/src/com/android/settings/enterprise/ExposureChangesCategoryPreferenceController.java deleted file mode 100644 index 7833325b99..0000000000 --- a/src/com/android/settings/enterprise/ExposureChangesCategoryPreferenceController.java +++ /dev/null @@ -1,111 +0,0 @@ - -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the - * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -package com.android.settings.enterprise; - -import android.content.Context; -import android.support.v7.preference.Preference; - -import com.android.settings.core.DynamicAvailabilityPreferenceController; -import com.android.settings.core.PreferenceAvailabilityObserver; -import com.android.settingslib.core.lifecycle.Lifecycle; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -/** - * A controller that hides a {@link android.support.v7.preference.PreferenceGroup} when none of the - * {@link Preference}s inside it are visible. - * - * TODO(b/62051162): Use {@link android.support.v7.preference.PreferenceGroup}'s native ability to - * hide itself when all {@link Preference}s inside it are invisible when that functionality becomes - * available. This custom controller will still be needed to remove the - * {@link android.support.v7.preference.PreferenceGroup} from the search index as required (by - * having {@link #isAvailable()} return {@code false} if the method returns {@code false} for all - * {@link Preference}s in the {@link android.support.v7.preference.PreferenceGroup}). - */ -public class ExposureChangesCategoryPreferenceController - extends DynamicAvailabilityPreferenceController implements PreferenceAvailabilityObserver { - - private static final String KEY_EXPOSURE_CHANGES_CATEGORY = "exposure_changes_category"; - private final Set<String> mAvailablePrefs = new HashSet<String>(); - private Preference mPreference = null; - private boolean mControllingUi; - - /** - * When {@code controllingUi} is {@code true}, some of the preferences may have their visibility - * determined asynchronously. In this case, {@link #isAvailable()} must always return {@code - * true} and the group should be hidden using {@link Preference#setVisible()} if all preferences - * report that they are invisible. - * When {@code controllingUi} is {@code false}, we are running on the search indexer thread and - * visibility must be determined synchronously. {@link #isAvailable()} can rely on all - * preferences having their visibility determined already and should return whether the group is - * visible or not. - */ - public ExposureChangesCategoryPreferenceController(Context context, Lifecycle lifecycle, - List<DynamicAvailabilityPreferenceController> controllers, boolean controllingUi) { - super(context, lifecycle); - mControllingUi = controllingUi; - for (final DynamicAvailabilityPreferenceController controller : controllers) { - controller.setAvailabilityObserver(this); - } - } - - @Override - public void onPreferenceAvailabilityUpdated(String key, boolean available) { - if (available) { - mAvailablePrefs.add(key); - } else { - mAvailablePrefs.remove(key); - } - available = haveAnyVisiblePreferences(); - if (mControllingUi) { - notifyOnAvailabilityUpdate(available); - } - if (mPreference != null) { - mPreference.setVisible(available); - } - } - - @Override - public void updateState(Preference preference) { - mPreference = preference; - mPreference.setVisible(haveAnyVisiblePreferences()); - } - - @Override - public boolean isAvailable() { - if (mControllingUi) { - // When running on the main UI thread, some preferences determine their visibility - // asynchronously. Always return true here and determine the pref group's actual - // visibility as the other preferences report their visibility asynchronously via - // onPreferenceAvailabilityUpdated(). - return true; - } - final boolean available = haveAnyVisiblePreferences(); - notifyOnAvailabilityUpdate(available); - return available; - } - - @Override - public String getPreferenceKey() { - return KEY_EXPOSURE_CHANGES_CATEGORY; - } - - private boolean haveAnyVisiblePreferences() { - return mAvailablePrefs.size() > 0; - } -} diff --git a/src/com/android/settings/enterprise/FailedPasswordWipeCurrentUserPreferenceController.java b/src/com/android/settings/enterprise/FailedPasswordWipeCurrentUserPreferenceController.java index d7f8dc0506..f93025cdcb 100644 --- a/src/com/android/settings/enterprise/FailedPasswordWipeCurrentUserPreferenceController.java +++ b/src/com/android/settings/enterprise/FailedPasswordWipeCurrentUserPreferenceController.java @@ -15,16 +15,14 @@ package com.android.settings.enterprise; import android.content.Context; -import com.android.settingslib.core.lifecycle.Lifecycle; - public class FailedPasswordWipeCurrentUserPreferenceController extends FailedPasswordWipePreferenceControllerBase { private static final String KEY_FAILED_PASSWORD_WIPE_CURRENT_USER = "failed_password_wipe_current_user"; - public FailedPasswordWipeCurrentUserPreferenceController(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public FailedPasswordWipeCurrentUserPreferenceController(Context context) { + super(context); } @Override diff --git a/src/com/android/settings/enterprise/FailedPasswordWipeManagedProfilePreferenceController.java b/src/com/android/settings/enterprise/FailedPasswordWipeManagedProfilePreferenceController.java index 739003a588..5a0e7c8264 100644 --- a/src/com/android/settings/enterprise/FailedPasswordWipeManagedProfilePreferenceController.java +++ b/src/com/android/settings/enterprise/FailedPasswordWipeManagedProfilePreferenceController.java @@ -14,7 +14,6 @@ package com.android.settings.enterprise; import android.content.Context; -import com.android.settingslib.core.lifecycle.Lifecycle; public class FailedPasswordWipeManagedProfilePreferenceController extends FailedPasswordWipePreferenceControllerBase { @@ -22,9 +21,8 @@ public class FailedPasswordWipeManagedProfilePreferenceController private static final String KEY_FAILED_PASSWORD_WIPE_MANAGED_PROFILE = "failed_password_wipe_managed_profile"; - public FailedPasswordWipeManagedProfilePreferenceController(Context context, - Lifecycle lifecycle) { - super(context, lifecycle); + public FailedPasswordWipeManagedProfilePreferenceController(Context context) { + super(context); } @Override diff --git a/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBase.java b/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBase.java index 298f911999..3c78c21335 100644 --- a/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBase.java +++ b/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBase.java @@ -15,21 +15,20 @@ package com.android.settings.enterprise; import android.content.Context; -import android.content.res.Resources; import android.support.v7.preference.Preference; import com.android.settings.R; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; public abstract class FailedPasswordWipePreferenceControllerBase - extends DynamicAvailabilityPreferenceController { + extends AbstractPreferenceController implements PreferenceControllerMixin { protected final EnterprisePrivacyFeatureProvider mFeatureProvider; - public FailedPasswordWipePreferenceControllerBase(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public FailedPasswordWipePreferenceControllerBase(Context context) { + super(context); mFeatureProvider = FeatureFactory.getFactory(context) .getEnterprisePrivacyFeatureProvider(context); } @@ -46,8 +45,6 @@ public abstract class FailedPasswordWipePreferenceControllerBase @Override public boolean isAvailable() { - final boolean available = getMaximumFailedPasswordsBeforeWipe() > 0; - notifyOnAvailabilityUpdate(available); - return available; + return getMaximumFailedPasswordsBeforeWipe() > 0; } } diff --git a/src/com/android/settings/enterprise/GlobalHttpProxyPreferenceController.java b/src/com/android/settings/enterprise/GlobalHttpProxyPreferenceController.java index 55552b689a..04e63aa1e8 100644 --- a/src/com/android/settings/enterprise/GlobalHttpProxyPreferenceController.java +++ b/src/com/android/settings/enterprise/GlobalHttpProxyPreferenceController.java @@ -15,26 +15,25 @@ package com.android.settings.enterprise; import android.content.Context; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; -public class GlobalHttpProxyPreferenceController extends DynamicAvailabilityPreferenceController { +public class GlobalHttpProxyPreferenceController extends AbstractPreferenceController implements + PreferenceControllerMixin { private static final String KEY_GLOBAL_HTTP_PROXY = "global_http_proxy"; private final EnterprisePrivacyFeatureProvider mFeatureProvider; - public GlobalHttpProxyPreferenceController(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public GlobalHttpProxyPreferenceController(Context context) { + super(context); mFeatureProvider = FeatureFactory.getFactory(context) .getEnterprisePrivacyFeatureProvider(context); } @Override public boolean isAvailable() { - final boolean available = mFeatureProvider.isGlobalHttpProxySet(); - notifyOnAvailabilityUpdate(available); - return available; + return mFeatureProvider.isGlobalHttpProxySet(); } @Override diff --git a/src/com/android/settings/enterprise/ImePreferenceController.java b/src/com/android/settings/enterprise/ImePreferenceController.java index ca52fc00f3..7a4ea2cea8 100644 --- a/src/com/android/settings/enterprise/ImePreferenceController.java +++ b/src/com/android/settings/enterprise/ImePreferenceController.java @@ -15,21 +15,21 @@ package com.android.settings.enterprise; import android.content.Context; -import android.content.res.Resources; import android.support.v7.preference.Preference; import com.android.settings.R; -import com.android.settings.core.DynamicAvailabilityPreferenceController; +import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; -import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.core.AbstractPreferenceController; -public class ImePreferenceController extends DynamicAvailabilityPreferenceController { +public class ImePreferenceController extends AbstractPreferenceController implements + PreferenceControllerMixin { private static final String KEY_INPUT_METHOD = "input_method"; private final EnterprisePrivacyFeatureProvider mFeatureProvider; - public ImePreferenceController(Context context, Lifecycle lifecycle) { - super(context, lifecycle); + public ImePreferenceController(Context context) { + super(context); mFeatureProvider = FeatureFactory.getFactory(context) .getEnterprisePrivacyFeatureProvider(context); } @@ -37,15 +37,13 @@ public class ImePreferenceController extends DynamicAvailabilityPreferenceContro @Override public void updateState(Preference preference) { preference.setSummary(mContext.getResources().getString( - R.string.enterprise_privacy_input_method_name, - mFeatureProvider.getImeLabelIfOwnerSet())); + R.string.enterprise_privacy_input_method_name, + mFeatureProvider.getImeLabelIfOwnerSet())); } @Override public boolean isAvailable() { - final boolean available = mFeatureProvider.getImeLabelIfOwnerSet() != null; - notifyOnAvailabilityUpdate(available); - return available; + return mFeatureProvider.getImeLabelIfOwnerSet() != null; } @Override |