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

Commit f93fcd36 authored by Fan Zhang's avatar Fan Zhang
Browse files

Update screen pinning state whenever it changes.

Change-Id: I98f0a7b0afcc76bcf822786e6cf3ea37004db1a8
Fixes: 71845181
Test: robotests
parent 66898b0c
Loading
Loading
Loading
Loading
+11 −15
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.settings.security;
import android.content.Context;
import android.provider.Settings;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
@@ -38,19 +37,16 @@ public class ScreenPinningPreferenceController extends BasePreferenceController
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        final Preference preference = screen.findPreference(getPreferenceKey());
        if (preference == null) {
            return;
        }
        if (Settings.System.getInt(mContext.getContentResolver(),
                Settings.System.LOCK_TO_APP_ENABLED, 0) != 0) {
            preference.setSummary(
                    mContext.getString(R.string.switch_on_text));
        } else {
            preference.setSummary(
                    mContext.getString(R.string.switch_off_text));
    public String getSummary() {
        return Settings.System.getInt(mContext.getContentResolver(),
                Settings.System.LOCK_TO_APP_ENABLED, 0) != 0
                ? mContext.getString(R.string.switch_on_text)
                : mContext.getString(R.string.switch_off_text);
    }

    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        preference.setSummary(getSummary());
    }
}
+4 −15
Original line number Diff line number Diff line
@@ -18,23 +18,19 @@ package com.android.settings.security;

import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.provider.Settings;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
@@ -43,10 +39,6 @@ import org.robolectric.annotation.Config;
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class ScreenPinningPreferenceControllerTest {

    @Mock
    private PreferenceScreen mScreen;

    private FakeFeatureFactory mFeatureFactory;
    private Context mContext;
    private ScreenPinningPreferenceController mController;
    private Preference mPreference;
@@ -55,12 +47,9 @@ public class ScreenPinningPreferenceControllerTest {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mContext = RuntimeEnvironment.application;
        mFeatureFactory = FakeFeatureFactory.setupForTest();
        mController = new ScreenPinningPreferenceController(mContext);
        mPreference = new Preference(mContext);
        mPreference.setKey(mController.getPreferenceKey());
        when(mScreen.findPreference(mController.getPreferenceKey()))
                .thenReturn(mPreference);
    }

    @After
@@ -75,22 +64,22 @@ public class ScreenPinningPreferenceControllerTest {
    }

    @Test
    public void displayPreference_isOff_shouldDisableOffSummary() {
    public void updateState_isOff_shouldDisableOffSummary() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.LOCK_TO_APP_ENABLED, 0);

        mController.displayPreference(mScreen);
        mController.updateState(mPreference);

        assertThat(mPreference.getSummary())
                .isEqualTo(mContext.getString(R.string.switch_off_text));
    }

    @Test
    public void displayPreference_isOn_shouldDisableOnSummary() {
    public void updateState_isOn_shouldDisableOnSummary() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.LOCK_TO_APP_ENABLED, 1);

        mController.displayPreference(mScreen);
        mController.updateState(mPreference);

        assertThat(mPreference.getSummary())
                .isEqualTo(mContext.getString(R.string.switch_on_text));