Merge "[A11Y] Fix MasterSwitchPreference onClick not callback after TalkBack is enabled"
This commit is contained in:
@@ -63,9 +63,9 @@ public class MasterSwitchPreference extends TwoTargetPreference {
|
|||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||||
super.onBindViewHolder(holder);
|
super.onBindViewHolder(holder);
|
||||||
final View widgetView = holder.findViewById(android.R.id.widget_frame);
|
final View switchWidget = holder.findViewById(R.id.switchWidget);
|
||||||
if (widgetView != null) {
|
if (switchWidget != null) {
|
||||||
widgetView.setOnClickListener(new OnClickListener() {
|
switchWidget.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
if (mSwitch != null && !mSwitch.isEnabled()) {
|
if (mSwitch != null && !mSwitch.isEnabled()) {
|
||||||
|
@@ -23,7 +23,6 @@ import static org.mockito.Mockito.verify;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
|
|
||||||
@@ -115,10 +114,10 @@ public class MasterSwitchPreferenceTest {
|
|||||||
final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget);
|
final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget);
|
||||||
preference.onBindViewHolder(holder);
|
preference.onBindViewHolder(holder);
|
||||||
|
|
||||||
widgetView.performClick();
|
toggle.performClick();
|
||||||
assertThat(toggle.isChecked()).isTrue();
|
assertThat(toggle.isChecked()).isTrue();
|
||||||
|
|
||||||
widgetView.performClick();
|
toggle.performClick();
|
||||||
assertThat(toggle.isChecked()).isFalse();
|
assertThat(toggle.isChecked()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,19 +142,23 @@ public class MasterSwitchPreferenceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void clickWidgetView_shouldNotifyPreferenceChanged() {
|
public void clickWidgetView_shouldNotifyPreferenceChanged() {
|
||||||
final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
|
final MasterSwitchPreference preference = new MasterSwitchPreference(mContext);
|
||||||
|
final LayoutInflater inflater = LayoutInflater.from(mContext);
|
||||||
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
|
final PreferenceViewHolder holder = PreferenceViewHolder.createInstanceForTests(
|
||||||
LayoutInflater.from(mContext).inflate(R.layout.preference_two_target, null));
|
LayoutInflater.from(mContext).inflate(R.layout.preference_two_target, null));
|
||||||
final View widgetView = holder.findViewById(android.R.id.widget_frame);
|
final LinearLayout widgetView = holder.itemView.findViewById(android.R.id.widget_frame);
|
||||||
|
inflater.inflate(R.layout.preference_widget_master_switch, widgetView, true);
|
||||||
|
final Switch toggle = (Switch) holder.findViewById(R.id.switchWidget);
|
||||||
|
|
||||||
final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
|
final OnPreferenceChangeListener listener = mock(OnPreferenceChangeListener.class);
|
||||||
preference.setOnPreferenceChangeListener(listener);
|
preference.setOnPreferenceChangeListener(listener);
|
||||||
preference.onBindViewHolder(holder);
|
preference.onBindViewHolder(holder);
|
||||||
|
|
||||||
preference.setChecked(false);
|
preference.setChecked(false);
|
||||||
widgetView.performClick();
|
toggle.performClick();
|
||||||
verify(listener).onPreferenceChange(preference, true);
|
verify(listener).onPreferenceChange(preference, true);
|
||||||
|
|
||||||
preference.setChecked(true);
|
preference.setChecked(true);
|
||||||
widgetView.performClick();
|
toggle.performClick();
|
||||||
verify(listener).onPreferenceChange(preference, false);
|
verify(listener).onPreferenceChange(preference, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user