diff options
3 files changed, 99 insertions, 9 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java index d0aba227baa5..8e3a6c51ddda 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java @@ -22,6 +22,7 @@ import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceViewHolder; +import android.text.TextUtils; import android.util.AttributeSet; import android.util.TypedValue; import android.view.View; @@ -88,11 +89,13 @@ public class RestrictedPreferenceHelper { if (mUseAdminDisabledSummary) { final TextView summaryView = (TextView) holder.findViewById(android.R.id.summary); if (summaryView != null) { + final CharSequence disabledText = summaryView.getContext().getText( + R.string.disabled_by_admin_summary_text); if (mDisabledByAdmin) { - summaryView.setText(R.string.disabled_by_admin_summary_text); - summaryView.setVisibility(View.VISIBLE); - } else { - summaryView.setVisibility(View.GONE); + summaryView.setText(disabledText); + } else if (TextUtils.equals(disabledText, summaryView.getText())) { + // It's previously set to disabled text, clear it. + summaryView.setText(null); } } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedLockUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedLockUtilsTest.java index 025bbc2ffd92..2958740d525e 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedLockUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedLockUtilsTest.java @@ -22,14 +22,11 @@ import android.content.Context; import android.content.pm.UserInfo; import android.os.UserManager; -import com.android.internal.util.ArrayUtils; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import java.util.Arrays; @@ -38,10 +35,9 @@ import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_REMOTE_INPUT; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.when; -@RunWith(RobolectricTestRunner.class) +@RunWith(SettingLibRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class RestrictedLockUtilsTest { diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedPreferenceHelperTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedPreferenceHelperTest.java new file mode 100644 index 000000000000..43e238ba02db --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedPreferenceHelperTest.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settingslib; + + +import android.content.Context; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceViewHolder; +import android.view.View; +import android.widget.TextView; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; + +import static org.mockito.Mockito.RETURNS_DEEP_STUBS; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@RunWith(SettingLibRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class RestrictedPreferenceHelperTest { + + + @Mock + private Context mContext; + @Mock + private Preference mPreference; + + private PreferenceViewHolder mViewHolder; + private RestrictedPreferenceHelper mHelper; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mViewHolder = new PreferenceViewHolder(mock(View.class)); + mHelper = new RestrictedPreferenceHelper(mContext, mPreference, null); + } + + @Test + public void bindPreference_disabled_shouldDisplayDisabledSummary() { + final TextView summaryView = mock(TextView.class, RETURNS_DEEP_STUBS); + when(mViewHolder.itemView.findViewById(android.R.id.summary)) + .thenReturn(summaryView); + when(summaryView.getContext().getText(R.string.disabled_by_admin_summary_text)) + .thenReturn("test"); + + mHelper.useAdminDisabledSummary(true); + mHelper.setDisabledByAdmin(new RestrictedLockUtils.EnforcedAdmin()); + mHelper.onBindViewHolder(mViewHolder); + + verify(summaryView).setText("test"); + verify(summaryView, never()).setVisibility(View.GONE); + } + + @Test + public void bindPreference_notDisabled_shouldNotHideSummary() { + final TextView summaryView = mock(TextView.class, RETURNS_DEEP_STUBS); + when(mViewHolder.itemView.findViewById(android.R.id.summary)) + .thenReturn(summaryView); + when(summaryView.getContext().getText(R.string.disabled_by_admin_summary_text)) + .thenReturn("test"); + when(summaryView.getText()).thenReturn("test"); + + mHelper.useAdminDisabledSummary(true); + mHelper.setDisabledByAdmin(null); + mHelper.onBindViewHolder(mViewHolder); + + verify(summaryView).setText(null); + verify(summaryView, never()).setVisibility(View.GONE); + } +} |