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

Commit 133ffc9c authored by Edgar Wang's avatar Edgar Wang Committed by Raff Tsai
Browse files

Show admin dialog when preference is disabled by Device Admin

Fixes: 130694312
Test: manual & robotest
Change-Id: I9c6487ac056ec3d784bd6f6901e96869e27e0b3e
parent 9fcb35a0
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import androidx.fragment.app.FragmentManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.RestrictedSwitchPreference;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
@@ -114,9 +113,11 @@ public class RoamingPreferenceController extends TelephonyTogglePreferenceContro
    public void updateState(Preference preference) {
        super.updateState(preference);
        final RestrictedSwitchPreference switchPreference = (RestrictedSwitchPreference) preference;
        if (!switchPreference.isDisabledByAdmin()) {
            switchPreference.setEnabled(mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID);
            switchPreference.setChecked(isChecked());
        }
    }

    @VisibleForTesting
    boolean isDialogNeeded() {
+22 −1
Original line number Diff line number Diff line
@@ -18,9 +18,12 @@ package com.android.settings.network.telephony;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.os.PersistableBundle;
@@ -76,7 +79,7 @@ public class RoamingPreferenceControllerTest {
                SubscriptionManager.INVALID_SUBSCRIPTION_ID);
        doReturn(mFragmentTransaction).when(mFragmentManager).beginTransaction();

        mPreference = new RestrictedSwitchPreference(mContext);
        mPreference = spy(new RestrictedSwitchPreference(mContext));
        mController = new RoamingPreferenceController(mContext, "roaming");
        mController.init(mFragmentManager, SUB_ID);
        mPreference.setKey(mController.getPreferenceKey());
@@ -140,4 +143,22 @@ public class RoamingPreferenceControllerTest {
        assertThat(mPreference.isEnabled()).isTrue();
        assertThat(mPreference.isChecked()).isTrue();
    }

    @Test
    public void updateState_isNotDisabledByAdmin_shouldInvokeSetEnabled() {
        when(mPreference.isDisabledByAdmin()).thenReturn(false);

        mController.updateState(mPreference);

        verify(mPreference).setEnabled(anyBoolean());
    }

    @Test
    public void updateState_isDisabledByAdmin_shouldNotInvokeSetEnabled() {
        when(mPreference.isDisabledByAdmin()).thenReturn(true);

        mController.updateState(mPreference);

        verify(mPreference, never()).setEnabled(anyBoolean());
    }
}