"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
This commit is contained in:
Edgar Wang
2019-04-15 12:50:47 +08:00
parent 96b534951c
commit 73454f2607
3 changed files with 21 additions and 7 deletions

View File

@@ -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));

View File

@@ -93,7 +93,7 @@ public class SeekBarPreference extends RestrictedPreference
@Override
public boolean isSelectable() {
return false;
return isDisabledByAdmin();
}
@Override

View File

@@ -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();
}
}