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

Commit 749311d4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[MainSwitchPreference] Do not update datastore when...

Merge "[MainSwitchPreference] Do not update datastore when OnPreferenceChangeListener returns false" into main
parents eaa34bb5 920a3bb9
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -81,8 +81,10 @@ public class MainSwitchPreference extends TwoStatePreference implements OnChecke
        // To support onPreferenceChange callback, it needs to call callChangeListener() when
        // MainSwitchBar is clicked.
        mainSwitchBar.setOnClickListener(view -> {
            boolean isChecked = isChecked();
            if (!callChangeListener(isChecked)) {
            boolean isChecked = !isChecked();
            if (callChangeListener(isChecked)) {
                setChecked(isChecked);
            } else {
                // Change checked state back if listener doesn't like it.
                // Note that CompoundButton maintains internal state to avoid infinite recursion.
                mainSwitchBar.setChecked(!isChecked);
@@ -104,7 +106,6 @@ public class MainSwitchPreference extends TwoStatePreference implements OnChecke

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        super.setChecked(isChecked);
        for (OnCheckedChangeListener listener : mSwitchChangeListeners) {
            listener.onCheckedChanged(buttonView, isChecked);
        }
+5 −4
Original line number Diff line number Diff line
@@ -47,12 +47,14 @@ public class MainSwitchPreferenceTest {
    private final Context mContext = ApplicationProvider.getApplicationContext();
    private View mRootView;
    private PreferenceViewHolder mHolder;
    private MainSwitchBar mMainSwitchBar;
    private MainSwitchPreference mPreference;

    @Before
    public void setUp() {
        mRootView = View.inflate(mContext, R.layout.settingslib_main_switch_layout,
                null /* parent */);
        mMainSwitchBar = mRootView.requireViewById(R.id.settingslib_main_switch_bar);
        mHolder = PreferenceViewHolder.createInstanceForTests(mRootView);
        mPreference = new MainSwitchPreference(mContext);
    }
@@ -73,8 +75,7 @@ public class MainSwitchPreferenceTest {
        mPreference.setChecked(true);
        mPreference.onBindViewHolder(mHolder);

        assertThat(mRootView.<MainSwitchBar>requireViewById(
                R.id.settingslib_main_switch_bar).isChecked()).isTrue();
        assertThat(mMainSwitchBar.isChecked()).isTrue();
    }

    @Test
@@ -95,12 +96,12 @@ public class MainSwitchPreferenceTest {
        mPreference.setOnPreferenceChangeListener((preference, newValue) -> false);
        mPreference.onBindViewHolder(mHolder);

        mPreference.performClick();
        mMainSwitchBar.performClick();
        verify(preferenceDataStore, never()).putBoolean(any(), anyBoolean());

        mPreference.setOnPreferenceChangeListener((preference, newValue) -> true);

        mPreference.performClick();
        mMainSwitchBar.performClick();
        verify(preferenceDataStore).putBoolean(any(), anyBoolean());
    }
}