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

Commit 971e9ce2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Accept EnforcingAdmin in restricted prefs" into main

parents 3f2474e0 595465bb
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settingslib;

import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;

import android.app.admin.EnforcingAdmin;
import android.content.Context;
import android.os.UserHandle;
import android.util.AttributeSet;
@@ -144,7 +145,7 @@ public class RestrictedSelectorWithWidgetPreference extends SelectorWithWidgetPr
    @Override
    public void setEnabled(boolean enabled) {
        if (enabled && isDisabledByAdmin()) {
            mHelper.setDisabledByAdmin(/* admin= */ null);
            mHelper.setDisabledByEnforcingAdmin(/* admin= */ null);
            return;
        }
        super.setEnabled(enabled);
@@ -170,4 +171,16 @@ public class RestrictedSelectorWithWidgetPreference extends SelectorWithWidgetPr
            notifyChanged();
        }
    }

    /**
     * Disable preference based on the enforcing admin.
     *
     * @param admin details of the admin who enforced the restriction. If it is {@code null}, then
     *     this preference will be enabled. Otherwise, it will be disabled.
     */
    public void setDisabledByAdmin(@Nullable EnforcingAdmin admin) {
        if (mHelper.setDisabledByEnforcingAdmin(admin)) {
            notifyChanged();
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -88,7 +88,7 @@ public class RestrictedSliderPreference extends SliderPreference implements
    @Override
    public void setEnabled(boolean enabled) {
        if (enabled && mHelper.isDisabledByAdmin()) {
            mHelper.setDisabledByAdmin(null);
            mHelper.setDisabledByEnforcingAdmin(null);
            return;
        }

+12 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;

import android.app.AppOpsManager;
import android.app.admin.DevicePolicyManager;
import android.app.admin.EnforcingAdmin;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
@@ -254,7 +255,7 @@ public class RestrictedSwitchPreference extends SwitchPreferenceCompat implement
    public void setEnabled(boolean enabled) {
        boolean changed = false;
        if (enabled && isDisabledByAdmin()) {
            mHelper.setDisabledByAdmin(null);
            mHelper.setDisabledByEnforcingAdmin(null);
            changed = true;
        }
        if (enabled && isDisabledByEcm()) {
@@ -272,6 +273,16 @@ public class RestrictedSwitchPreference extends SwitchPreferenceCompat implement
        }
    }

    /**
     * Sets the preference to be disabled by the given admin. If {@code admin} is null, it'll set
     * the preference enabled.
     */
    public void setDisabledByAdmin(@Nullable EnforcingAdmin admin) {
        if (mHelper.setDisabledByEnforcingAdmin(admin)) {
            notifyChanged();
        }
    }

    public boolean isDisabledByAdmin() {
        return mHelper.isDisabledByAdmin();
    }
+14 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settingslib;

import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;

import android.app.admin.EnforcingAdmin;
import android.content.Context;
import android.os.UserHandle;
import android.util.AttributeSet;
@@ -98,7 +99,7 @@ public class RestrictedTopLevelPreference extends Preference implements
    @Override
    public void setEnabled(boolean enabled) {
        if (enabled && isDisabledByAdmin()) {
            mHelper.setDisabledByAdmin(/* admin= */ null);
            mHelper.setDisabledByEnforcingAdmin(/* admin= */ null);
            return;
        }
        super.setEnabled(enabled);
@@ -124,4 +125,16 @@ public class RestrictedTopLevelPreference extends Preference implements
            notifyChanged();
        }
    }

    /**
     * Disable preference based on the enforcing admin.
     *
     * @param admin details of the admin who enforced the restriction. If it is {@code null}, then
     *              this preference will be enabled. Otherwise, it will be disabled.
     */
    public void setDisabledByAdmin(EnforcingAdmin admin) {
        if (mHelper.setDisabledByEnforcingAdmin(admin)) {
            notifyChanged();
        }
    }
}
+29 −0
Original line number Diff line number Diff line
@@ -33,14 +33,18 @@ import static org.mockito.Mockito.when;
import android.app.admin.Authority;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyResourcesManager;
import android.app.admin.DpcAuthority;
import android.app.admin.EnforcingAdmin;
import android.app.admin.SystemAuthority;
import android.app.admin.flags.Flags;
import android.app.ecm.EnhancedConfirmationManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.UserHandle;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityManager;
@@ -51,6 +55,7 @@ import androidx.test.core.app.ApplicationProvider;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
@@ -60,6 +65,9 @@ import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class RestrictedSwitchPreferenceTest {

    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    private static final int SIZE = 50;
    private final Authority mAdvancedProtectionAuthority = new SystemAuthority(
            ADVANCED_PROTECTION_SYSTEM_ENTITY);
@@ -190,4 +198,25 @@ public class RestrictedSwitchPreferenceTest {

        assertThat(mPreference.getSummary().toString()).isEqualTo("test");
    }

    @EnableFlags(Flags.FLAG_POLICY_TRANSPARENCY_REFACTOR_ENABLED)
    @Test
    public void setDisabledByAdmin_withAccessibility_keepsDisabledSummary() {
        when(mDevicePolicyResourcesManager.getString(any(), any())).thenReturn("test");
        when(mContext.getString(
                com.android.settingslib.widget.restricted.R.string.disabled_by_admin))
                .thenReturn("test");
        doNothing().when(mContext).startActivityAsUser(any(), any());
        when(mAccessibilityManager.isEnabled()).thenReturn(true);
        EnforcingAdmin enforcingAdmin = new EnforcingAdmin("pkg.test", DpcAuthority.DPC_AUTHORITY,
                UserHandle.of(UserHandle.myUserId()), new ComponentName("admin", "adminclass"));

        mPreference.setDisabledByAdmin(enforcingAdmin);

        assertThat(mPreference.getSummary().toString()).isEqualTo("test");

        mPreference.performClick();

        assertThat(mPreference.getSummary().toString()).isEqualTo("test");
    }
}
Loading