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

Commit 483f58ce authored by Goven Liu's avatar Goven Liu Committed by Android (Google) Code Review
Browse files

Merge "[Wi-Fi] [a11y] The "Advanced options" should be accessible by Voice...

Merge "[Wi-Fi] [a11y] The "Advanced options" should be accessible by Voice Access and pronounced by talkback correctly."
parents dfba9a0f 116060e0
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -368,14 +368,14 @@
                android:layout_height="wrap_content"
                style="@style/wifi_item"
                android:paddingBottom="4dp"
                android:importantForAccessibility="yes"
                android:contentDescription="@string/wifi_advanced_toggle_description_collapsed"
                android:importantForAccessibility="no"
                android:visibility="gone">
            <CheckBox android:id="@+id/wifi_advanced_togglebox"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    style="@style/wifi_advanced_toggle"
                    android:importantForAccessibility="noHideDescendants"
                    android:importantForAccessibility="yes"
                    android:contentDescription="@string/wifi_advanced_toggle_description"
                    android:text="@string/wifi_show_advanced" />
        </LinearLayout>

+6 −4
Original line number Diff line number Diff line
@@ -1955,10 +1955,12 @@
    <!-- Dialog for Access Points --> <skip />
    <!-- Label to show/hide advanced options [CHAR LIMIT=40] -->
    <string name="wifi_show_advanced">Advanced options</string>
    <!-- Message for talkback to say when Advanced Options expanded [CHAR LIMIT=NONE] -->
    <string name="wifi_advanced_toggle_description_expanded">Drop down list Advanced Options. Double-tap to collapse.</string>
    <!-- Message for talkback to say when Advanced Options is collapsed [CHAR LIMIT=NONE] -->
    <string name="wifi_advanced_toggle_description_collapsed">Drop down list Advanced Options. Double-tap to expand.</string>
    <!-- Message for talkback to say when focus on Advanced Options[CHAR LIMIT=NONE] -->
    <string name="wifi_advanced_toggle_description">Drop down list Advanced Options</string>
    <!-- Extended message for talkback to say when Advanced Options is expanded. (e.g., Double-tap to collapse) [CHAR LIMIT=NONE] -->
    <string name="wifi_advanced_toggle_description_expanded">collapse</string>
    <!-- Extended message for talkback to say when Advanced Options is collapsed. (e.g., Double-tap to expand) [CHAR LIMIT=NONE] -->
    <string name="wifi_advanced_toggle_description_collapsed">expand</string>
    <!-- Label for the SSID of the network -->
    <string name="wifi_ssid">Network name</string>
    <!-- Hint for a text field to enter the SSID of a hidden wifi network. [CHAR LIMIT=35] -->
+31 −7
Original line number Diff line number Diff line
@@ -47,7 +47,10 @@ import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.AccessibilityDelegate;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
@@ -62,6 +65,8 @@ import android.widget.ScrollView;
import android.widget.Spinner;
import android.widget.TextView;

import androidx.annotation.VisibleForTesting;

import com.android.settings.ProxySelector;
import com.android.settings.R;
import com.android.settings.wifi.details.WifiPrivacyPreferenceController;
@@ -76,8 +81,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;

import androidx.annotation.VisibleForTesting;

/**
 * The class for allowing UIs like {@link WifiDialog} and {@link WifiConfigUiBase} to
 * share the logic for controlling buttons, text fields, etc.
@@ -338,6 +341,7 @@ public class WifiConfigController implements TextWatcher,
                        mAccessPoint.isCarrierAp() ? View.GONE : View.VISIBLE);
                advancedTogglebox.setOnCheckedChangeListener(this);
                advancedTogglebox.setChecked(showAdvancedFields);
                setAdvancedOptionAccessibilityString(showAdvancedFields);
                mView.findViewById(R.id.wifi_advanced_fields)
                        .setVisibility(showAdvancedFields ? View.VISIBLE : View.GONE);
                if (mAccessPoint.isCarrierAp()) {
@@ -1554,21 +1558,17 @@ public class WifiConfigController implements TextWatcher,
                ((EditText) mPasswordView).setSelection(pos);
            }
        } else if (view.getId() == R.id.wifi_advanced_togglebox) {
            final View advancedToggle = mView.findViewById(R.id.wifi_advanced_toggle);
            final int toggleVisibility;
            final int stringID;
            if (isChecked) {
                toggleVisibility = View.VISIBLE;
                stringID = R.string.wifi_advanced_toggle_description_expanded;

                // Hide the SoftKeyboard temporary to let user can see most of the expanded items.
                hideSoftKeyboard(mView.getWindowToken());
            } else {
                toggleVisibility = View.GONE;
                stringID = R.string.wifi_advanced_toggle_description_collapsed;
            }
            mView.findViewById(R.id.wifi_advanced_fields).setVisibility(toggleVisibility);
            advancedToggle.setContentDescription(mContext.getString(stringID));
            setAdvancedOptionAccessibilityString(isChecked);
        }
    }

@@ -1677,6 +1677,8 @@ public class WifiConfigController implements TextWatcher,
        mView.findViewById(R.id.hidden_settings_field).setVisibility(View.VISIBLE);
        ((CheckBox) mView.findViewById(R.id.wifi_advanced_togglebox))
                .setOnCheckedChangeListener(this);
        // Set correct accessibility strings.
        setAdvancedOptionAccessibilityString(false /* showAdvancedFields */);
    }

    /**
@@ -1767,4 +1769,26 @@ public class WifiConfigController implements TextWatcher,
                InputMethodManager.class);
        inputMethodManager.hideSoftInputFromWindow(windowToken, 0 /* flags */);
    }

    private void setAdvancedOptionAccessibilityString(boolean showAdvancedFields) {
        final CheckBox advancedToggleBox = mView.findViewById(R.id.wifi_advanced_togglebox);
        advancedToggleBox.setAccessibilityDelegate(new AccessibilityDelegate() {
            @Override
            public void onInitializeAccessibilityNodeInfo(
                    View v, AccessibilityNodeInfo info) {
                super.onInitializeAccessibilityNodeInfo(v, info);
                // To let TalkBack don't pronounce checked/unchecked.
                info.setCheckable(false /* checkable */);
                // To let TalkBack don't pronounce CheckBox.
                info.setClassName(null /* className */);
                final CharSequence accessibilityDoubleTapExtend = mContext.getString(
                        showAdvancedFields ? R.string.wifi_advanced_toggle_description_expanded
                                : R.string.wifi_advanced_toggle_description_collapsed);
                // Customize TalkBack's pronunciation which been appended to "Double-tap to".
                final AccessibilityAction customClick = new AccessibilityAction(
                        AccessibilityNodeInfo.ACTION_CLICK, accessibilityDoubleTapExtend);
                info.addAction(customClick);
            }
        });
    }
}
+8 −0
Original line number Diff line number Diff line
@@ -557,4 +557,12 @@ public class WifiConfigControllerTest {

        assertThat(firstChild).isEqualTo(hiddenSettingLayout);
    }

    @Test
    public void getAdvancedOptionContentDescription_whenViewInitialed_shouldBeCorrect() {
        final CheckBox advButton = mView.findViewById(R.id.wifi_advanced_togglebox);

        assertThat(advButton.getContentDescription()).isEqualTo(
                mContext.getString(R.string.wifi_advanced_toggle_description));
    }
}