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:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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();
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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 */);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user