Get rid of VolumeSeekBarPreferenceController.setCallback
Set the callback to VolumeSeekBarPreference directly and simplify SoundSettings. Bug: 386162594 Flag: EXEMPT refactor Test: atest&manual Change-Id: Ic114c15c236da9f3ea3754408adbfa9c841befd0
This commit is contained in:
@@ -46,6 +46,7 @@ import com.android.settings.widget.UpdatableListPreferenceDialogFragment;
|
|||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.core.instrumentation.Instrumentable;
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
import com.android.settingslib.preference.UtilsKt;
|
||||||
import com.android.settingslib.search.SearchIndexable;
|
import com.android.settingslib.search.SearchIndexable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -113,14 +114,12 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult
|
|||||||
if (phoneRingTonePreference != null && openPhoneRingtonePicker) {
|
if (phoneRingTonePreference != null && openPhoneRingtonePicker) {
|
||||||
onPreferenceTreeClick(phoneRingTonePreference);
|
onPreferenceTreeClick(phoneRingTonePreference);
|
||||||
}
|
}
|
||||||
if (isCatalystEnabled()) {
|
UtilsKt.forEachRecursively(getPreferenceScreen(), preference -> {
|
||||||
for (String key : getPreferenceKeysInHierarchy()) {
|
if (preference instanceof VolumeSeekBarPreference) {
|
||||||
Preference preference = findPreference(key);
|
((VolumeSeekBarPreference) preference).setCallback(mVolumeCallback);
|
||||||
if (preference instanceof VolumeSeekBarPreference) {
|
|
||||||
((VolumeSeekBarPreference) preference).setCallback(mVolumeCallback);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
return null;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -203,22 +202,11 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult
|
|||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
ArrayList<VolumeSeekBarPreferenceController> volumeControllers = new ArrayList<>();
|
|
||||||
volumeControllers.add(use(AlarmVolumePreferenceController.class));
|
|
||||||
volumeControllers.add(use(MediaVolumePreferenceController.class));
|
|
||||||
volumeControllers.add(use(SeparateRingVolumePreferenceController.class));
|
|
||||||
volumeControllers.add(use(NotificationVolumePreferenceController.class));
|
|
||||||
volumeControllers.add(use(CallVolumePreferenceController.class));
|
|
||||||
|
|
||||||
use(HandsFreeProfileOutputPreferenceController.class).setCallback(listPreference ->
|
use(HandsFreeProfileOutputPreferenceController.class).setCallback(listPreference ->
|
||||||
onPreferenceDataChanged(listPreference));
|
onPreferenceDataChanged(listPreference));
|
||||||
mHfpOutputControllerKey =
|
mHfpOutputControllerKey =
|
||||||
use(HandsFreeProfileOutputPreferenceController.class).getPreferenceKey();
|
use(HandsFreeProfileOutputPreferenceController.class).getPreferenceKey();
|
||||||
|
|
||||||
for (VolumeSeekBarPreferenceController controller : volumeControllers) {
|
|
||||||
controller.setCallback(mVolumeCallback);
|
|
||||||
getSettingsLifecycle().addObserver(controller);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// === Volumes ===
|
// === Volumes ===
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import androidx.lifecycle.OnLifecycleEvent;
|
|||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.notification.VolumeSeekBarPreference.Callback;
|
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -34,7 +33,6 @@ public abstract class VolumeSeekBarPreferenceController extends
|
|||||||
AdjustVolumeRestrictedPreferenceController implements LifecycleObserver {
|
AdjustVolumeRestrictedPreferenceController implements LifecycleObserver {
|
||||||
|
|
||||||
protected VolumeSeekBarPreference mPreference;
|
protected VolumeSeekBarPreference mPreference;
|
||||||
protected VolumeSeekBarPreference.Callback mVolumePreferenceCallback;
|
|
||||||
protected AudioHelper mHelper;
|
protected AudioHelper mHelper;
|
||||||
protected VolumeSeekBarPreference.Listener mVolumePreferenceListener;
|
protected VolumeSeekBarPreference.Listener mVolumePreferenceListener;
|
||||||
|
|
||||||
@@ -48,10 +46,6 @@ public abstract class VolumeSeekBarPreferenceController extends
|
|||||||
mHelper = helper;
|
mHelper = helper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCallback(Callback callback) {
|
|
||||||
mVolumePreferenceCallback = callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void displayPreference(PreferenceScreen screen) {
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
super.displayPreference(screen);
|
super.displayPreference(screen);
|
||||||
@@ -62,7 +56,6 @@ public abstract class VolumeSeekBarPreferenceController extends
|
|||||||
|
|
||||||
protected void setupVolPreference(PreferenceScreen screen) {
|
protected void setupVolPreference(PreferenceScreen screen) {
|
||||||
mPreference = screen.findPreference(getPreferenceKey());
|
mPreference = screen.findPreference(getPreferenceKey());
|
||||||
mPreference.setCallback(mVolumePreferenceCallback);
|
|
||||||
mPreference.setListener(mVolumePreferenceListener);
|
mPreference.setListener(mVolumePreferenceListener);
|
||||||
mPreference.setStream(getAudioStream());
|
mPreference.setStream(getAudioStream());
|
||||||
mPreference.setMuteIcon(getMuteIcon());
|
mPreference.setMuteIcon(getMuteIcon());
|
||||||
|
|||||||
@@ -31,14 +31,18 @@ import androidx.preference.Preference;
|
|||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.junit.MockitoJUnit;
|
||||||
|
import org.mockito.junit.MockitoRule;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class VolumeSeekBarPreferenceControllerTest {
|
public class VolumeSeekBarPreferenceControllerTest {
|
||||||
|
@Rule
|
||||||
|
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
@@ -47,8 +51,6 @@ public class VolumeSeekBarPreferenceControllerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private VolumeSeekBarPreference mPreference;
|
private VolumeSeekBarPreference mPreference;
|
||||||
@Mock
|
@Mock
|
||||||
private VolumeSeekBarPreference.Callback mCallback;
|
|
||||||
@Mock
|
|
||||||
private VolumeSeekBarPreference.Listener mListener;
|
private VolumeSeekBarPreference.Listener mListener;
|
||||||
@Mock
|
@Mock
|
||||||
private AudioHelper mHelper;
|
private AudioHelper mHelper;
|
||||||
@@ -57,10 +59,9 @@ public class VolumeSeekBarPreferenceControllerTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
when(mScreen.findPreference(nullable(String.class))).thenReturn(mPreference);
|
when(mScreen.findPreference(nullable(String.class))).thenReturn(mPreference);
|
||||||
when(mPreference.getKey()).thenReturn("key");
|
when(mPreference.getKey()).thenReturn("key");
|
||||||
mController = new VolumeSeekBarPreferenceControllerTestable(mContext, mCallback, true,
|
mController = new VolumeSeekBarPreferenceControllerTestable(mContext, true,
|
||||||
mPreference.getKey(), mListener);
|
mPreference.getKey(), mListener);
|
||||||
mController.setAudioHelper(mHelper);
|
mController.setAudioHelper(mHelper);
|
||||||
}
|
}
|
||||||
@@ -69,7 +70,6 @@ public class VolumeSeekBarPreferenceControllerTest {
|
|||||||
public void displayPreference_available_shouldUpdatePreference() {
|
public void displayPreference_available_shouldUpdatePreference() {
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
verify(mPreference).setCallback(mCallback);
|
|
||||||
verify(mPreference).setStream(VolumeSeekBarPreferenceControllerTestable.AUDIO_STREAM);
|
verify(mPreference).setStream(VolumeSeekBarPreferenceControllerTestable.AUDIO_STREAM);
|
||||||
verify(mPreference).setMuteIcon(VolumeSeekBarPreferenceControllerTestable.MUTE_ICON);
|
verify(mPreference).setMuteIcon(VolumeSeekBarPreferenceControllerTestable.MUTE_ICON);
|
||||||
verify(mPreference).setListener(mListener);
|
verify(mPreference).setListener(mListener);
|
||||||
@@ -77,7 +77,7 @@ public class VolumeSeekBarPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void displayPreference_notAvailable_shouldNotUpdatePreference() {
|
public void displayPreference_notAvailable_shouldNotUpdatePreference() {
|
||||||
mController = new VolumeSeekBarPreferenceControllerTestable(mContext, mCallback, false,
|
mController = new VolumeSeekBarPreferenceControllerTestable(mContext, false,
|
||||||
mPreference.getKey(), mListener);
|
mPreference.getKey(), mListener);
|
||||||
|
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
@@ -152,19 +152,17 @@ public class VolumeSeekBarPreferenceControllerTest {
|
|||||||
assertThat(mController.getSliderPosition()).isEqualTo(7);
|
assertThat(mController.getSliderPosition()).isEqualTo(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class VolumeSeekBarPreferenceControllerTestable
|
private static class VolumeSeekBarPreferenceControllerTestable extends
|
||||||
extends VolumeSeekBarPreferenceController {
|
VolumeSeekBarPreferenceController {
|
||||||
|
|
||||||
private final static int AUDIO_STREAM = 1;
|
private static final int AUDIO_STREAM = 1;
|
||||||
private final static int MUTE_ICON = 2;
|
private static final int MUTE_ICON = 2;
|
||||||
|
|
||||||
private boolean mAvailable;
|
private final boolean mAvailable;
|
||||||
|
|
||||||
VolumeSeekBarPreferenceControllerTestable(Context context,
|
VolumeSeekBarPreferenceControllerTestable(Context context, boolean available, String key,
|
||||||
VolumeSeekBarPreference.Callback callback, boolean available, String key,
|
|
||||||
VolumeSeekBarPreference.Listener listener) {
|
VolumeSeekBarPreference.Listener listener) {
|
||||||
super(context, key);
|
super(context, key);
|
||||||
setCallback(callback);
|
|
||||||
mAvailable = available;
|
mAvailable = available;
|
||||||
mVolumePreferenceListener = listener;
|
mVolumePreferenceListener = listener;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user