[Wi-Fi][A11Y] Fix TalkBack lose focus in WifiSettings & WifiSettings2
Use stable ID feature of RecycleView to keep preference focus. Bug: 126132618 Test: WifiSettingsTest WifiSettings2Test manual visual Change-Id: Id73157b0935186c9a59d1ef68190d853f671ebc2
This commit is contained in:
@@ -53,6 +53,8 @@ import android.widget.Toast;
|
|||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceCategory;
|
import androidx.preference.PreferenceCategory;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.settings.LinkifyUtils;
|
import com.android.settings.LinkifyUtils;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -443,6 +445,13 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
||||||
|
final RecyclerView.Adapter adapter = super.onCreateAdapter(preferenceScreen);
|
||||||
|
adapter.setHasStableIds(true);
|
||||||
|
return adapter;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
return SettingsEnums.WIFI;
|
return SettingsEnums.WIFI;
|
||||||
|
@@ -48,6 +48,8 @@ import android.widget.Toast;
|
|||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceCategory;
|
import androidx.preference.PreferenceCategory;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.settings.LinkifyUtils;
|
import com.android.settings.LinkifyUtils;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -367,6 +369,13 @@ public class WifiSettings2 extends RestrictedSettingsFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
||||||
|
final RecyclerView.Adapter adapter = super.onCreateAdapter(preferenceScreen);
|
||||||
|
adapter.setHasStableIds(true);
|
||||||
|
return adapter;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
return SettingsEnums.WIFI;
|
return SettingsEnums.WIFI;
|
||||||
|
@@ -43,6 +43,8 @@ import android.provider.Settings;
|
|||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.datausage.DataUsagePreference;
|
import com.android.settings.datausage.DataUsagePreference;
|
||||||
@@ -263,6 +265,15 @@ public class WifiSettings2Test {
|
|||||||
verify(mDataUsagePreference).setTemplate(any(), eq(0) /*subId*/, eq(null) /*service*/);
|
verify(mDataUsagePreference).setTemplate(any(), eq(0) /*subId*/, eq(null) /*service*/);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateAdapter_hasStableIdsTrue() {
|
||||||
|
final PreferenceScreen preferenceScreen = mock(PreferenceScreen.class);
|
||||||
|
|
||||||
|
RecyclerView.Adapter adapter = mWifiSettings2.onCreateAdapter(preferenceScreen);
|
||||||
|
|
||||||
|
assertThat(adapter.hasStableIds()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(b/70983952): Add test for context menu
|
// TODO(b/70983952): Add test for context menu
|
||||||
// @Test
|
// @Test
|
||||||
// public void onCreateContextMenu_shouldHaveForgetMenuForConnectedAccessPreference() {
|
// public void onCreateContextMenu_shouldHaveForgetMenuForConnectedAccessPreference() {
|
||||||
|
@@ -45,6 +45,8 @@ import android.view.View;
|
|||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.datausage.DataUsagePreference;
|
import com.android.settings.datausage.DataUsagePreference;
|
||||||
@@ -291,4 +293,13 @@ public class WifiSettingsTest {
|
|||||||
|
|
||||||
verify(menu).add(anyInt(), eq(WifiSettings.MENU_ID_FORGET), anyInt(), anyInt());
|
verify(menu).add(anyInt(), eq(WifiSettings.MENU_ID_FORGET), anyInt(), anyInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreateAdapter_hasStableIdsTrue() {
|
||||||
|
final PreferenceScreen preferenceScreen = mock(PreferenceScreen.class);
|
||||||
|
|
||||||
|
RecyclerView.Adapter adapter = mWifiSettings.onCreateAdapter(preferenceScreen);
|
||||||
|
|
||||||
|
assertThat(adapter.hasStableIds()).isTrue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user