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
This commit is contained in:
Fan Zhang
2017-11-07 10:57:47 -08:00
parent 2260321fd8
commit b5f5ffbece
46 changed files with 202 additions and 1048 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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();

View File

@@ -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

View File

@@ -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

View File

@@ -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 */);
}
};
}

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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