AT-SPI: an invalid node has no "invalid-entry" state

オープン 初心者向け
#858 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
78/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
rust
領域
accessibility

調査の方向性

adapters/atspi-common/src/node.rs の NodeWrapper::state を読み、Node::is_required() と関連する状態のマッピングの仕組みを確認してください。次に、ノードの無効な値を公開する accesskit_consumer API を探してください。任意の Invalid 値を持つノードに AT-SPI の State::InvalidEntry が含まれるようになったら完了です。Accerciser または atspi で再現手順を追って確認してください。

索引モデルが issue の本文から書いたものです。

説明

Platform: Linux (AT-SPI, accesskit_atspi_common)

What happens: a node with invalid set (for example a required text input whose value doesn't validate, aria-invalid="true") reaches AT-SPI without the invalid-entry state, so Orca doesn't say "invalid entry" when the field gets focus.

Expected: StateSet includes State::InvalidEntry whenever the node's invalid is set (any Invalid value). Chromium does the same: it maps aria-invalid to ATK_STATE_INVALID_ENTRY.

Reproduce: set node.set_invalid(Invalid::True) on a text input and read its states with Accerciser or atspi. invalid-entry is missing, while required, read-only and the others mapped in NodeWrapper::state are present.

Proposed change:

  • accesskit_consumer: add Node::is_invalid() (or expose invalid()).
  • adapters/atspi-common/src/node.rs, NodeWrapper::state: next to the is_required() check, add
    if state.is_invalid() {
        atspi_state.insert(State::InvalidEntry);
    }
    

For other platforms: UIA has IsDataValidForForm (Windows), and macOS has AXInvalid. I can look at those too if that's wanted.

主要言語
Rust
スター
1.6k
フォーク
135
平均マージ
10時間 53分
マージ済み PR(30日)
11

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

AccessKit/accesskit のほかの issue

AccessKit/accesskit の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。