Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a7fa6efe authored by Jacky Wang's avatar Jacky Wang
Browse files

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
parent 2117499c
Loading
Loading
Loading
Loading
+6 −18
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import com.android.settings.widget.UpdatableListPreferenceDialogFragment;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.preference.UtilsKt;
import com.android.settingslib.search.SearchIndexable;

import java.util.ArrayList;
@@ -113,14 +114,12 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult
        if (phoneRingTonePreference != null && openPhoneRingtonePicker) {
            onPreferenceTreeClick(phoneRingTonePreference);
        }
        if (isCatalystEnabled()) {
            for (String key : getPreferenceKeysInHierarchy()) {
                Preference preference = findPreference(key);
        UtilsKt.forEachRecursively(getPreferenceScreen(), preference -> {
            if (preference instanceof VolumeSeekBarPreference) {
                ((VolumeSeekBarPreference) preference).setCallback(mVolumeCallback);
            }
            }
        }
            return null;
        });
    }

    @Override
@@ -203,22 +202,11 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult
    @Override
    public void onAttach(Context 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 ->
                onPreferenceDataChanged(listPreference));
        mHfpOutputControllerKey =
                use(HandsFreeProfileOutputPreferenceController.class).getPreferenceKey();

        for (VolumeSeekBarPreferenceController controller : volumeControllers) {
            controller.setCallback(mVolumeCallback);
            getSettingsLifecycle().addObserver(controller);
        }
    }

    // === Volumes ===
+0 −7
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.notification.VolumeSeekBarPreference.Callback;
import com.android.settingslib.core.lifecycle.Lifecycle;

/**
@@ -34,7 +33,6 @@ public abstract class VolumeSeekBarPreferenceController extends
        AdjustVolumeRestrictedPreferenceController implements LifecycleObserver {

    protected VolumeSeekBarPreference mPreference;
    protected VolumeSeekBarPreference.Callback mVolumePreferenceCallback;
    protected AudioHelper mHelper;
    protected VolumeSeekBarPreference.Listener mVolumePreferenceListener;

@@ -48,10 +46,6 @@ public abstract class VolumeSeekBarPreferenceController extends
        mHelper = helper;
    }

    public void setCallback(Callback callback) {
        mVolumePreferenceCallback = callback;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
@@ -62,7 +56,6 @@ public abstract class VolumeSeekBarPreferenceController extends

    protected void setupVolPreference(PreferenceScreen screen) {
        mPreference = screen.findPreference(getPreferenceKey());
        mPreference.setCallback(mVolumePreferenceCallback);
        mPreference.setListener(mVolumePreferenceListener);
        mPreference.setStream(getAudioStream());
        mPreference.setMuteIcon(getMuteIcon());
+13 −15
Original line number Diff line number Diff line
@@ -31,14 +31,18 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner;

@RunWith(RobolectricTestRunner.class)
public class VolumeSeekBarPreferenceControllerTest {
    @Rule
    public final MockitoRule mMockitoRule = MockitoJUnit.rule();

    @Mock
    private Context mContext;
@@ -47,8 +51,6 @@ public class VolumeSeekBarPreferenceControllerTest {
    @Mock
    private VolumeSeekBarPreference mPreference;
    @Mock
    private VolumeSeekBarPreference.Callback mCallback;
    @Mock
    private VolumeSeekBarPreference.Listener mListener;
    @Mock
    private AudioHelper mHelper;
@@ -57,10 +59,9 @@ public class VolumeSeekBarPreferenceControllerTest {

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        when(mScreen.findPreference(nullable(String.class))).thenReturn(mPreference);
        when(mPreference.getKey()).thenReturn("key");
        mController = new VolumeSeekBarPreferenceControllerTestable(mContext, mCallback, true,
        mController = new VolumeSeekBarPreferenceControllerTestable(mContext, true,
                mPreference.getKey(), mListener);
        mController.setAudioHelper(mHelper);
    }
@@ -69,7 +70,6 @@ public class VolumeSeekBarPreferenceControllerTest {
    public void displayPreference_available_shouldUpdatePreference() {
        mController.displayPreference(mScreen);

        verify(mPreference).setCallback(mCallback);
        verify(mPreference).setStream(VolumeSeekBarPreferenceControllerTestable.AUDIO_STREAM);
        verify(mPreference).setMuteIcon(VolumeSeekBarPreferenceControllerTestable.MUTE_ICON);
        verify(mPreference).setListener(mListener);
@@ -77,7 +77,7 @@ public class VolumeSeekBarPreferenceControllerTest {

    @Test
    public void displayPreference_notAvailable_shouldNotUpdatePreference() {
        mController = new VolumeSeekBarPreferenceControllerTestable(mContext, mCallback, false,
        mController = new VolumeSeekBarPreferenceControllerTestable(mContext, false,
                mPreference.getKey(), mListener);

        mController.displayPreference(mScreen);
@@ -152,19 +152,17 @@ public class VolumeSeekBarPreferenceControllerTest {
        assertThat(mController.getSliderPosition()).isEqualTo(7);
    }

    private class VolumeSeekBarPreferenceControllerTestable
        extends VolumeSeekBarPreferenceController {
    private static class VolumeSeekBarPreferenceControllerTestable extends
            VolumeSeekBarPreferenceController {

        private final static int AUDIO_STREAM = 1;
        private final static int MUTE_ICON = 2;
        private static final int AUDIO_STREAM = 1;
        private static final int MUTE_ICON = 2;

        private boolean mAvailable;
        private final boolean mAvailable;

        VolumeSeekBarPreferenceControllerTestable(Context context,
                VolumeSeekBarPreference.Callback callback, boolean available, String key,
        VolumeSeekBarPreferenceControllerTestable(Context context, boolean available, String key,
                VolumeSeekBarPreference.Listener listener) {
            super(context, key);
            setCallback(callback);
            mAvailable = available;
            mVolumePreferenceListener = listener;
        }