From 73454f2607dd69cc0494e1675046bcfab4d4ec3c Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Mon, 15 Apr 2019 12:50:47 +0800 Subject: [PATCH] "Disallow adjust volume" restricted dialog didn't show root casue: VolumeSeekBarPreference & SeekBarPreference will return false when call isSelectable() then this preference won't perform Click Fixes: 123745455 Test: Manual & robotest Change-Id: Iba27b503e8a272260c80bd41aecdd5cdbc39f962 --- .../notification/VolumeSeekBarPreference.java | 5 ----- .../settings/widget/SeekBarPreference.java | 2 +- .../widget/SeekBarPreferenceTest.java | 21 ++++++++++++++++++- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/notification/VolumeSeekBarPreference.java b/src/com/android/settings/notification/VolumeSeekBarPreference.java index 7f36791e069..92b3cae61b9 100644 --- a/src/com/android/settings/notification/VolumeSeekBarPreference.java +++ b/src/com/android/settings/notification/VolumeSeekBarPreference.java @@ -80,11 +80,6 @@ public class VolumeSeekBarPreference extends SeekBarPreference { mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); } - @Override - public boolean isSelectable() { - return false; - } - public void setStream(int stream) { mStream = stream; setMax(mAudioManager.getStreamMaxVolume(mStream)); diff --git a/src/com/android/settings/widget/SeekBarPreference.java b/src/com/android/settings/widget/SeekBarPreference.java index f4d2aac83d4..44def119ea2 100644 --- a/src/com/android/settings/widget/SeekBarPreference.java +++ b/src/com/android/settings/widget/SeekBarPreference.java @@ -93,7 +93,7 @@ public class SeekBarPreference extends RestrictedPreference @Override public boolean isSelectable() { - return false; + return isDisabledByAdmin(); } @Override diff --git a/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java index a675e0231bc..0a1d5d80de5 100644 --- a/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java @@ -18,12 +18,16 @@ package com.android.settings.widget; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + import android.content.Context; import android.os.Parcelable; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @@ -39,9 +43,10 @@ public class SeekBarPreferenceTest { @Before public void setUp() { + MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; - mSeekBarPreference = new SeekBarPreference(mContext); + mSeekBarPreference = spy(new SeekBarPreference(mContext)); mSeekBarPreference.setMax(MAX); mSeekBarPreference.setMin(MIN); mSeekBarPreference.setProgress(PROGRESS); @@ -59,4 +64,18 @@ public class SeekBarPreferenceTest { assertThat(preference.getMin()).isEqualTo(MIN); assertThat(preference.getProgress()).isEqualTo(PROGRESS); } + + @Test + public void isSelectable_disabledByAdmin_returnTrue() { + when(mSeekBarPreference.isDisabledByAdmin()).thenReturn(true); + + assertThat(mSeekBarPreference.isSelectable()).isTrue(); + } + + @Test + public void isSelectable_notDisabledByAdmin_returnFalse() { + when(mSeekBarPreference.isDisabledByAdmin()).thenReturn(false); + + assertThat(mSeekBarPreference.isSelectable()).isFalse(); + } }