From f93fcd366af9752a96961c8ff41cda8c9da9d68f Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 11 Jan 2018 12:38:22 -0800 Subject: [PATCH] Update screen pinning state whenever it changes. Change-Id: I98f0a7b0afcc76bcf822786e6cf3ea37004db1a8 Fixes: 71845181 Test: robotests --- .../ScreenPinningPreferenceController.java | 26 ++++++++----------- ...ScreenPinningPreferenceControllerTest.java | 19 +++----------- 2 files changed, 15 insertions(+), 30 deletions(-) diff --git a/src/com/android/settings/security/ScreenPinningPreferenceController.java b/src/com/android/settings/security/ScreenPinningPreferenceController.java index 60279c79345..01ccbaac8b7 100644 --- a/src/com/android/settings/security/ScreenPinningPreferenceController.java +++ b/src/com/android/settings/security/ScreenPinningPreferenceController.java @@ -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()); } } diff --git a/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java index 797e7d0b5bb..4ee9206dcfd 100644 --- a/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/security/ScreenPinningPreferenceControllerTest.java @@ -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));