From cd7e9bcb33016a2eab3f5f2a10fde369f13541fe Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Tue, 6 Feb 2018 15:09:43 -0500 Subject: [PATCH] Apply checkbox enable state on viewholder bind Change-Id: I5b263f02fb6a1779fd567eade3776044fddb6b11 Fixes: 72809700 Test: SettingsRoboTests --- .../widget/MasterCheckBoxPreference.java | 1 + .../widget/MasterCheckBoxPreferenceTest.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/com/android/settings/widget/MasterCheckBoxPreference.java b/src/com/android/settings/widget/MasterCheckBoxPreference.java index 552f51c115f..fceeac22f00 100644 --- a/src/com/android/settings/widget/MasterCheckBoxPreference.java +++ b/src/com/android/settings/widget/MasterCheckBoxPreference.java @@ -83,6 +83,7 @@ public class MasterCheckBoxPreference extends TwoTargetPreference { if (mCheckBox != null) { mCheckBox.setContentDescription(getTitle()); mCheckBox.setChecked(mChecked); + mCheckBox.setEnabled(mEnableCheckBox); } } diff --git a/tests/robotests/src/com/android/settings/widget/MasterCheckBoxPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/MasterCheckBoxPreferenceTest.java index ac3e0b64471..55ce27f6db8 100644 --- a/tests/robotests/src/com/android/settings/widget/MasterCheckBoxPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/widget/MasterCheckBoxPreferenceTest.java @@ -105,6 +105,24 @@ public class MasterCheckBoxPreferenceTest { assertThat(checkBox.isEnabled()).isTrue(); } + @Test + public void onBindViewHolder_shouldSetCheckboxEnabledState() { + final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests( + LayoutInflater.from(mContext).inflate( + R.layout.preference_widget_master_checkbox, null)); + final CheckBox checkBox = (CheckBox) holder.findViewById(R.id.checkboxWidget); + + mPreference.setCheckBoxEnabled(false); + mPreference.onBindViewHolder(holder); + + assertThat(mPreference.isEnabled()).isTrue(); + assertThat(checkBox.isEnabled()).isFalse(); + + mPreference.setCheckBoxEnabled(true); + assertThat(mPreference.isEnabled()).isTrue(); + assertThat(checkBox.isEnabled()).isTrue(); + } + @Test public void clickWidgetView_shouldToggleCheckBox() { final LayoutInflater inflater = LayoutInflater.from(mContext);