Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4550e939 authored by Neil Fuller's avatar Neil Fuller Committed by Android (Google) Code Review
Browse files

Merge "(Re)Introduce "enabled by admin" UI state"

parents 2b66ff61 8e727b4d
Loading
Loading
Loading
Loading
+20 −10
Original line number Diff line number Diff line
@@ -53,15 +53,24 @@ public class AutoTimePreferenceController extends AbstractPreferenceController
                getTimeCapabilitiesAndConfig().getCapabilities();
        int capability = timeCapabilities.getConfigureAutoDetectionEnabledCapability();

        // The preference only has two states: present and not present. The preference is never
        // present but disabled.
        if (capability == CAPABILITY_NOT_SUPPORTED
                || capability == CAPABILITY_NOT_ALLOWED
                || capability == CAPABILITY_NOT_APPLICABLE) {
        // The preference has three states: visible, not visible, and visible but disabled.
        // This method handles the "is visible?" check.
        switch (capability) {
            case CAPABILITY_NOT_SUPPORTED:
                return false;
        } else if (capability == CAPABILITY_POSSESSED) {
            case CAPABILITY_POSSESSED:
                return true;
        } else {
            case CAPABILITY_NOT_ALLOWED:
                // This case is expected for enterprise restrictions, where the toggle should be
                // present but disabled. Disabling is handled declaratively via the
                // settings:userRestriction attribute in .xml. The client-side logic is expected to
                // concur with the capabilities logic in the system server.
                return true;
            case CAPABILITY_NOT_APPLICABLE:
                // CAPABILITY_NOT_APPLICABLE is not currently expected, so this is return value is
                // arbitrary.
                return true;
            default:
                throw new IllegalStateException("Unknown capability=" + capability);
        }
    }
@@ -71,6 +80,7 @@ public class AutoTimePreferenceController extends AbstractPreferenceController
        if (!(preference instanceof SwitchPreference)) {
            return;
        }

        ((SwitchPreference) preference).setChecked(isEnabled());
    }

+21 −11
Original line number Diff line number Diff line
@@ -27,11 +27,11 @@ import android.app.time.TimeZoneCapabilitiesAndConfig;
import android.app.time.TimeZoneConfiguration;
import android.content.Context;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -63,15 +63,24 @@ public class AutoTimeZonePreferenceController extends AbstractPreferenceControll
                getTimeZoneCapabilitiesAndConfig().getCapabilities();
        int capability = timeZoneCapabilities.getConfigureAutoDetectionEnabledCapability();

        // The preference only has two states: present and not present. The preference is never
        // present but disabled.
        if (capability == CAPABILITY_NOT_SUPPORTED
                || capability == CAPABILITY_NOT_ALLOWED
                || capability == CAPABILITY_NOT_APPLICABLE) {
        // The preference has three states: visible, not visible, and visible but disabled.
        // This method handles the "is visible?" check.
        switch (capability) {
            case CAPABILITY_NOT_SUPPORTED:
                return false;
        } else if (capability == CAPABILITY_POSSESSED) {
            case CAPABILITY_POSSESSED:
                return true;
        } else {
            case CAPABILITY_NOT_ALLOWED:
                // This case is expected for enterprise restrictions, where the toggle should be
                // present but disabled. Disabling is handled declaratively via the
                // settings:userRestriction attribute in .xml. The client-side logic is expected to
                // concur with the capabilities logic in the system server.
                return true;
            case CAPABILITY_NOT_APPLICABLE:
                // CAPABILITY_NOT_APPLICABLE is not currently expected, so this is return value is
                // arbitrary.
                return true;
            default:
                throw new IllegalStateException("Unknown capability=" + capability);
        }
    }
@@ -86,6 +95,7 @@ public class AutoTimeZonePreferenceController extends AbstractPreferenceControll
        if (!(preference instanceof SwitchPreference)) {
            return;
        }

        ((SwitchPreference) preference).setChecked(isEnabled());
    }