핵심 접근성 API 매핑 1.2

W3C 후보 권고안 초안

이 문서에 대한 자세한 내용
이 버전:
https://www.w3.org/TR/2026/CRD-core-aam-1.2-20260430/
최신 공개 버전:
https://www.w3.org/TR/core-aam-1.2/
최신 편집자 초안:
https://w3c.github.io/core-aam/
이력:
https://www.w3.org/standards/history/core-aam-1.2/
커밋 이력
구현 보고서:
https://w3c.github.io/test-results/core-aam-1.2/
최신 권고안:
https://www.w3.org/TR/core-aam-1.1/
편집자:
Valerie Young (Igalia, S.L.)
(W3C 초청 전문가)
이전 편집자:
Alexander Surkov (Igalia, S.L.) (2025년 8월까지 편집자)
Joanmarie Diggs (Igalia, S.L.) (2022년 10월까지 편집자)
Richard Schwerdtfeger (Knowbility) (2017년 10월까지 편집자)
Joseph Scheuhammer (Inclusive Design Research Centre, OCAD University) (2017년 5월까지 편집자)
Andi Snow-Weaver (IBM) (2012년 12월까지 편집자)
Aaron Leventhal (IBM) (2009년 1월까지 편집자)
Michael Cooper (W3C) (2023년 7월까지 편집자)
플랫폼 매핑 관리자:
Benjamin Beaudry (Microsoft Corp.) (UIA)
James Craig (Apple, Inc.) (AX API)
Joanmarie Diggs (Igalia, S.L.) (ATK / AT-SPI)
Alexander Surkov (Igalia, S.L.) (MSAA, IAccessible2)
David Tseng (Google LLC) (Android Accessibility API)
피드백:
GitHub w3c/core-aam (풀 리퀘스트, 새 이슈, 열린 이슈)

초록

이 문서는 사용자 에이전트가 웹 콘텐츠 언어의 의미론을 접근성 API에 어떻게 노출해야 하는지를 설명한다. 이는 장애가 있는 사용자가 보조 기술을 사용하여 정보를 얻고 상호작용하는 데 도움이 된다. 이러한 매핑을 문서화하면 접근성 API가 구현하는 역할, 상태, 속성 및 이벤트의 상호운용 가능한 노출을 촉진하고, 이 정보가 작성자의 의도와 일관된 방식으로 나타나도록 보장하는 데 도움이 된다.

이 핵심 접근성 API 매핑 명세는 일반적인 키보드 탐색 지원 및 Web 콘텐츠에서 WAI-ARIA [WAI-ARIA-1.2]를 통해 제공되는 범용 역할, 상태 및 속성의 매핑을 포함하여 여러 콘텐츠 기술에 걸쳐 적용되는 지원을 정의한다. 다른 접근성 API 매핑 명세는 네이티브 기술 기능 및 WAI-ARIA 확장을 포함한 특정 기술을 위해 이 핵심 명세에 의존하고 이를 확장한다. 이 문서는 핵심 접근성 API 매핑 1.1 [CORE-AAM-1.1] W3C 권고안의 지침을 갱신하며, 최종적으로 이를 대체할 것이다. 이는 WAI-ARIA 개요에서 설명하는 WAI-ARIA 모음의 일부이다.

이 문서의 상태

이 절은 이 문서가 발행된 시점의 상태를 설명한다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 찾을 수 있다.

Accessible Rich Internet Applications Working Group은 명세의 모든 측면에 대한 피드백을 구한다. 피드백을 제출할 때는 동반 문서들의 맥락에서 이슈를 고려하기 바란다. 의견을 제출하려면 W3C core-aam GitHub 저장소에 이슈를 등록하라. 이것이 가능하지 않은 경우 public-aria@w3.org로 이메일을 보내라(의견 아카이브). 진행 중인 문서 갱신은 공개적으로 볼 수 있는 편집자 초안에서 확인할 수 있다.

살아있는 명세 — 이 문서는 살아있는 명세로 유지된다. 최신 규범 버전은 핵심 접근성 API 매핑을 방문하라.

이 문서는 Accessible Rich Internet Applications Working Group권고안 트랙을 사용하여 후보 권고안 초안으로 발행하였다.

후보 권고안으로 발행되었다고 해서 W3C 및 그 회원들이 이를 승인한다는 의미는 아니다. 후보 권고안 초안은 Working Group이 이후의 후보 권고안 스냅샷에 포함하려는 이전 후보 권고안의 변경 사항을 통합한다.

이 문서는 초안 문서이며 언제든지 다른 문서로 갱신, 교체 또는 폐기될 수 있다. 진행 중인 작업이 아닌 다른 것으로 이 문서를 인용하는 것은 부적절하다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 제작하였다. W3C는 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지한다. 해당 페이지에는 특허를 공개하기 위한 지침도 포함되어 있다. 개인이 필수 청구항을 포함한다고 믿는 특허에 대한 실제 지식을 가지고 있는 경우, 그 개인은 W3C 특허 정책 제6절에 따라 정보를 공개해야 한다.

이 문서는 2025년 8월 18일 W3C 프로세스 문서의 적용을 받는다.

1. 소개

이 절은 비규범적이다.

핵심 접근성 API 매핑은 WAI-ARIA 역할, 상태속성이 사용자 에이전트에 의해 플랫폼 접근성 API를 통해 어떻게 노출될 것으로 기대되는지를 명시한다. 이는 다음 문서들을 포함하여 WAI-ARIA 명세를 정의하고 지원하는 리소스 집합의 일부이다.

WAI-ARIA에 대한 소개는 WAI-ARIA 개요를 참조하라.

1.1 접근성 API

접근성 API는 사용자 인터페이스에 관한 접근성 정보를 보조 기술에 전달할 수 있게 한다. 이 정보에는 다음이 포함된다.

  1. 설명적 속성(역할, 이름, 값, 위치 등)
  2. 일시적 상태(눌림, 포커스됨 등)
  3. 이벤트(텍스트 변경, 버튼 클릭, 체크박스 토글)
  4. 사용자가 취할 수 있는 동작(클릭, 체크/토글, 드래그 등)
  5. 관계(부모/자식, 설명/설명되는 객체, 이전 객체/다음 객체 등)
  6. 텍스트 콘텐츠

이 명세에서 다루는 접근성 API는 다음과 같다.

WAI-ARIA 1.0 사용자 에이전트 구현 가이드에는 IAccessibleEx로도 알려진 [UIA-EXPRESS]에 대한 매핑이 포함되어 있으며, 이는 Microsoft Internet Explorer 8.0 - 11에서 구현되었다. 새로운 구현은 대신 UI Automation을 사용할 것이 강하게 권장된다.

사용자 에이전트 개발자가 다른 접근성 API를 사용하여 정보를 노출해야 하는 경우, 해당 API가 실행되는 플랫폼의 개발자 및 그 플랫폼의 보조 기술 개발자와 긴밀히 협력할 것이 권장된다.

1.2 접근성 API 비교

다양한 기술적 및 역사적 이유로, 접근성 API는 모두 같은 방식으로 동작하지 않는다. 많은 경우, 각 API가 역할, 상태 및 속성을 보조 기술에 이름 붙이거나 노출하는 방식 사이에는 단순한 일대일 관계가 없다. 다음 하위 절들은 일부 API의 몇 가지 구별되는 특징을 설명한다.

1.2.1 ATK/AT-SPI

MSAA, IAccessible2, UIAAX API는 각각 콘텐츠와 대화형 구성 요소에 관한 정보를 노출하는 소프트웨어 애플리케이션과 그 정보를 소비하는 보조 기술 모두가 공유하는 API를 정의한다. 반대로 Linux/GNOME은 이러한 공유 인터페이스를 두 측면으로 분리하며, 각 측면은 서로 다른 접근성 APIATK 또는 AT-SPI로 표현된다.

ATK는 접근성 정보를 노출하기 위해 소프트웨어가 구현하는 인터페이스를 정의하는 반면, AT-SPI는 활성 애플리케이션에서 접근성 정보를 수집하고 이를 관심 있는 다른 애플리케이션, 일반적으로 보조 기술에 전달하는 데스크톱 서비스이다.

예를 들어, GNOME GUI 툴킷 [GTK]는 각 위젯(메뉴, 콤보박스, 체크박스 등)에 대해 ATK의 관련 측면을 구현하여 GTK 위젯이 자신에 관한 접근성 정보를 노출하도록 한다. 그러면 AT-SPI가 GTK로 구축된 애플리케이션에서 정보를 획득하고 이를 관심 있는 당사자에게 제공한다.

ATK는 구현자에게 가장 관련이 있는 반면, AT-SPI는 소비자에게 관련이 있다. WAI-ARIA 역할, 상태 및 속성 매핑의 맥락에서 사용자 에이전트는 구현자이며 ATK를 사용한다. 보조 기술은 소비자이며 AT-SPI를 사용한다.

1.2.2 UIA (UI Automation)

UI Automation은 애플리케이션 사용자 인터페이스의 모든 요소를 자동화 요소로 표현한다. 자동화 요소는 애플리케이션 접근성 트리의 노드를 형성하며, 자동화 클라이언트가 질의하고, 순회하고, 상호작용할 수 있다.

UI Automation의 중심이 되는 몇 가지 개념은 다음과 같다.

  • 자동화 요소 - 컨트롤과 일부 애플리케이션 콘텐츠는 자동화 요소로 제시된다.
  • 요소 속성 - 자동화 요소에는 모든 자동화 클라이언트가 이해할 수 있는 불특정 방식으로 네이티브 프레임워크 요소 특성을 설명하는 여러 공통 속성이 있다. 아래에 설명된 것처럼 요소 속성 값에 접근하는 몇 가지 방법이 있다.
  • 컨트롤 패턴 - 서로 다른 프레임워크의 일부 공통 상호작용성은 UIA에서 컨트롤 패턴으로 표현되어, 서로 다른 자동화 클라이언트가 공통 프로그래밍 인터페이스를 사용하여 컨트롤과 상호작용할 수 있게 한다.
  • 이벤트 - 다른 접근성 API와 유사하게, 자동화 요소는 자동화 제공자가 중요한 상태 변경을 클라이언트에 알릴 수 있게 하는 다양한 이벤트를 지원한다.

모든 자동화 요소는 IUIAutomationElement 인터페이스에서 상속되며, 특정 컨트롤 패턴에 특화되지 않은 모든 속성은 해당 인터페이스를 통해 질의할 수 있다. UI Automation 요소 속성에 접근하는 방법에는 몇 가지가 있다.

  • 현재 값에 대한 직접 속성 접근자 - Current{PropertyName}, 예: Name 속성의 경우 IUIAutomationElement::CurrentName
  • 캐시된 속성 접근자 - Cached{PropertyName}, 예: Name 속성의 경우 IUIAutomationElement::CachedName. 제공자와 클라이언트가 원격 환경에서 사용되는 경우 캐시된 값을 사용하는 것이 선호된다.
  • GetCurrentPropertyValue와 해당 속성에 대응하는 UIA Property ID 열거 값을 전달하여 현재 값을 얻는 방법, 예: Name 속성의 경우 IUIAutomationElement::GetCurrentPropertyValue(UIA_NamePropertyId).
  • GetCachedPropertyValue와 해당 속성에 대응하는 UIA Property ID 열거 값을 전달하여 캐시된 값을 얻는 방법, 예: Name 속성의 경우 IUIAutomationElement::GetCachedPropertyValue(UIA_NamePropertyId).

특정 UIA 컨트롤 패턴의 속성은 관련 컨트롤 패턴 인터페이스를 사용하여 같은 방식으로 질의된다. Toggle Pattern을 예로 들면, ToggleState 속성을 질의하기 위해 클라이언트는 현재 값을 얻는 데 IUIAutomationTogglePattern::CurrentToggleState 또는 IUIAutomationTogglePattern::GetCurrentPropertyValue(UIA_ToggleToggleStatePropertyId)를 사용할 수 있다.

이 명세의 속성 매핑은 {PropertyName}을 제공하며, 속성 값에 접근하는 모든 구체적인 방법을 명시하지 않는다. 자동화 클라이언트는 특정 요구와 코딩 스타일 관례에 따라 위에서 설명한 관례를 사용하여 현재 값 또는 캐시된 값에 접근할 수 있다.

1.2.3 Android 접근성 API

Android 접근성 서비스와 애플리케이션은 모두 사용자 인터페이스 요소를 AccessibilityNodeInfo 객체의 트리로 표현한다. 접근성 서비스는 이벤트를 받고, AccessibilityNodeInfo 트리를 순회하며, 속성을 검색하고, 노드에서 동작을 수행한다. 반대로 Android 애플리케이션은 뷰 또는 컴포저블을 구성하거나 AccessibilityNodeProvider를 통해 직접 구성함으로써 AccessibilityNodeInfo 트리를 간접적으로 구축한다. 그런 다음 이후에 이벤트를 발생시키고 동작을 처리한다.

WAI-ARIA 구현자에게 특히 관심 있는 것은 AccessibilityNodeInfoAccessibilityEvent의 속성, 동작 및 이벤트로의 매핑이다.

1.2.4 접근 가능한 이름 및 설명

각 플랫폼 접근성 API에는 접근 가능한 이름접근 가능한 설명 속성을 접근 가능한 객체에 할당하고 검색하는 방법이 포함되어 있으며, 이 객체는 접근성 트리에서 생성된다. 이러한 속성이 어떻게 구현되고 무엇이라고 불리는지는 API에 따라 달라진다.

예를 들어, MSAA에서는 모든 접근 가능한 객체가 객체의 접근 가능한 이름을 저장하는 accName 속성을 지원한다. 객체가 접근 가능한 설명도 지원하는 경우, MSAA는 이 속성을 객체의 accDescription 속성에 저장한다.

ATK를 사용하는 소프트웨어는 객체의 accessible-nameaccessible-description 속성을 읽고 쓸 수 있다. 이어서 AT-SPI는 atspi_accessible_get_nameatspi_accessible_get_description 함수를 통해 해당 속성의 값을 질의할 수 있다.

UIA 접근성 트리의 자동화 요소에는 Name 속성이 있다. 객체가 접근 가능한 설명도 지원하는 경우, UIA는 이 속성을 객체의 FullDescription 속성에 저장한다.

객체의 접근 가능한 설명aria-description 또는 aria-describedby에 의해 제공되는 경우, 이는 accessibilityCustomContent API에 노출되어야 한다. 그렇지 않으면 AXHelp로 노출되어야 한다.

Android에서 접근 가능한 이름은 AccessibilityNodeInfo에 정의된 콘텐츠 설명, 보충 설명 및 텍스트와 같은 여러 속성에 매핑된다.

자세한 내용은 접근 가능한 이름 및 설명 계산 명세를 참조하라.

2. 준수

비규범적으로 표시된 절뿐만 아니라 이 명세의 모든 저작 지침, 도식, 예제 및 참고는 비규범적이다. 이 명세의 그 밖의 모든 것은 규범적이다.

이 문서의 핵심 단어 MAY, MUST, MUST NOT, SHOULDSHOULD NOTBCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 하며, 여기 보인 것처럼 모두 대문자로 나타날 때에만 그렇게 해석된다.

규범적 절은 구현이 이 명세에 적합하기 위해 사용자 에이전트와 보조 기술이 반드시 따라야 하는 요구사항을 제공한다.

비규범적(정보성) 절은 명세를 이해하는 데 유용한 정보를 제공한다. 이러한 절에는 권장 실무의 예제가 포함될 수 있지만, 이 명세에 적합하기 위해 그러한 권장 사항을 따를 필요는 없다.

2.1 WAI-ARIA에서 폐기 예정인 기능

WAI-ARIA 명세는 일부 기능을 폐기 예정으로 나열한다. 이것은 작성자가 그러한 기능을 사용하지 않도록 권장된다는 뜻이지만, 해당 기능이 레거시 콘텐츠에서 여전히 사용될 수 있음이 예상된다. 따라서 사용자 에이전트가 이러한 기능을 접근성 API에 계속 매핑하는 것이 중요하며, 그렇게 하는 것은 이 명세에 대한 준수의 일부이다. 향후 버전의 WAI-ARIA 명세가 이러한 기능을 폐기 예정에서 제거됨으로 변경하면, 해당 기능은 매핑에서도 제거되며 사용자 에이전트는 더 이상 이러한 기능에 대한 지원을 계속하도록 요구받지 않을 것이다.

3. WAI-ARIA를 접근성 API에 매핑

3.1 WAI-ARIA 의미론을 노출하기 위한 일반 규칙

플랫폼 접근성 API에서 지원되는 경우, 사용자 에이전트는 데스크톱 접근성 API의 표준 메커니즘을 통해 WAI-ARIA 의미론을 노출한다. 예를 들어 WAI-ARIA 위젯의 경우, 해당 위젯이 유사한 데스크톱 위젯에서 어떻게 노출되는지를 비교한다. 일반적으로 대부분의 WAI-ARIA 위젯 기능은 접근성 API역할, 값, Boolean 상태 및 관계를 통해 노출된다.

WAI-ARIA 1.0 및 1.1과 관련하여, 접근성 API는 한 방향으로만 동작한다. 사용자 에이전트는 접근성 API를 통해 WAI-ARIA 정보(역할, 상태 및 속성)를 게시하고, AT는 같은 API를 사용하여 해당 정보를 얻을 수 있다. 그러나 반대 방향은 지원되지 않는다. WAI-ARIA 1.0 및 1.1은 보조 기술이 WAI-ARIA 정보를 직접 수정하기 위한 메커니즘을 정의하지 않는다.

“노출”, “매핑” 및 “포함”이라는 용어는 접근 가능한 객체 노드접근성 트리 안에 생성하고, 이러한 객체를 접근성 API상태속성으로 채우는 것을 가리킨다.

3.2 네이티브 마크업 의미론과 WAI-ARIA 간의 충돌

WAI-ARIA 역할, 상태 및 속성은 이러한 의미론을 가진 네이티브 호스트 언어 요소를 사용할 수 없을 때 의미론적 정보를 추가하기 위한 것이며, 일반적으로 자체 네이티브 의미론이 없는 요소에 사용된다. 또한 의도한 객체와 유사하지만 동일하지는 않은 의미론을 가진 요소에도 사용할 수 있다(예를 들어, 중첩 목록을 트리 구조를 표현하는 데 사용할 수 있다). 이 방법은 WAI-ARIA 구현이 없는 오래된 브라우저를 위한 대체 전략의 일부가 될 수 있거나, 재사용된 요소의 네이티브 표현이 필요한 스타일 및/또는 스크립트의 양을 줄이기 때문일 수 있다. 아래에 설명된 경우를 제외하고, 사용자 에이전트MUST 호스트 언어 의미론을 사용하는 대신, 요소를 접근성 API에 어떻게 노출할지를 정의하기 위해 항상 WAI-ARIA 의미론을 사용해야 한다.

호스트 언어에는 역할에 대응하는 암시적 WAI-ARIA 의미론을 가진 기능이 있을 수 있다. 접근성 API에 대응하는 역할이 있는 WAI-ARIA 역할이 제공된 경우, 사용자 에이전트는 MUST 해당 역할이 호스트 언어에 의해 네이티브 요소에서 명시적으로 금지된 속성의 WAI-ARIA 상태 및 속성을 요구하지 않는 한, 네이티브 의미론이 아니라 WAI-ARIA 역할의 의미론을 처리에 사용해야 한다. 역할의 값은 상태와 속성의 값과 같은 방식으로 충돌하지 않으며, 작성자는 일반적으로 재사용되지 않을 요소에 대해서도 WAI-ARIA 역할을 제공할 타당한 이유가 있을 것으로 기대된다. 예를 들어, 스핀 버튼은 대부분의 기본 키보드 지원을 얻기 위해 텍스트 필드(<input type="text">)로 구성되는 경우가 많다. 그러나 네이티브 역할인 “text field”는 스핀 버튼의 추가 기능을 제대로 전달하지 않기 때문에 올바르지 않다. 작성자는 컨트롤이 접근성 API에서 올바르게 매핑되도록 WAI-ARIA 역할 spinbutton(<input type="text" role="spinbutton" ...>)을 추가한다. 접근성 API에 대응하는 역할이 없는 WAI-ARIA 역할이 제공된 경우, 사용자 에이전트는 MAY 네이티브 의미론을 WAI-ARIA 역할에 추가로 노출할 수 있다. 호스트 언어 요소가 네이티브 호스트 언어 의미론이나 그 의미론의 하위 클래스와 동등하지 않은 의미론 또는 구조를 가진 WAI-ARIA 역할로 재정의된 경우, Allowed Accessibility Child Roles로 지정된 역할을 가진 모든 자식 요소를 presentation 또는 none으로 처리한다.

참고

위의 텍스트는 WAI-ARIA 명세와 약간 다르다. 사용자 에이전트가 네이티브 역할 대신 WAI-ARIA 역할을 노출해야 한다는 요구사항은, WAI-ARIA 역할에서 접근성 API의 대응하는 역할로 직접 매핑이 있는 경우에만 적용되도록 의도되었다. 그러나 WAI-ARIA 명세에서 해당 요구사항의 문구는 명확하지 않으며, 구현자들에 의해 다르게 해석되어 왔다. 여기서는 요구사항을 명확히 하고, 접근성 API의 역할로 직접 매핑이 없는 경우 사용자 에이전트가 네이티브 의미론을 노출할 수 있음을 나타내는 추가 문장을 더했다. 구현들이 서로 다르기 때문에, 작성자에게는 자체 의미론을 가진 네이티브 요소에 그러한 WAI-ARIA 역할을 추가하지 말도록 WAI-ARIA 저작 실무 가이드에서 권고할 것이다.

WAI-ARIA 상태 및 속성이 같은 암시적 WAI-ARIA 의미론을 가진 호스트 언어 기능에 대응하는 경우, 값이 동기화되지 않으면 문제가 될 수 있다. 예를 들어, HTML checked 속성과 aria-checked 속성은 서로 충돌하는 값을 가질 수 있다. 따라서 보조 기술에 충돌하는 상태와 속성을 제공하는 것을 방지하기 위해, 호스트 언어는 호스트 언어 요소에서 WAI-ARIA 속성의 사용이 해당 요소의 네이티브 속성과 충돌하는 위치를 명시적으로 선언할 것이다. 호스트 언어가 특정 요소에 대해 WAI-ARIA 속성이 네이티브 속성과 직접적인 의미론적 충돌을 가진다고 선언하는 경우, 사용자 에이전트는 MUST 해당 WAI-ARIA 속성을 무시하고, 대신 같은 암시적 의미론을 가진 호스트 언어 속성을 사용해야 한다.

호스트 언어는 WAI-ARIA로 재정의할 수 없는 기능도 문서화할 수 있다 (이를 “강한 네이티브 의미론”이라고 한다). 이는 암시적 WAI-ARIA 의미론을 가진 기능일 수도 있고, WAI-ARIA로 의미론이 변경될 경우 처리가 불확실해지는 기능일 수도 있다. 적합성 검사기는 WAI-ARIA 역할이 강한 네이티브 의미론을 가진 요소에 사용될 때 오류나 경고를 표시할 수 있지만, 사용자 에이전트는 요소를 접근성 API에 노출할 때 여전히 WAI-ARIA 역할의 의미론 값을 MUST 사용해야 한다.

3.3 접근성 API 속성에 직접 매핑되지 않는 속성 노출

플랫폼 접근성 API에는 WAI-ARIA에 없는 기능이 있을 수 있다. 마찬가지로 WAI-ARIA는 발행 시점에 접근성 API가 지원하지 않는 기능을 노출한다. 일반적으로 모든 WAI-ARIA 속성과 플랫폼 접근성 API 사이에 일대일 관계가 있는 것은 아니다. WAI-ARIA 역할, 상태속성이 접근성 API에 직접 매핑되지 않고, 해당 APIWAI-ARIA 역할, 상태, 속성 및 그 값을 노출하기 위한 메커니즘이 있는 경우, 사용자 에이전트MUST 다음과 같이 그 메커니즘을 사용하여 WAI-ARIA 데이터를 노출해야 한다.

참고

MSAAAPI에 직접 매핑되지 않는 속성을 노출하기 위한 메커니즘을 제공하지 않으며, 구현자들 사이에서도 이를 어떻게 수행할지에 대한 합의가 없다.

사용자 에이전트는 MUST 이 메커니즘을 통해 전체 역할 문자열도 노출해야 하며, MAY 접근성 API에 직접 매핑이 있는 경우에도 이 메커니즘을 통해 WAI-ARIA 속성과 값을 노출할 수 있다.

브라우저 구현자는 관련 정보를 노출하기 위한 자신의 API 메서드를 공개적으로 문서화할 것이 권장된다. 이를 통해 보조 기술 개발자가 사용자 기능을 지원하기 위해 해당 API를 사용할 수 있다.

3.4 역할 매핑

플랫폼 접근성 API는 전통적으로 해당 플랫폼의 보조 기술이 기대하는 미리 정의된 역할의 유한한 집합을 가지고 있었고, 하나 또는 두 개의 역할만 노출될 수 있었다. 이와 달리 WAI-ARIA는 여러 역할을 공백으로 구분된 유효한 역할 토큰의 순서 있는 집합으로 지정할 수 있게 한다. 추가 역할은 첫 번째 선택 글꼴 형식이 지원되지 않는 경우 여러 글꼴을 지정하는 개념과 유사한 대체 역할이다.

3.4.1 일반 규칙

사용자 에이전트는 WAI-ARIA 역할 문자열을 노출하는 메커니즘을 API가 지원하는 경우, 그 역할 문자열을 MUST 노출해야 한다. 이를 통해 보조 기술은 역할에 대해 자체적인 추가 처리를 수행할 수 있다.

  • MSAA: 지원되지 않음. 사용자 에이전트는 MSAAaccRole 속성에 사용자 지정 역할을 노출해서는 SHOULD NOT 된다.
  • IAccessible2: 객체 속성 쌍(xml-roles:"string")으로 노출한다
  • UIA: AriaRole 속성으로 노출한다. AriaRole property는 공백을 구분자로 사용하여 보조 역할도 지원할 수 있다.
  • ATK/AT-SPI: 객체 속성 쌍 (xml-roles:"string")으로 노출한다

3.4.2 계산된 역할

요소의 computedrole은 브라우저 엔진이 계산한 요소의 역할을 나타내는 문자열이다. computedrole은 주로 개발자 도구와 명세 준수 및 상호운용성 테스트의 목적으로 사용된다.

참고

사용자 에이전트는 이 역할 문자열을 예를 들어 개발자 도구에서, 그리고 WebDriver 함수 getComputedRole에 대한 응답에서 제공하며, 이는 ARIA, HTML-AAM 및 기타 명세의 상호운용성 테스트에 사용된다.

참고

요소에 역할이 있지만 요구되는 컨텍스트에 포함되어 있지 않은 경우(예를 들어, 역할이 list인 필수 접근성 부모가 없는 고아 listitem), 이는 작성 오류이지만 사용자 에이전트 동작은 단일 규칙으로 명시되어 있지 않다. 대부분의 역할에 대해 사용자 에이전트는 역할을 무시하여 오류를 복구하거나, 구현이 무해하다고 판단한 시나리오에서는 작성자의 의도한 역할을 존중할 수 있다. 엔진이 작성자 역할 오류를 처리하는 방식에서의 이러한 허용성은 [HTML-AAM]과 같은 언어별 매핑 문서에서 재정의될 수 있음에 유의하라.

호스트 언어 요소가 유효하고 추상적이지 않은 역할에 대한 정확하거나 동등한 매핑을 갖지 않는 경우, 관련 접근성 API 매핑 확장 명세는 상호운용성 테스트 목적의 반환 값으로 고유한 computedrole 문자열을 MAY 명시할 수 있다. 예를 들어 [HTML-AAM]의 <video> -> "html-video"가 있다. 그러나 작성자는 토큰이 유효하고 정의된 역할(예: dpub-chapter)에도 일치하지 않는 한, role 속성에서 호스트 언어 접두사가 붙은 어떤 computedrole 문자열도(예: html-video) 사용해서는 MUST NOT 된다. 사용자 에이전트는 추상 역할 토큰이나 유효하지 않은 역할 토큰을 MUST 무시해야 한다.

3.4.3 역할 매핑 표

3.4.3.1 alert
ARIA 명세 alert
계산된 역할

alert

MSAA + IAccessible2 역할: ROLE_SYSTEM_ALERT
이벤트: 사용자 에이전트는 SHOULD EVENT_SYSTEM_ALERT를 발생시켜야 한다. [참고 2]
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: alert
LiveSetting: Assertive (2)
이벤트: 사용자 에이전트는 시스템 alert 이벤트SHOULD 발생시켜야 한다. [참고 2]
ATK/AT-SPI 역할: ROLE_NOTIFICATION
이벤트: 사용자 에이전트는 시스템 alert 이벤트SHOULD 발생시켜야 한다. [참고 2]
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXApplicationAlert
이벤트: 사용자 에이전트는 시스템 alert 이벤트SHOULD 발생시켜야 한다. [참고 2]
Android

TBD

3.4.3.2 alertdialog
ARIA 명세 alertdialog
계산된 역할

alertdialog

MSAA + IAccessible2 역할: ROLE_SYSTEM_DIALOG
이벤트: 사용자 에이전트는 SHOULD EVENT_SYSTEM_ALERT를 발생시켜야 한다. [참고 2]
UIA 컨트롤 유형: Pane
이벤트: 사용자 에이전트는 시스템 alert 이벤트SHOULD 발생시켜야 한다. [참고 2]
ATK/AT-SPI 역할: ROLE_ALERT
인터페이스: Window
이벤트: 사용자 에이전트는 시스템 alert 이벤트SHOULD 발생시켜야 한다. [참고 2]
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXApplicationAlertDialog
이벤트: 사용자 에이전트는 시스템 alert 이벤트SHOULD 발생시켜야 한다. [참고 2]
Android

TBD

3.4.3.3 application
ARIA 명세 application
계산된 역할

application

MSAA + IAccessible2 역할: ROLE_SYSTEM_APPLICATION
UIA 컨트롤 유형: Pane
지역화된 컨트롤 유형: application
ATK/AT-SPI 역할: ROLE_EMBEDDED
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXWebApplication
Android

TBD

3.4.3.4 article
ARIA 명세 article
계산된 역할

article

MSAA + IAccessible2 역할: ROLE_SYSTEM_DOCUMENT
상태: STATE_SYSTEM_READONLY
객체 속성: xml-roles:article
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: article
ATK/AT-SPI 역할: ROLE_ARTICLE
객체 속성: xml-roles:article
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXDocumentArticle
Android

TBD

3.4.3.6 blockquote
ARIA 명세 blockquote
계산된 역할

blockquote

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
역할: IA2_ROLE_BLOCK_QUOTE
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: blockquote
ATK/AT-SPI 역할: ROLE_BLOCK_QUOTE
AX API[참고 1] AXRole: AXGroup
AXSubrole: <nil>
Android

TBD

3.4.3.7 aria-pressedaria-haspopup의 기본값을 가진 button
ARIA 명세 button with default values for aria-pressed and aria-haspopup
계산된 역할

button

MSAA + IAccessible2 역할: ROLE_SYSTEM_PUSHBUTTON
UIA 컨트롤 유형: Button
ATK/AT-SPI 역할: ROLE_PUSH_BUTTON
AX API[참고 1] AXRole: AXButton
AXSubrole: <nil>
Android

TBD

3.4.3.8 aria-haspopupfalse가 아닌 값을 가진 button
ARIA 명세 button with non-false value for aria-haspopup
계산된 역할

button

MSAA + IAccessible2 역할: ROLE_SYSTEM_BUTTONMENU
UIA 컨트롤 유형: Button
ATK/AT-SPI 역할: ROLE_PUSH_BUTTON
AX API[참고 1] AXRole: AXPopUpButton
AXSubrole: <nil>
Android

TBD

3.4.3.9 aria-pressed에 정의된 값을 가진 button
ARIA 명세 button with defined value for aria-pressed
계산된 역할

button

MSAA + IAccessible2 역할: ROLE_SYSTEM_PUSHBUTTON
역할: IA2_ROLE_TOGGLE_BUTTON
UIA 컨트롤 유형: Button
ATK/AT-SPI 역할: ROLE_TOGGLE_BUTTON
AX API[참고 1] AXRole: AXCheckBox
AXSubrole: AXToggle
Android

TBD

3.4.3.10 caption
ARIA 명세 caption
계산된 역할

caption

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
역할: IA2_ROLE_CAPTION
UIA 컨트롤 유형: Text
ATK/AT-SPI 역할: ROLE_CAPTION
AX API[참고 1] AXRole: AXGroup
AXSubrole: <nil>
Android

TBD

3.4.3.11 cell
ARIA 명세 cell
계산된 역할

cell

MSAA + IAccessible2 역할: ROLE_SYSTEM_CELL
인터페이스: IAccessibleTableCell
UIA 컨트롤 유형: DataItem
지역화된 컨트롤 유형: item
컨트롤 패턴: GridItem
컨트롤 패턴: TableItem
ATK/AT-SPI 역할: ROLE_TABLE_CELL
인터페이스: TableCell
AX API[참고 1] AXRole: AXCell
AXSubrole: <nil>
Android

TBD

3.4.3.12 checkbox
ARIA 명세 checkbox
계산된 역할

checkbox

MSAA + IAccessible2 역할: ROLE_SYSTEM_CHECKBUTTON
참조: 상태 및 속성 매핑 표aria-checked
UIA 컨트롤 유형: Checkbox
참조: 상태 및 속성 매핑 표aria-checked
ATK/AT-SPI 역할: ROLE_CHECK_BOX
참조: 상태 및 속성 매핑 표aria-checked
AX API[참고 1] AXRole: AXCheckBox
AXSubrole: <nil>
참조: 상태 및 속성 매핑 표aria-checked
Android

TBD

3.4.3.13 code
ARIA 명세 code
계산된 역할

code

MSAA + IAccessible2 역할: IA2_ROLE_TEXT_FRAME
객체 속성: xml-roles:code
UIA 컨트롤 유형: Text
지역화된 컨트롤 유형: code
ATK/AT-SPI 역할: ROLE_STATIC
객체 속성: xml-roles:code
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXCodeStyleGroup
Android

TBD

3.4.3.14 columnheader
ARIA 명세 columnheader
계산된 역할

columnheader

MSAA + IAccessible2 역할: ROLE_SYSTEM_COLUMNHEADER
인터페이스: IAccessibleTableCell
UIA 컨트롤 유형: DataItem
지역화된 컨트롤 유형: column header
컨트롤 패턴: GridItem
컨트롤 패턴: TableItem
ATK/AT-SPI 역할: ROLE_COLUMN_HEADER
인터페이스: TableCell
AX API[참고 1] AXRole: AXCell
AXSubrole: <nil>
Android

TBD

3.4.3.15 combobox
ARIA 명세 combobox
계산된 역할

combobox

MSAA + IAccessible2 역할: ROLE_SYSTEM_COMBOBOX
상태: STATE_SYSTEM_HASPOPUP
상태: aria-expanded"true"가 아닌 경우 STATE_SYSTEM_COLLAPSED
UIA 컨트롤 유형: Combobox
ATK/AT-SPI 역할: ROLE_COMBO_BOX
상태: STATE_EXPANDABLE
상태: STATE_HAS_POPUP
AX API[참고 1] AXRole: AXComboBox
AXSubrole: <nil>
Android

TBD

3.4.3.16 comment
ARIA 명세 comment
계산된 역할

comment

MSAA + IAccessible2 역할: IA2_ROLE_COMMENT
객체 속성: xml-roles:comment
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: comment
ATK/AT-SPI 역할: ROLE_COMMENT
객체 속성: xml-roles:comment
AX API[참고 1] AXRole: AXGroup
Android

TBD

3.4.3.17 complementary
ARIA 명세 complementary
계산된 역할

complementary

MSAA + IAccessible2 역할: IA2_ROLE_LANDMARK
객체 속성: xml-roles:complementary
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: complementary
랜드마크 유형: Custom
지역화된 랜드마크 유형: complementary
ATK/AT-SPI 역할: ROLE_LANDMARK
객체 속성: xml-roles:complementary
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXLandmarkComplementary
Android

TBD

3.4.3.18 contentinfo
ARIA 명세 contentinfo
계산된 역할

contentinfo

MSAA + IAccessible2 역할: IA2_ROLE_LANDMARK
객체 속성: xml-roles:contentinfo
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: content information
랜드마크 유형: Custom
지역화된 랜드마크 유형: content information
ATK/AT-SPI 역할: ROLE_LANDMARK
객체 속성: xml-roles:contentinfo
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXLandmarkContentInfo
Android

TBD

3.4.3.19 definition
ARIA 명세 definition
계산된 역할

definition

MSAA + IAccessible2 객체 속성: xml-roles:definition
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: definition
ATK/AT-SPI 역할: ROLE_DESCRIPTION_VALUE
객체 속성: xml-roles:definition
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXDefinition
Android

TBD

3.4.3.20 deletion
ARIA 명세 deletion
계산된 역할

deletion

MSAA + IAccessible2 역할: IA2_ROLE_CONTENT_DELETION
UIA 컨트롤 유형: Text
지역화된 컨트롤 유형: deletion
ATK/AT-SPI 역할: ROLE_CONTENT_DELETION
객체 속성: xml-roles:deletion
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXDeleteStyleGroup
AXAttributedStringForTextMarkerRange: deletion 안에 포함된 모든 텍스트에 대해 AXIsSuggestedDeletion = 1;을 포함함
Android

TBD

3.4.3.21 dialog
ARIA 명세 dialog
계산된 역할

dialog

MSAA + IAccessible2 역할: ROLE_SYSTEM_DIALOG
UIA 컨트롤 유형: Pane
ATK/AT-SPI 역할: ROLE_DIALOG
인터페이스: Window
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXApplicationDialog
Android

TBD

3.4.3.22 directory (폐기 예정)
ARIA 명세 directory
계산된 역할

list

MSAA + IAccessible2 역할: ROLE_SYSTEM_LIST
UIA 컨트롤 유형: List
ATK/AT-SPI 역할: ROLE_LIST
AX API[참고 1] AXRole: AXList
AXSubrole: AXContentList
Android

TBD

3.4.3.23 document
ARIA 명세 document
계산된 역할

document

MSAA + IAccessible2 역할: ROLE_SYSTEM_DOCUMENT
상태: STATE_SYSTEM_READONLY
UIA 컨트롤 유형: Document
ATK/AT-SPI 역할: ROLE_DOCUMENT_FRAME
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXDocument
Android

TBD

3.4.3.24 emphasis
ARIA 명세 emphasis
계산된 역할

emphasis

MSAA + IAccessible2 역할: IA2_ROLE_TEXT_FRAME
객체 속성: xml-roles:emphasis
UIA 컨트롤 유형: Text
지역화된 컨트롤 유형: emphasis
ATK/AT-SPI 역할: ROLE_STATIC
객체 속성: xml-roles:emphasis
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXEmphasisStyleGroup
Android

TBD

3.4.3.25 feed
ARIA 명세 feed
계산된 역할

feed

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
객체 속성: xml-roles:feed
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: feed
ATK/AT-SPI 역할: ROLE_PANEL
객체 속성: xml-roles:feed
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXApplicationGroup
Android

TBD

3.4.3.26 figure
ARIA 명세 figure
계산된 역할

figure

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
객체 속성: xml-roles:figure
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: figure
ATK/AT-SPI 역할: ROLE_PANEL
객체 속성: xml-roles:figure
AX API[참고 1] AXRole: AXGroup
AXSubrole: <nil>
Android

TBD

3.4.3.27 접근 가능한 이름을 가진 form
ARIA 명세 form with an accessible name
계산된 역할

form

MSAA + IAccessible2 역할: IA2_ROLE_FORM
객체 속성: xml-roles:form
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: form
랜드마크 유형: Form
ATK/AT-SPI 역할: ROLE_LANDMARK
객체 속성: xml-roles:form
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXLandmarkForm
Android

TBD

3.4.3.28 접근 가능한 이름이 없는 form
ARIA 명세 form without an accessible name
계산된 역할

form

MSAA + IAccessible2 요소를 랜드마크로 노출하지 않는다. 대신 요소의 네이티브 호스트 언어 역할을 사용한다.
UIA 요소를 랜드마크로 노출하지 않는다. 대신 요소의 네이티브 호스트 언어 역할을 사용한다.
ATK/AT-SPI 요소를 랜드마크로 노출하지 않는다. 대신 요소의 네이티브 호스트 언어 역할을 사용한다.
AX API[참고 1] 요소를 랜드마크로 노출하지 않는다. 대신 요소의 네이티브 호스트 언어 역할을 사용한다.
Android

TBD

3.4.3.29 generic
ARIA 명세 generic
계산된 역할

generic

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
역할: IA2_ROLE_SECTION
UIA 컨트롤 유형: Group
ATK/AT-SPI 역할: ROLE_SECTION
AX API[참고 1] AXRole: AXGroup
AXSubrole: <nil>
Android

TBD

3.4.3.30 grid
ARIA 명세 grid
계산된 역할

grid

MSAA + IAccessible2 역할: ROLE_SYSTEM_TABLE
객체 속성: xml-roles:grid
인터페이스: IAccessibleTable2
메서드: IAccessible::accSelect()
메서드: IAccessible::get_accSelection()
UIA 컨트롤 유형: DataGrid
컨트롤 패턴: Grid
컨트롤 패턴: Table
컨트롤 패턴: Selection
ATK/AT-SPI 역할: ROLE_TABLE
객체 속성: xml-roles:grid
인터페이스: Table
인터페이스: Selection

WAI-ARIA는 접근성 API를 통한 선택 수정을 지원하지 않으므로, 사용자 에이전트는 선택을 수정할 수 있는 수단을 제공하는 모든 Selection 메서드에 대해 falseMUST 반환해야 한다.

AX API[참고 1] AXRole: AXTable
AXSubrole: <nil>
AXColumnHeaderUIElements: columnheader 요소에 대한 포인터 목록
AXHeader: 해당 columnheader 요소를 포함하는 row 또는 group에 대한 포인터
AXRowHeaderUIElements: rowheader 요소에 대한 포인터 목록
Android

TBD

3.4.3.31 gridcell
ARIA 명세 gridcell
계산된 역할

gridcell

MSAA + IAccessible2 역할: ROLE_SYSTEM_CELL
인터페이스: IAccessibleTableCell
UIA 컨트롤 유형: DataItem
지역화된 컨트롤 유형: item
컨트롤 패턴: SelectionItem
컨트롤 패턴: GridItem
컨트롤 패턴: TableItem
SelectionItem.SelectionContainer: 포함하는 grid
ATK/AT-SPI 역할: ROLE_TABLE_CELL
인터페이스: TableCell
AX API[참고 1] AXRole: AXCell
AXSubrole: <nil>
Android

TBD

3.4.3.32 group
ARIA 명세 group
계산된 역할

group

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
UIA 컨트롤 유형: Group
ATK/AT-SPI 역할: ROLE_PANEL
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXApplicationGroup
Android

TBD

3.4.3.33 heading
ARIA 명세 heading
계산된 역할

heading

MSAA + IAccessible2 역할: IA2_ROLE_HEADING
객체 속성: xml-roles:heading
UIA 컨트롤 유형: Text
지역화된 컨트롤 유형: heading
ATK/AT-SPI 역할: ROLE_HEADING
AX API[참고 1] AXRole: AXHeading
AXSubrole: <nil>
Android

TBD

3.4.3.34 image
ARIA 명세 image
계산된 역할

image

MSAA + IAccessible2 역할: ROLE_SYSTEM_GRAPHIC
인터페이스: IAccessibleImage
UIA 컨트롤 유형: Image
ATK/AT-SPI 역할: ROLE_IMAGE
인터페이스: Image
AX API[참고 1] AXRole: AXImage
AXSubrole: <nil>
Android

TBD

3.4.3.35 img
ARIA 명세 img
계산된 역할

image

MSAA + IAccessible2 역할: ROLE_SYSTEM_GRAPHIC
인터페이스: IAccessibleImage
UIA 컨트롤 유형: Image
ATK/AT-SPI 역할: ROLE_IMAGE
인터페이스: Image
AX API[참고 1] AXRole: AXImage
AXSubrole: <nil>
Android

TBD

3.4.3.36 insertion
ARIA 명세 insertion
계산된 역할

insertion

MSAA + IAccessible2 역할: IA2_ROLE_CONTENT_INSERTION
UIA 컨트롤 유형: Text
지역화된 컨트롤 유형: insertion
ATK/AT-SPI 역할: ROLE_CONTENT_INSERTION
객체 속성: xml-roles:insertion
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXInsertStyleGroup
AXAttributedStringForTextMarkerRange: insertion 안에 포함된 모든 텍스트에 대해 AXIsSuggestedInsertion = 1;을 포함함
Android

TBD

3.4.3.38 list
ARIA 명세 list
계산된 역할

list

MSAA + IAccessible2 역할: ROLE_SYSTEM_LIST
상태: STATE_SYSTEM_READONLY
UIA 컨트롤 유형: List
ATK/AT-SPI 역할: ROLE_LIST
AX API[참고 1] AXRole: AXList
AXSubrole: AXContentList
Android

TBD

3.4.3.39 combobox의 접근성 부모가 없는 listbox
ARIA 명세 listbox
계산된 역할

listbox

MSAA + IAccessible2 역할: ROLE_SYSTEM_LIST
메서드: IAccessible::accSelect()
메서드: IAccessible::get_accSelection()
UIA 컨트롤 유형: List
컨트롤 패턴: Selection
ATK/AT-SPI 역할: ROLE_LIST_BOX
인터페이스: Selection

WAI-ARIA는 접근성 API를 통한 선택 수정을 지원하지 않으므로, 사용자 에이전트는 선택을 수정할 수 있는 수단을 제공하는 모든 Selection 메서드에 대해 MUST false를 반환해야 한다.

AX API[참고 1] AXRole: AXList
AXSubrole: <nil>
Android

TBD

3.4.3.40 combobox의 접근성 부모를 가진 listbox
ARIA 명세 listbox
계산된 역할

listbox

MSAA + IAccessible2 역할: ROLE_SYSTEM_LIST
메서드: IAccessible::accSelect()
메서드: IAccessible::get_accSelection()
UIA 컨트롤 유형: List
컨트롤 패턴: Selection
ATK/AT-SPI 역할: ROLE_MENU
인터페이스: Selection

WAI-ARIA는 접근성 API를 통한 선택 수정을 지원하지 않으므로, 사용자 에이전트는 선택을 수정할 수 있는 수단을 제공하는 모든 Selection 메서드에 대해 MUST false를 반환해야 한다.

AX API[참고 1] AXRole: AXList
AXSubrole: <nil>
Android

TBD

3.4.3.41 listitem
ARIA 명세 listitem
계산된 역할

listitem

MSAA + IAccessible2 역할: ROLE_SYSTEM_LISTITEM
상태: STATE_SYSTEM_READONLY
UIA 컨트롤 유형: ListItem
컨트롤 패턴: SelectionItem
SelectionItem.SelectionContainer: 포함하는 list
ATK/AT-SPI 역할: ROLE_LIST_ITEM
AX API[참고 1] AXRole: AXGroup
AXSubrole: <nil>
Android

TBD

3.4.3.42 log
ARIA 명세 log
계산된 역할

log

MSAA + IAccessible2 객체 속성: xml-roles:log
객체 속성: container-live:polite
객체 속성: live:polite
객체 속성: container-live-role:log
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: log
LiveSetting: Polite (1)
ATK/AT-SPI 역할: ROLE_LOG
객체 속성: xml-roles:log
객체 속성: container-live:polite
객체 속성: live:polite
객체 속성: container-live-role:log
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXApplicationLog
Android

TBD

3.4.3.43 main
ARIA 명세 main
계산된 역할

main

MSAA + IAccessible2 역할: IA2_ROLE_LANDMARK
객체 속성: xml-roles:main
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: main
랜드마크 유형: Main
ATK/AT-SPI 역할: ROLE_LANDMARK
객체 속성: xml-roles:main
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXLandmarkMain
Android

TBD

3.4.3.44 mark
ARIA 명세 mark
계산된 역할

mark

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
역할: IA2_ROLE_MARK
객체 속성: xml-roles:mark
UIA 컨트롤 유형: Group
ATK/AT-SPI 역할: ROLE_MARK
객체 속성: xml-roles:mark
AX API[참고 1] AXRole: AXGroup
AXRoleDescription: highlight
AXAttributedStringForTextMarkerRange: mark 안에 포함된 모든 텍스트에 대해 AXHighlight = 1;을 포함함
Android

TBD

3.4.3.45 marquee
ARIA 명세 marquee
계산된 역할

marquee

MSAA + IAccessible2 역할: ROLE_SYSTEM_ANIMATION
객체 속성: xml-roles:marquee
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: marquee
ATK/AT-SPI 역할: ROLE_MARQUEE
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXApplicationMarquee
Android

TBD

3.4.3.46 math
ARIA 명세 math
계산된 역할

math

MSAA + IAccessible2 역할: ROLE_SYSTEM_EQUATION
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: math
ATK/AT-SPI 역할: ROLE_MATH
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXDocumentMath
Android

TBD

3.4.3.52 meter
ARIA 명세 meter
계산된 역할

meter

MSAA + IAccessible2 역할: IA2_ROLE_LEVEL_BAR
인터페이스: IAccessibleValue
UIA 컨트롤 유형: ProgressBar
지역화된 컨트롤 유형: meter
컨트롤 패턴: RangeValue
ATK/AT-SPI 역할: ROLE_LEVEL_BAR
인터페이스: Value
AX API[참고 1] AXRole: AXLevelIndicator
AXSubrole: AXMeter
Android

TBD

3.4.3.54 none
ARIA 명세 none
계산된 역할

none

MSAA + IAccessible2

지정된 허용 접근성 자식이 있는 객체(예: gridcell 자식이 있는 grid, listitem 자식이 있는 list)의 경우, 그리고 그 하위 항목이 접근성 트리 안에 있는 경우, 이를 IA2_ROLE_TEXT_FRAME으로 노출한다. 사용자 에이전트는 빈 하위 항목을 접근성 트리에서 제거해야 SHOULD 한다.

UIA

지정된 허용 접근성 자식이 있는 객체(예: gridcell 자식이 있는 grid, listitem 자식이 있는 list)의 경우, 그리고 그 하위 항목이 접근성 트리 안에 있는 경우, 이를 text 패턴을 사용하여 노출한다. 사용자 에이전트는 빈 하위 항목을 접근성 트리에서 제거해야 SHOULD 한다.

ATK/AT-SPI

지정된 허용 접근성 자식이 있는 객체(예: gridcell 자식이 있는 grid, listitem 자식이 있는 list)의 경우, 그리고 그 하위 항목이 접근성 트리 안에 있는 경우, 이를 ROLE_SECTION으로 노출한다. 사용자 에이전트는 빈 하위 항목을 접근성 트리에서 제거해야 SHOULD 한다.

AX API[참고 1]

지정된 허용 접근성 자식이 있는 객체(예: gridcell 자식이 있는 grid, listitem 자식이 있는 list)의 경우, 그리고 그 하위 항목이 접근성 트리 안에 있는 경우, 이를 AXGroup으로 노출한다. 사용자 에이전트는 빈 하위 항목을 접근성 트리에서 제거해야 SHOULD 한다.

Android

TBD

3.4.3.55 note
ARIA 명세 note
계산된 역할

note

MSAA + IAccessible2 역할: IA2_ROLE_NOTE
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: note
ATK/AT-SPI 역할: ROLE_COMMENT
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXDocumentNote
Android

TBD

3.4.3.56 combobox 안에 있지 않은 option
ARIA 명세 option not inside combobox
계산된 역할

option

MSAA + IAccessible2 역할: ROLE_SYSTEM_LISTITEM
참조: 상태 및 속성 매핑 표aria-checked
UIA 컨트롤 유형: ListItem
컨트롤 패턴: Invoke
참조: 상태 및 속성 매핑 표aria-checked
ATK/AT-SPI 역할: ROLE_LIST_ITEM
참조: 상태 및 속성 매핑 표aria-checked
AX API[참고 1] AXRole: AXStaticText
AXSubrole: <nil>
참조: 상태 및 속성 매핑 표aria-checked
Android

TBD

3.4.3.57 combobox 안의 option
ARIA 명세 option inside combobox
계산된 역할

option

MSAA + IAccessible2 역할: ROLE_SYSTEM_LISTITEM
참조: 상태 및 속성 매핑 표aria-checked
UIA 컨트롤 유형: ListItem
컨트롤 패턴: Invoke
참조: 상태 및 속성 매핑 표aria-checked
ATK/AT-SPI 역할: ROLE_MENU_ITEM
참조: 상태 및 속성 매핑 표aria-checked
AX API[참고 1] AXRole: AXStaticText
AXSubrole: <nil>
참조: 상태 및 속성 매핑 표aria-checked
Android

TBD

3.4.3.58 paragraph
ARIA 명세 paragraph
계산된 역할

paragraph

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
역할: IA2_ROLE_PARAGRAPH
UIA 컨트롤 유형: Text
ATK/AT-SPI 역할: ROLE_PARAGRAPH
AX API[참고 1] AXRole: AXGroup
AXSubrole: <nil>
Android

TBD

3.4.3.59 presentation
ARIA 명세 presentation
계산된 역할

none

MSAA + IAccessible2

지정된 허용 접근성 자식이 있는 객체(예: gridcell 자식이 있는 grid, listitem 자식이 있는 list)의 경우, 그리고 그 하위 항목이 접근성 트리 안에 있는 경우, 이를 IA2_ROLE_TEXT_FRAME으로 노출한다. 사용자 에이전트는 빈 하위 항목을 접근성 트리에서 제거해야 SHOULD 한다.

UIA

지정된 허용 접근성 자식이 있는 객체(예: gridcell 자식이 있는 grid, listitem 자식이 있는 list)의 경우, 그리고 그 하위 항목이 접근성 트리 안에 있는 경우, 이를 text 패턴을 사용하여 노출한다. 사용자 에이전트는 빈 하위 항목을 접근성 트리에서 제거해야 SHOULD 한다.

ATK/AT-SPI

지정된 허용 접근성 자식이 있는 객체(예: gridcell 자식이 있는 grid, listitem 자식이 있는 list)의 경우, 그리고 그 하위 항목이 접근성 트리 안에 있는 경우, 이를 ROLE_SECTION으로 노출한다. 사용자 에이전트는 빈 하위 항목을 접근성 트리에서 제거해야 SHOULD 한다.

AX API[참고 1]

지정된 허용 접근성 자식이 있는 객체(예: gridcell 자식이 있는 grid, listitem 자식이 있는 list)의 경우, 그리고 그 하위 항목이 접근성 트리 안에 있는 경우, 이를 AXGroup으로 노출한다. 사용자 에이전트는 빈 하위 항목을 접근성 트리에서 제거해야 SHOULD 한다.

Android

TBD

3.4.3.60 progressbar
ARIA 명세 progressbar
계산된 역할

progressbar

MSAA + IAccessible2 역할: ROLE_SYSTEM_PROGRESSBAR
상태: STATE_SYSTEM_READONLY
인터페이스: IAccessibleValue
UIA 컨트롤 유형: ProgressBar
aria-valuenow, aria-valuemax 또는 aria-valuemin이 있는 경우 컨트롤 패턴: RangeValue
ATK/AT-SPI 역할: ROLE_PROGRESS_BAR
인터페이스: Value

WAI-ARIA는 접근성 API를 통한 값 수정을 지원하지 않으므로, 사용자 에이전트는 값을 수정할 수 있는 수단을 제공하는 모든 Value 메서드에 대해 falseMUST 반환해야 한다.

AX API[참고 1] AXRole: AXProgressIndicator
AXSubrole: <nil>
Android

TBD

3.4.3.61 radio
ARIA 명세 radio
계산된 역할

radio

MSAA + IAccessible2 역할: ROLE_SYSTEM_RADIOBUTTON
참조: 상태 및 속성 매핑 표aria-checked
UIA 컨트롤 유형: RadioButton
컨트롤 패턴: Toggle
컨트롤 패턴: SelectionItem
참조: 상태 및 속성 매핑 표aria-checked
ATK/AT-SPI 역할: ROLE_RADIO_BUTTON
참조: 상태 및 속성 매핑 표aria-checked
AX API[참고 1] AXRole: AXRadioButton
AXSubrole: <nil>
참조: 상태 및 속성 매핑 표aria-checked
Android

TBD

3.4.3.62 radiogroup
ARIA 명세 radiogroup
계산된 역할

radiogroup

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
UIA 컨트롤 유형: List
ATK/AT-SPI 역할: ROLE_PANEL
AX API[참고 1] AXRole: AXRadioGroup
AXSubrole: <nil>
Android

TBD

3.4.3.63 접근 가능한 이름을 가진 region
ARIA 명세 region with an accessible name
계산된 역할

region

MSAA + IAccessible2 역할: IA2_ROLE_LANDMARK
객체 속성: xml-roles:region
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: region
랜드마크 유형: Custom
지역화된 랜드마크 유형: region
ATK/AT-SPI 역할: ROLE_LANDMARK
객체 속성: xml-roles:region
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXLandmarkRegion
Android

TBD

3.4.3.64 접근 가능한 이름이 없는 region
ARIA 명세 region without an accessible name
계산된 역할

네이티브 호스트 언어 역할을 사용한다.

MSAA + IAccessible2 요소를 랜드마크로 노출하지 않는다. 대신 요소의 네이티브 호스트 언어 역할을 사용한다.
UIA 요소를 랜드마크로 노출하지 않는다. 대신 요소의 네이티브 호스트 언어 역할을 사용한다.
ATK/AT-SPI 요소를 랜드마크로 노출하지 않는다. 대신 요소의 네이티브 호스트 언어 역할을 사용한다.
AX API[참고 1] 요소를 랜드마크로 노출하지 않는다. 대신 요소의 네이티브 호스트 언어 역할을 사용한다.
Android

TBD

3.4.3.65 treegrid 안에 있지 않은 row
ARIA 명세 row not inside treegrid
계산된 역할

row

MSAA + IAccessible2 역할: ROLE_SYSTEM_ROW
UIA 컨트롤 유형: DataItem
지역화된 컨트롤 유형: row
컨트롤 패턴: SelectionItem
ATK/AT-SPI 역할: ROLE_TABLE_ROW
AX API[참고 1] AXRole: AXRow
AXSubrole: <nil>
Android

TBD

3.4.3.66 treegrid 안의 row
ARIA 명세 row inside treegrid
계산된 역할

row

MSAA + IAccessible2 역할: ROLE_SYSTEM_OUTLINEITEM
UIA 컨트롤 유형: DataItem
지역화된 컨트롤 유형: row
컨트롤 패턴: SelectionItem
ATK/AT-SPI 역할: ROLE_TABLE_ROW
AX API[참고 1] AXRole: AXRow
AXSubrole: <nil>
Android

TBD

3.4.3.67 rowgroup
ARIA 명세 rowgroup
계산된 역할

rowgroup

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
UIA 컨트롤 유형: Group
ATK/AT-SPI 역할: ROLE_PANEL
AX API[참고 1] 매핑되지 않음
Android

TBD

3.4.3.68 rowheader
ARIA 명세 rowheader
계산된 역할

rowheader

MSAA + IAccessible2 역할: ROLE_SYSTEM_ROWHEADER
인터페이스: IAccessibleTableCell
UIA 컨트롤 유형: HeaderItem
ATK/AT-SPI 역할: ROLE_ROW_HEADER
인터페이스: TableCell
AX API[참고 1] AXRole: AXCell
AXSubrole: <nil>
Android

TBD

3.4.3.69 scrollbar
ARIA 명세 scrollbar
계산된 역할

scrollbar

MSAA + IAccessible2 역할: ROLE_SYSTEM_SCROLLBAR
인터페이스: IAccessibleValue
UIA 컨트롤 유형: ScrollBar
컨트롤 패턴: RangeValue
ATK/AT-SPI 역할: ROLE_SCROLL_BAR
인터페이스: Value

WAI-ARIA는 접근성 API를 통한 값 수정을 지원하지 않으므로, 사용자 에이전트는 값을 수정할 수 있는 수단을 제공하는 모든 Value 메서드에 대해 falseMUST 반환해야 한다.

AX API[참고 1] AXRole: AXScrollBar
AXSubrole: <nil>
Android

TBD

3.4.3.72 sectionfooter
ARIA 명세 sectionfooter
계산된 역할

sectionfooter

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
객체 속성: xml-roles:sectionfooter
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: section footer
ATK/AT-SPI 역할: ROLE_FOOTER
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXSectionFooter
AXRoleDescription: section footer
Android

TBD

3.4.3.73 sectionheader
ARIA 명세 sectionheader
계산된 역할

sectionheader

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
객체 속성: xml-roles:sectionheader
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: section header
ATK/AT-SPI 역할: ROLE_HEADER
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXSectionHeader
AXRoleDescription: section header
Android

TBD

3.4.3.74 separator (포커스 불가능)
ARIA 명세 separator (포커스 불가능)
계산된 역할

seperator

MSAA + IAccessible2 역할: ROLE_SYSTEM_SEPARATOR
UIA 컨트롤 유형: Separator
ATK/AT-SPI 역할: ROLE_SEPARATOR
AX API[참고 1] AXRole: AXSplitter
AXSubrole: <nil>
Android

TBD

3.4.3.75 separator (포커스 가능)
ARIA 명세 separator (포커스 가능)
계산된 역할

seperator

MSAA + IAccessible2 역할: ROLE_SYSTEM_SEPARATOR
인터페이스: IAccessibleValue
UIA 컨트롤 유형: Thumb
컨트롤 패턴: RangeValue
ATK/AT-SPI 역할: ROLE_SEPARATOR
인터페이스: Value

WAI-ARIA는 접근성 API를 통한 값 수정을 지원하지 않으므로, 사용자 에이전트는 값을 수정할 수 있는 수단을 제공하는 모든 Value 메서드에 대해 falseMUST 반환해야 한다.

AX API[참고 1] AXRole: AXSplitter
AXSubrole: <nil>
Android

TBD

3.4.3.76 slider
ARIA 명세 slider
계산된 역할

slider

MSAA + IAccessible2 역할: ROLE_SYSTEM_SLIDER
인터페이스: IAccessibleValue
UIA 컨트롤 유형: Slider
컨트롤 패턴: RangeValue
ATK/AT-SPI 역할: ROLE_SLIDER
인터페이스: Value

WAI-ARIA는 접근성 API를 통한 값 수정을 지원하지 않으므로, 사용자 에이전트는 값을 수정할 수 있는 수단을 제공하는 모든 Value 메서드에 대해 falseMUST 반환해야 한다.

AX API[참고 1] AXRole: AXSlider
AXSubrole: <nil>
Android

TBD

3.4.3.77 spinbutton
ARIA 명세 spinbutton
계산된 역할

spinbutton

MSAA + IAccessible2 역할: ROLE_SYSTEM_SPINBUTTON
인터페이스: IAccessibleValue
UIA 컨트롤 유형: Spinner
컨트롤 패턴: RangeValue
ATK/AT-SPI 역할: ROLE_SPIN_BUTTON
인터페이스: Value

WAI-ARIA는 접근성 API를 통한 값 수정을 지원하지 않으므로, 사용자 에이전트는 값을 수정할 수 있는 수단을 제공하는 모든 Value 메서드에 대해 falseMUST 반환해야 한다.

AX API[참고 1] AXRole: AXIncrementor
AXSubrole: <nil>
Android

TBD

3.4.3.78 status
ARIA 명세 status
계산된 역할

status

MSAA + IAccessible2 역할: ROLE_SYSTEM_STATUSBAR
객체 속성: container-live:polite
객체 속성: live:polite
객체 속성: container-live-role:status
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: status
LiveSetting: Polite (1)
ATK/AT-SPI 역할: ROLE_STATUSBAR
객체 속성: container-live:polite
객체 속성: live:polite
객체 속성: container-live-role:status
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXApplicationStatus
Android

TBD

3.4.3.79 strong
ARIA 명세 strong
계산된 역할

strong

MSAA + IAccessible2 역할: IA2_ROLE_TEXT_FRAME
객체 속성: xml-roles:strong
UIA 컨트롤 유형: Text
지역화된 컨트롤 유형: strong
ATK/AT-SPI 역할: ROLE_STATIC
객체 속성: xml-roles:strong
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXStrongStyleGroup
Android

TBD

3.4.3.80 subscript
ARIA 명세 subscript
계산된 역할

subscript

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
역할: IA2_ROLE_TEXT_FRAME
텍스트 속성: text-position:sub
UIA 컨트롤 유형: Text
사용된 스타일은 접근 가능한 객체에 구현된 TextRange 컨트롤 패턴의 IsSubscript 속성으로 노출된다.
ATK/AT-SPI 역할: ROLE_SUBSCRIPT
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXSubscriptStyleGroup
Android

TBD

3.4.3.81 suggestion
ARIA 명세 suggestion
계산된 역할

suggestion

MSAA + IAccessible2 역할: IA2_ROLE_SUGGESTION
객체 속성: xml-roles:suggestion
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: suggestion
ATK/AT-SPI 역할: ROLE_SUGGESTION
객체 속성: xml-roles:suggestion
AX API[참고 1] AXRole: AXGroup
AXAttributedStringForTextMarkerRange: suggestion 안에 포함된 모든 텍스트에 대해 AXIsSuggestion = 1;을 포함함
Android

TBD

3.4.3.82 superscript
ARIA 명세 superscript
계산된 역할

superscript

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
역할: IA2_ROLE_TEXT_FRAME
텍스트 속성: text-position:super
UIA 컨트롤 유형: Text
사용된 스타일은 접근 가능한 객체에 구현된 TextRange 컨트롤 패턴의 IsSuperscript 속성으로 노출된다.
ATK/AT-SPI 역할: ROLE_SUPERSCRIPT
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXSuperscriptStyleGroup
Android

TBD

3.4.3.83 switch
ARIA 명세 switch
계산된 역할

switch

MSAA + IAccessible2 역할: ROLE_SYSTEM_CHECKBUTTON
역할: IA2_ROLE_TOGGLE_BUTTON
객체 속성: xml-roles:switch
참조: 상태 및 속성 매핑 표aria-checked
UIA 컨트롤 유형: Button
지역화된 컨트롤 유형: toggleswitch
컨트롤 패턴: Toggle
참조: 상태 및 속성 매핑 표aria-checked
ATK/AT-SPI 역할: ROLE_TOGGLE_BUTTON
객체 속성: xml-roles:switch
참조: 상태 및 속성 매핑 표aria-checked
AX API[참고 1] AXRole: AXCheckBox
AXSubrole: AXSwitch
참조: 상태 및 속성 매핑 표aria-checked
Android

TBD

3.4.3.84 tab
ARIA 명세 tab
계산된 역할

tab

MSAA + IAccessible2 역할: ROLE_SYSTEM_PAGETAB
aria-labelledby와 연결된 tabpanel 안에 포커스가 있는 경우 상태: STATE_SYSTEM_SELECTED
UIA 컨트롤 유형: TabItem
ATK/AT-SPI 역할: ROLE_PAGE_TAB
aria-labelledby와 연결된 tabpanel 안에 포커스가 있는 경우 상태: STATE_SELECTED
AX API[참고 1] AXRole: AXRadioButton
AXSubrole: AXTabButton
Android

TBD

3.4.3.85 table
ARIA 명세 table
계산된 역할

table

MSAA + IAccessible2 역할: ROLE_SYSTEM_TABLE
객체 속성: xml-roles:table
인터페이스: IAccessibleTable2
UIA 컨트롤 유형: Table
컨트롤 패턴: Grid
컨트롤 패턴: Table
ATK/AT-SPI 역할: ROLE_TABLE
객체 속성: xml-roles:table
인터페이스: Table
AX API[참고 1] AXRole: AXTable
AXSubrole: <nil>
AXColumnHeaderUIElements: columnheader 요소에 대한 포인터 목록
AXHeader: 해당 columnheader 요소를 포함하는 row 또는 group에 대한 포인터
AXRowHeaderUIElements: rowheader 요소에 대한 포인터 목록
Android

TBD

3.4.3.86 tablist
ARIA 명세 tablist
계산된 역할

tablist

MSAA + IAccessible2 역할: ROLE_SYSTEM_PAGETABLIST
메서드: IAccessible::accSelect()
메서드: IAccessible::get_accSelection()
UIA 컨트롤 유형: Tab
컨트롤 패턴: Selection
ATK/AT-SPI 역할: ROLE_PAGE_TAB_LIST
인터페이스: Selection

WAI-ARIA는 접근성 API를 통한 선택 수정을 지원하지 않으므로, 사용자 에이전트는 선택을 수정할 수 있는 수단을 제공하는 모든 Selection 메서드에 대해 falseMUST 반환해야 한다.

AX API[참고 1] AXRole: AXTabGroup
AXSubrole: <nil>
Android

TBD

3.4.3.87 tabpanel
ARIA 명세 tabpanel
계산된 역할

tabpanel

MSAA + IAccessible2 역할: ROLE_SYSTEM_PANE 또는 ROLE_SYSTEM_PROPERTYPAGE
UIA 컨트롤 유형: Pane
ATK/AT-SPI 역할: ROLE_SCROLL_PANE
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXTabPanel
Android

TBD

3.4.3.88 term
ARIA 명세 term
계산된 역할

term

MSAA + IAccessible2 역할: IA2_ROLE_TEXT_FRAME
객체 속성: xml-roles:term
UIA 컨트롤 유형: Text
지역화된 컨트롤 유형: term
ATK/AT-SPI 역할: ROLE_DESCRIPTION_TERM
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXTerm
Android

TBD

3.4.3.89 aria-multilinefalse일 때 textbox
ARIA 명세 textbox when aria-multiline is false
계산된 역할

textbox

MSAA + IAccessible2 역할: ROLE_SYSTEM_TEXT
상태: IA2_STATE_SINGLE_LINE
UIA 컨트롤 유형: Edit
ATK/AT-SPI 역할: ROLE_ENTRY
상태: STATE_SINGLE_LINE
aria-readonly"true"가 아닌 경우 인터페이스: EditableText
AX API[참고 1] AXRole: AXTextField
AXSubrole: <nil>
Android

TBD

3.4.3.90 aria-multilinetrue일 때 textbox
ARIA 명세 textbox when aria-multiline is true
계산된 역할

textbox

MSAA + IAccessible2 역할: ROLE_SYSTEM_TEXT
상태: IA2_STATE_MULTI_LINE
UIA 컨트롤 유형: Edit
ATK/AT-SPI 역할: ROLE_ENTRY
상태: STATE_MULTI_LINE
aria-readonly"true"가 아닌 경우 인터페이스: EditableText
AX API[참고 1] AXRole: AXTextArea
AXSubrole: <nil>
Android

TBD

3.4.3.91 time
ARIA 명세 time
계산된 역할

time

MSAA + IAccessible2 역할: ROLE_SYSTEM_GROUPING
객체 속성: xml-roles:time
UIA 컨트롤 유형: Text
지역화된 컨트롤 유형: time
참고: Text 유형의 별도 UIA Control을 생성한다. 이는 대부분의 UIA 텍스트 매핑과 다르며, 그러한 매핑은 페이지 텍스트 패턴 안에 범위만 생성한다.
ATK/AT-SPI 역할: ROLE_STATIC
객체 속성: xml-roles:time
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXTimeGroup
Android

TBD

3.4.3.92 timer
ARIA 명세 timer
계산된 역할

timer

MSAA + IAccessible2 객체 속성: xml-roles:timer
UIA 컨트롤 유형: Group
지역화된 컨트롤 유형: timer
ATK/AT-SPI 역할: ROLE_TIMER
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXApplicationTimer
Android

TBD

3.4.3.93 toolbar
ARIA 명세 toolbar
계산된 역할

toolbar

MSAA + IAccessible2 역할: ROLE_SYSTEM_TOOLBAR
UIA 컨트롤 유형: ToolBar
ATK/AT-SPI 역할: ROLE_TOOL_BAR
AX API[참고 1] AXRole: AXToolbar
AXSubrole: <nil>
Android

TBD

3.4.3.94 tooltip
ARIA 명세 tooltip
계산된 역할

tooltip

MSAA + IAccessible2 역할: ROLE_SYSTEM_TOOLTIP
UIA 컨트롤 유형: ToolTip
ATK/AT-SPI 역할: ROLE_TOOL_TIP
AX API[참고 1] AXRole: AXGroup
AXSubrole: AXUserInterfaceTooltip
Android

TBD

3.4.3.95 tree
ARIA 명세 tree
계산된 역할

tree

MSAA + IAccessible2 역할: ROLE_SYSTEM_OUTLINE
메서드: IAccessible::accSelect()
메서드: IAccessible::get_accSelection()
UIA 컨트롤 유형: Tree
ATK/AT-SPI 역할: ROLE_TREE
인터페이스: Selection

WAI-ARIA는 접근성 API를 통한 선택 수정을 지원하지 않으므로, 사용자 에이전트는 선택을 수정할 수 있는 수단을 제공하는 모든 Selection 메서드에 대해 falseMUST 반환해야 한다.

AX API[참고 1] AXRole: AXOutline
AXSubrole: <nil>
Android

TBD

3.4.3.96 treegrid
ARIA 명세 treegrid
계산된 역할

treegrid

MSAA + IAccessible2 역할: ROLE_SYSTEM_OUTLINE
인터페이스: IAccessibleTable2
메서드: IAccessible::accSelect()
메서드: IAccessible::get_accSelection()
UIA 컨트롤 유형: DataGrid
ATK/AT-SPI 역할: ROLE_TREE_TABLE
인터페이스: Table
인터페이스: Selection

WAI-ARIA는 접근성 API를 통한 선택 수정을 지원하지 않으므로, 사용자 에이전트는 선택을 수정할 수 있는 수단을 제공하는 모든 Selection 메서드에 대해 falseMUST 반환해야 한다.

AX API[참고 1] AXRole: AXTable
AXSubrole: <nil>
Android

TBD

3.4.3.97 treeitem
ARIA 명세 treeitem
계산된 역할

treeitem

MSAA + IAccessible2 역할: ROLE_SYSTEM_OUTLINEITEM
참조: 상태 및 속성 매핑 표aria-checked
UIA 컨트롤 유형: TreeItem
참조: 상태 및 속성 매핑 표aria-checked
ATK/AT-SPI 역할: ROLE_TREE_ITEM
참조: 상태 및 속성 매핑 표aria-checked
AX API[참고 1] AXRole: AXRow
AXSubrole: AXOutlineRow
참조: 상태 및 속성 매핑 표aria-checked
Android

TBD

참고

[참고 1] 사용자 에이전트는 AXRoleDescription에 대해 사용자가 볼 수 있는 지역화된 문자열 값을 반환해야 한다.

참고

[참고 2] 이 명세는 현재 사용자 에이전트가 언제 시스템 alert 이벤트를 발생시켜야 하는지에 대한 지침을 포함하지 않는다. 일부 지침이 나중에 명세에 추가될 수 있지만, 이는 요구사항(MUST)이 아니라 권고사항(SHOULD)이 될 것이다.

3.5 상태 및 속성 매핑

이 절은 WAI-ARIA 상태속성을 노출하는 방법을 설명한다.

3.5.1 일반 규칙

  1. 사용자 에이전트MUST 관리되는 상태인 managed states VISIBLE/INVISIBLE, SHOWING/OFFSCREEN 등을 계산해야 한다. 이는 일반적으로 WAI-ARIA 속성이 없는 일반적인 요소와 같은 방식으로 수행된다. FOCUSABLE/FOCUSED 상태는 aria-activedescendant의 영향을 받을 수 있다.
  2. 사용자 에이전트는 호스트 언어가 명시적 WAI-ARIA 재정의를 허용하는 경우를 제외하고, WAI-ARIA 상태 및 속성 의미론에 더하여 네이티브 의미론을 계속 노출해야 MUST 한다. 예를 들어, HTML 체크박스는 aria-labelledby 속성을 가질 수 있지만, 네이티브 HTML 의미론은 여전히 노출되어야 한다.
  3. 사용자 에이전트는 역할 매핑 표에 정의된 대로 특정 역할에 대한 추가 상태를 노출해야 MUST 한다.
  4. 사용자 에이전트는 관련 WAI-ARIA 속성에 대한 상태를 계산하고, 접근성 API상태 및 속성 매핑 표에 명시된 대로 매핑해야 MUST 한다. 관련 WAI-ARIA 속성을 결정하려면 역할의 정의 [WAI-ARIA-1.2]]를 참조하라. 작성자가 필수 속성에 대한 값을 제공하지 않은 경우, 사용자 에이전트는 기본값이 제공된 것처럼 처리해야 SHOULD 한다.
  5. 일부 WAI-ARIA 속성은 전역이 아니며, 특정 역할에서만 지원된다. 전역이 아닌 WAI-ARIA 상태 또는 속성이 지원되지 않는 위치에서 사용된 경우, 사용자 에이전트는 주어진 WAI-ARIA 속성을 플랫폼 접근성 API에 매핑하지 않아야 SHOULD NOT 한다. 예를 들어, aria-checked="true"<div role="grid">에 지정된 경우, 이는 MSAA 구현에서 STATE_SYSTEM_CHECKED로 노출되어서는 안 된다.
  6. 명시적 또는 상속된 none 또는 presentation 역할이 요소에 적용된 경우, 사용자 에이전트는 Accessible Rich Internet Applications (WAI-ARIA) 1.2 [WAI-ARIA-1.2]]에 정의된 none 또는 presentation 역할에 대한 규칙을 구현해야 MUST 한다.

3.5.2 상태 및 속성 매핑 표

3.5.2.1 매핑되지 않음

표에는 주어진 상태 또는 속성이 "매핑되지 않음"으로 선언되는 경우가 여러 번 있다. 어떤 경우에는 이것이 상태/속성의 기본값에 대해 발생하며, 그 부재와 동등하다. 사용자 에이전트는 그것이 기본값인지 확인하는 것보다 값을 매핑하는 것이 더 빠르다고 판단할 수 있다. 계산 효율성을 위해, 그렇게 하는 것이 매핑하지 않는 것과 동등하다면 사용자 에이전트는 MAY 상태 또는 속성 값을 노출할 수 있다. 이러한 경우는 별표로 표시된다.

다른 경우에는 상태/속성을 매핑하지 않는 것이 필수적이다. 이를 노출하면 관련된 어포던스가 암시되기 때문이다. 예는 aria-grabbed이다. 그 부재는 접근 가능한 객체가 잡혀 있지 않음을 나타낼 뿐만 아니라, 더 나아가 그것이 잡을 수 없는 것임을 정의한다. 이러한 경우는 별표 없이 "매핑되지 않음"으로 표시된다.

3.5.2.2 aria-activedescendant
ARIA 명세 aria-activedescendant
MSAA + IAccessible2 포커스 변경을 참조하라.
UIA 포커스 변경을 참조하라.
ATK/AT-SPI 포커스 변경을 참조하라.
AX API 포커스 변경을 참조하라.
속성: AXSelectedRows: 활성 자손 노드에 대한 포인터
Android

TBD

3.5.2.3 aria-atomic=true
ARIA 명세 aria-atomic=true
MSAA + IAccessible2 객체 속성: atomic:true
객체 속성: container-atomic:true
객체 속성: 모든 자손에 container-atomic:true
관계: 이 요소(atomic root)를 가리키는 IA2_RELATION_MEMBER_OF
참조: 문서 콘텐츠 또는 노드 가시성 변경
UIA 속성: AriaProperties.atomic: true
참조: 문서 콘텐츠 또는 노드 가시성 변경
ATK/AT-SPI 객체 속성: atomic:true
객체 속성: container-atomic:true
객체 속성: 모든 자손에 container-atomic:true
관계: 이 요소(atomic root)를 가리키는 RELATION_MEMBER_OF
참조: 문서 콘텐츠 또는 노드 가시성 변경
AX API 속성: AXARIAAtomic: YES
참조: 문서 콘텐츠 또는 노드 가시성 변경
Android

TBD

3.5.2.4 aria-atomic=false
ARIA 명세 aria-atomic=false
MSAA + IAccessible2 매핑되지 않음*, 그러나 매핑하는 경우:
객체 속성: atomic:false
객체 속성: container-atomic:false
객체 속성: 모든 자손에 container-atomic:false
관계: 이 요소(atomic root)를 가리키는 IA2_RELATION_MEMBER_OF
참조: 문서 콘텐츠 또는 노드 가시성 변경
UIA 속성: AriaProperties.atomic: false
참조: 문서 콘텐츠 또는 노드 가시성 변경
ATK/AT-SPI 매핑되지 않음*, 그러나 매핑하는 경우:
객체 속성: atomic:false
객체 속성: container-atomic:false
객체 속성: 모든 자손에 container-atomic:false
관계: 이 요소(atomic root)를 가리키는 RELATION_MEMBER_OF
참조: 문서 콘텐츠 또는 노드 가시성 변경
AX API 속성: AXARIAAtomic: NO
참조: 문서 콘텐츠 또는 노드 가시성 변경
Android

TBD

3.5.2.5 aria-autocomplete=inline, list, 또는 both
ARIA 명세 aria-autocomplete=inline, list, 또는 both
MSAA + IAccessible2 객체 속성: autocomplete:<value>
상태: IA2_STATE_SUPPORTS_AUTOCOMPLETION
UIA 매핑되지 않음
ATK/AT-SPI 객체 속성: autocomplete:<value>
상태: STATE_SUPPORTS_AUTOCOMPLETION
AX API 매핑되지 않음
Android

TBD

3.5.2.6 aria-autocomplete=none
ARIA 명세 aria-autocomplete=none
MSAA + IAccessible2 매핑되지 않음*
UIA 매핑되지 않음*
ATK/AT-SPI 매핑되지 않음*
AX API 매핑되지 않음*
Android

TBD

3.5.2.7 aria-braillelabel
ARIA 명세 aria-braillelabel
MSAA + IAccessible2 객체 속성: braillelabel:<value>
UIA 속성: AriaProperties.braillelabel: <value>
ATK/AT-SPI 객체 속성: braillelabel:<value>
AX API 속성: AXBrailleLabel
Android

TBD

3.5.2.8 aria-brailleroledescription
ARIA 명세 aria-brailleroledescription
MSAA + IAccessible2 객체 속성: brailleroledescription:<value>
UIA 속성: AriaProperties.brailleroledescription: <value>
ATK/AT-SPI 객체 속성: brailleroledescription:<value>
AX API 속성: AXBrailleRoleDescription
Android

TBD

3.5.2.9 aria-brailleroledescription가 정의되지 않았거나 빈 문자열임
ARIA 명세 aria-brailleroledescription가 정의되지 않았거나 빈 문자열임
MSAA + IAccessible2 매핑되지 않음
UIA 매핑되지 않음
ATK/AT-SPI 매핑되지 않음
AX API 매핑되지 않음
Android

TBD

3.5.2.10 aria-busy=true
ARIA 명세 aria-busy=true
MSAA + IAccessible2 상태: STATE_SYSTEM_BUSY
UIA 속성: AriaProperties.busy: true
ATK/AT-SPI 상태: STATE_BUSY
AX API 속성: AXElementBusy: YES
Android

TBD

3.5.2.11 aria-busy=false
ARIA 명세 aria-busy=false
MSAA + IAccessible2 상태: STATE_SYSTEM_BUSY 노출되지 않음
UIA 속성: AriaProperties.busy: false
ATK/AT-SPI 상태: STATE_BUSY 노출되지 않음
AX API 속성: AXElementBusy: NO
Android

TBD

3.5.2.12 aria-checked=true
ARIA 명세 aria-checked=true
MSAA + IAccessible2 상태: STATE_SYSTEM_CHECKED
객체 속성: checkable:true
UIA 속성: Toggle.ToggleState: On (1)
속성: SelectionItem.IsSelected: radiomenuitemradio의 경우 True
ATK/AT-SPI 상태: STATE_CHECKABLE
상태: STATE_CHECKED
AX API 속성: AXValue: 1
속성: AXMenuItemMarkChar: menuitemcheckboxmenuitemradio의 경우
Android

TBD

3.5.2.13 aria-checked=false
ARIA 명세 aria-checked=false
MSAA + IAccessible2 상태: STATE_SYSTEM_CHECKED 노출되지 않음
객체 속성: checkable:true
UIA 속성: Toggle.ToggleState: Off (0)
속성: SelectionItem.IsSelected: radiomenuitemradio의 경우 False
ATK/AT-SPI 상태: STATE_CHECKABLE
상태: STATE_CHECKED 노출되지 않음
AX API 속성: AXValue: 0
속성: AXMenuItemMarkChar: menuitemcheckboxmenuitemradio의 경우 <nil>
Android

TBD

3.5.2.14 aria-checked=mixed
ARIA 명세 aria-checked=mixed
MSAA + IAccessible2 상태: STATE_SYSTEM_MIXED
객체 속성: checkable:true
UIA 속성: Toggle.ToggleState: Indeterminate (2)
ATK/AT-SPI 상태: STATE_INDETERMINATE
상태: STATE_CHECKABLE
상태: STATE_CHECKED 노출되지 않음
AX API 속성: AXValue: 2
속성: AXMenuItemMarkChar: menuitemcheckboxmenuitemradio의 경우 <nil>
Android

TBD

3.5.2.15 aria-checked가 정의되지 않음
ARIA 명세 aria-checked가 정의되지 않음
MSAA + IAccessible2 매핑되지 않음
UIA 매핑되지 않음
ATK/AT-SPI 매핑되지 않음
AX API 매핑되지 않음
Android

TBD

3.5.2.16 aria-colcount
ARIA 명세 aria-colcount
MSAA + IAccessible2 객체 속성: colcount:<value>
메서드: IAccessible2::groupPosition(): 셀과 헤더에서 similarItemsInGroup=<value>
UIA 속성: Grid.ColumnCount: <value>
ATK/AT-SPI 객체 속성: colcount는 작성자가 제공한 값을 포함해야 한다.
메서드: atk_table_get_n_columns()는 실제 열 수를 반환해야 한다.
AX API 속성: AXARIAColumnCount: <value>
Android

TBD

3.5.2.17 aria-colindex
ARIA 명세 aria-colindex
MSAA + IAccessible2 객체 속성: colindex:<value>
메서드: IAccessible2::groupPosition(): 셀과 헤더에서 positionInGroup=<value>
UIA 속성: GridItem.Column: <value> (0 기반)
ATK/AT-SPI 객체 속성: colindex는 작성자가 제공한 값을 포함해야 한다.
메서드: atk_table_cell_get_position()은 실제(0 기반) 열 인덱스를 반환해야 한다.
AX API 속성: AXARIAColumnIndex: <value>
Android

TBD

3.5.2.18 aria-colindextext
ARIA 명세 aria-colindextext
MSAA + IAccessible2 객체 속성: colindextext:<value>
UIA 속성: AriaProperties.colindextext: <value>
ATK/AT-SPI 객체 속성: colindextext:<value>
AX API 속성: AXColumnIndexDescription: <value>
Android

TBD

3.5.2.19 aria-colspan
ARIA 명세 aria-colspan
MSAA + IAccessible2 객체 속성: colspan:<value>
메서드: IAccessibleTableCell::columnExtent(): <value>
UIA 속성: GridItem.ColumnSpan: <value>
ATK/AT-SPI 객체 속성: colspan은 작성자가 제공한 값을 포함해야 한다.
메서드: atk_table_cell_get_row_column_span()은 실제 열 span을 반환해야 한다.
AX API 속성: AXColumnIndexRange.length: <value>
Android

TBD

3.5.2.20 aria-controls
ARIA 명세 aria-controls
MSAA + IAccessible2 관계: IA2_RELATION_CONTROLLER_FOR는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: IA2_RELATION_CONTROLLED_BY는 요소를 가리킴
참조: 추가 관계 매핑
UIA 속성: ControllerFor: IDREF와 일치하는 접근 가능한 노드에 대한 포인터
ATK/AT-SPI 관계: RELATION_CONTROLLER_FOR는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: RELATION_CONTROLLED_BY는 요소를 가리킴
참조: 추가 관계 매핑
AX API 속성: AXLinkedUIElements: IDREF와 일치하는 접근 가능한 노드에 대한 포인터
Android

TBD

3.5.2.21 aria-currentfalse가 아닌 허용 값이 있는 경우
ARIA 명세 aria-currentfalse가 아닌 허용 값이 있는 경우
MSAA + IAccessible2 객체 속성: current:<value>
UIA 속성: AriaProperties.current: <value>
ATK/AT-SPI 객체 속성: current:<value>
상태: STATE_ACTIVE
AX API 속성: AXARIACurrent: <value>
Android

TBD

3.5.2.22 aria-current에 인식되지 않는 값이 있는 경우
ARIA 명세 aria-current에 인식되지 않는 값이 있는 경우
MSAA + IAccessible2 객체 속성: current:true
UIA 속성: AriaProperties.current: true
ATK/AT-SPI 객체 속성: current:true
상태: STATE_ACTIVE
AX API 속성: AXARIACurrent: true
Android

TBD

3.5.2.23 aria-currentfalse이거나 정의되지 않음
ARIA 명세 aria-currentfalse이거나 정의되지 않음
MSAA + IAccessible2 매핑되지 않음*
UIA 매핑되지 않음*
ATK/AT-SPI 매핑되지 않음*
AX API 매핑되지 않음*
Android

TBD

3.5.2.24 aria-describedby
ARIA 명세 aria-describedby
MSAA + IAccessible2 속성: accDescription: <value>
관계: 참조된 객체가 접근성 트리 안에 있는 경우, IA2_RELATION_DESCRIBED_BY는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: IA2_RELATION_DESCRIPTION_FOR는 요소를 가리킴
참조: 이름 계산추가 관계 매핑
UIA 속성: FullDescription: <value>
참조: 이름 계산
ATK/AT-SPI 속성: Description: <value>
관계: 참조된 객체가 접근성 트리 안에 있는 경우, RELATION_DESCRIBED_BY는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: RELATION_DESCRIPTION_FOR는 요소를 가리킴
참조: 이름 계산추가 관계 매핑
AX API accessibilityCustomContent API에서 { label: "description" }를 가진 AXCustomContent 객체로 노출하고, `value`를 설명 문자열로 설정한다.
- 참조: 이름 계산
Android

TBD

3.5.2.25 aria-description
ARIA 명세 aria-description
MSAA + IAccessible2 속성: accDescription: <value>
참조: 이름 계산
UIA 속성: FullDescription: <value>
참조: 이름 계산
ATK/AT-SPI 속성: Description: <value>
참조: 이름 계산
AX API accessibilityCustomContent API에서 { label: "description" }를 가진 AXCustomContent 객체로 노출하고, `value`를 설명 문자열로 설정한다.
참조: 이름 계산
Android

TBD

3.5.2.26 aria-details
ARIA 명세 aria-details
MSAA + IAccessible2 관계: 참조된 객체가 접근성 트리 안에 있는 경우, IA2_RELATION_DETAILS는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: IA2_RELATION_DETAILS_FOR는 요소를 가리킴
참조: 추가 관계 매핑
UIA 속성: DescribedBy: 참조된 객체가 접근성 트리 안에 있는 경우, IDREF와 일치하는 접근 가능한 노드를 가리킴
ATK/AT-SPI 관계: 참조된 객체가 접근성 트리 안에 있는 경우, RELATION_DETAILS는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: RELATION_DETAILS_FOR는 요소를 가리킴
참조: 추가 관계 매핑
AX API 매핑되지 않음*
Android

TBD

3.5.2.27 aria-disabled=true
ARIA 명세 aria-disabled=true
MSAA + IAccessible2 상태: STATE_SYSTEM_UNAVAILABLE
상태: STATE_SYSTEM_FOCUSABLE을 가진 모든 자손에 STATE_SYSTEM_UNAVAILABLE
UIA 속성: IsEnabled: false
ATK/AT-SPI 상태: STATE_ENABLED 노출되지 않음
AX API 속성: AXEnabled: NO
Android

TBD

3.5.2.28 aria-disabled=false
ARIA 명세 aria-disabled=false
MSAA + IAccessible2 상태: STATE_SYSTEM_UNAVAILABLE 노출되지 않음
UIA 속성: IsEnabled: true
ATK/AT-SPI 상태: STATE_ENABLED
AX API 속성: AXEnabled: YES
Android

TBD

3.5.2.30 aria-dropeffect=none (폐기 예정)
ARIA 명세 aria-dropeffect=none
MSAA + IAccessible2 객체 속성: 다른 유효한 토큰이 없는 경우 dropeffect:none
매핑되지 않음* 작성자가 지정하지 않은 경우
UIA 매핑되지 않음*
ATK/AT-SPI 객체 속성: 다른 유효한 토큰이 없는 경우 dropeffect:none
매핑되지 않음* 작성자가 지정하지 않은 경우
AX API 매핑되지 않음*
Android

TBD

3.5.2.31 aria-errormessage
ARIA 명세 aria-errormessage
MSAA + IAccessible2 관계: 참조된 객체가 접근성 트리 안에 있는 경우, IA2_RELATION_ERROR는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: IA2_RELATION_ERROR_FOR는 요소를 가리킴
참조: 추가 관계 매핑
UIA 속성: ControllerFor: 대상 접근 가능한 객체에 대한 포인터
ATK/AT-SPI 관계: 참조된 객체가 접근성 트리 안에 있는 경우, RELATION_ERROR_MESSAGE는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: RELATION_ERROR_FOR는 요소를 가리킴
참조: 추가 관계 매핑
AX API 속성: AXErrorMessageElements: IDREF와 일치하는 접근 가능한 노드에 대한 포인터
Android

TBD

3.5.2.32 aria-expanded=true
ARIA 명세 aria-expanded=true
MSAA + IAccessible2 상태: STATE_SYSTEM_EXPANDED
UIA 속성: ExpandCollapse.ExpandCollapseState: Expanded
ATK/AT-SPI 상태: STATE_EXPANDABLE
상태: STATE_EXPANDED
AX API 속성: AXExpanded: YES
Android

TBD

3.5.2.33 aria-expanded=false
ARIA 명세 aria-expanded=false
MSAA + IAccessible2 상태: STATE_SYSTEM_COLLAPSED
UIA 속성: ExpandCollapse.ExpandCollapseState: Collapsed
ATK/AT-SPI 상태: STATE_EXPANDABLE
상태: STATE_EXPANDED 노출되지 않음
AX API 속성: AXExpanded: NO
Android

TBD

3.5.2.34 aria-expanded가 정의되지 않음
ARIA 명세 aria-expanded가 정의되지 않음
MSAA + IAccessible2 매핑되지 않음
UIA 매핑되지 않음
ATK/AT-SPI 매핑되지 않음
AX API 매핑되지 않음
Android

TBD

3.5.2.35 aria-flowto
ARIA 명세 aria-flowto
MSAA + IAccessible2 관계: IA2_RELATION_FLOW_TO는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: IA2_RELATION_FLOW_FROM은 요소를 가리킴
참조: 추가 관계 매핑
UIA 속성: FlowsTo: IDREF와 일치하는 접근 가능한 노드에 대한 포인터
ATK/AT-SPI 관계: RELATION_FLOWS_TO는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: RELATION_FLOWS_FROM은 요소를 가리킴
참조: 추가 관계 매핑
AX API 속성: AXLinkedUIElements: IDREF와 일치하는 접근 가능한 노드에 대한 포인터
Android

TBD

3.5.2.36 aria-grabbed=true
ARIA 명세 aria-grabbed=true
MSAA + IAccessible2 객체 속성: grabbed:true
UIA 속성: AriaProperties.grabbed: true
ATK/AT-SPI 객체 속성: grabbed:true
AX API 속성: AXGrabbed: YES
Android

TBD

3.5.2.37 aria-grabbed=false
ARIA 명세 aria-grabbed=false
MSAA + IAccessible2 객체 속성: grabbed:false
UIA 속성: AriaProperties.grabbed: false
ATK/AT-SPI 객체 속성: grabbed:false
AX API 속성: AXGrabbed: NO
Android

TBD

3.5.2.38 aria-grabbed가 정의되지 않음
ARIA 명세 aria-grabbed가 정의되지 않음
MSAA + IAccessible2 매핑되지 않음
UIA 매핑되지 않음
ATK/AT-SPI 매핑되지 않음
AX API 매핑되지 않음
Android

TBD

3.5.2.39 aria-haspopup=true
ARIA 명세 aria-haspopup=true
MSAA + IAccessible2 상태: STATE_SYSTEM_HASPOPUP
객체 속성: haspopup:menu
UIA 컨트롤 패턴: ExpandCollapse 참조: aria-expanded
ATK/AT-SPI 상태: STATE_HAS_POPUP
객체 속성: haspopup:menu
AX API 속성: AXPopupValue:menu
동작: AXShowMenu
Android

TBD

3.5.2.40 aria-haspopup=false
ARIA 명세 aria-haspopup=false
MSAA + IAccessible2 상태: STATE_SYSTEM_HASPOPUP 노출되지 않음
객체 속성: haspopup:false
UIA 매핑되지 않음*
ATK/AT-SPI 매핑되지 않음*
AX API 매핑되지 않음*
Android

TBD

3.5.2.41 aria-haspopup=dialog
ARIA 명세 aria-haspopup=dialog
MSAA + IAccessible2 상태: STATE_SYSTEM_HASPOPUP
객체 속성: haspopup:dialog
UIA 컨트롤 패턴: ExpandCollapse
참조: aria-expanded
ATK/AT-SPI 상태: STATE_HAS_POPUP
객체 속성: haspopup:dialog
AX API 속성: AXPopupValue:dialog
동작: AXShowMenu
Android

TBD

3.5.2.42 aria-haspopup=grid
ARIA 명세 aria-haspopup=grid
MSAA + IAccessible2 상태: STATE_SYSTEM_HASPOPUP
객체 속성: haspopup:grid
UIA 컨트롤 패턴: ExpandCollapse
참조: aria-expanded
ATK/AT-SPI 상태: STATE_HAS_POPUP
객체 속성: haspopup:grid
AX API 속성: AXPopupValue:grid
동작: AXShowMenu
Android

TBD

3.5.2.43 aria-haspopup=listbox
ARIA 명세 aria-haspopup=listbox
MSAA + IAccessible2 상태: STATE_SYSTEM_HASPOPUP
객체 속성: haspopup:listbox
UIA 컨트롤 패턴: ExpandCollapse
참조: aria-expanded
ATK/AT-SPI 상태: STATE_HAS_POPUP
객체 속성: haspopup:listbox
AX API 속성: AXPopupValue:listbox
동작: AXShowMenu
Android

TBD

3.5.2.44 aria-haspopup=menu
ARIA 명세 aria-haspopup=menu
MSAA + IAccessible2 상태: STATE_SYSTEM_HASPOPUP
객체 속성: haspopup:menu
UIA 컨트롤 패턴: ExpandCollapse
참조: aria-expanded
ATK/AT-SPI 상태: STATE_HAS_POPUP
객체 속성: haspopup:menu
AX API 속성: AXPopupValue:menu
동작: AXShowMenu
Android

TBD

3.5.2.45 aria-haspopup=tree
ARIA 명세 aria-haspopup=tree
MSAA + IAccessible2 상태: STATE_SYSTEM_HASPOPUP
객체 속성: haspopup:tree
UIA 컨트롤 패턴: ExpandCollapse
참조: aria-expanded
ATK/AT-SPI 상태: STATE_HAS_POPUP
객체 속성: haspopup:tree
AX API 속성: AXPopupValue:tree
동작: AXShowMenu
Android

TBD

3.5.2.46 aria-hidden=true가 포커스되지 않은 요소에 있는 경우
ARIA 명세 aria-hidden=true가 포커스되지 않은 요소에 있는 경우
MSAA + IAccessible2 요소는 노출되어서는 SHOULD NOT 된다
참조: WAI-ARIA 명세의 접근성 트리에 요소 포함
UIA 요소는 노출되어서는 SHOULD NOT 된다
참조: WAI-ARIA 명세의 접근성 트리에 요소 포함
ATK/AT-SPI 요소는 노출되어서는 SHOULD NOT 된다
참조: WAI-ARIA 명세의 접근성 트리에 요소 포함
AX API 요소는 노출되어서는 SHOULD NOT 된다
참조: WAI-ARIA 명세의 접근성 트리에 요소 포함
Android

TBD

3.5.2.47 aria-hidden=true가 요소에 포커스되어 있거나 요소가 접근성 이벤트를 발생시키는 경우
ARIA 명세 aria-hidden=true가 요소에 포커스되어 있거나 요소가 접근성 이벤트를 발생시키는 경우
MSAA + IAccessible2 객체 속성: hidden:true
참조: WAI-ARIA 명세의 접근성 트리에 요소 포함
UIA 속성: AriaProperties.hidden: true
참조: WAI-ARIA 명세의 접근성 트리에 요소 포함
ATK/AT-SPI 객체 속성: hidden:true
참조: WAI-ARIA 명세의 접근성 트리에 요소 포함
AX API 매핑되지 않음
참조: WAI-ARIA 명세의 접근성 트리에 요소 포함
Android

TBD

3.5.2.48 aria-hidden=false
ARIA 명세 aria-hidden=false
MSAA + IAccessible2 매핑되지 않음
UIA 매핑되지 않음
ATK/AT-SPI 매핑되지 않음
AX API 매핑되지 않음
Android

TBD

3.5.2.49 aria-invalid=true
ARIA 명세 aria-invalid=true
MSAA + IAccessible2 상태: IA2_STATE_INVALID_ENTRY
텍스트 속성: invalid:true
UIA 속성: IsDataValidForForm: false
ATK/AT-SPI 상태: STATE_INVALID_ENTRY
텍스트 속성: invalid:true
AX API 속성: AXInvalid: true
Android

TBD

3.5.2.50 aria-invalid=false
ARIA 명세 aria-invalid=false
MSAA + IAccessible2 상태: IA2_STATE_INVALID_ENTRY 노출되지 않음
UIA 속성: IsDataValidForForm: true
ATK/AT-SPI 상태: STATE_INVALID_ENTRY 노출되지 않음
AX API 속성: AXInvalid: false
Android

TBD

3.5.2.51 aria-invalid=spelling 또는 grammar
ARIA 명세 aria-invalid=spelling 또는 grammar
MSAA + IAccessible2 상태: IA2_STATE_INVALID_ENTRY
텍스트 속성: invalid:<value>
UIA 속성: IsDataValidForForm: <value>
ATK/AT-SPI 상태: STATE_INVALID_ENTRY
텍스트 속성: invalid:<value>
AX API 속성: AXInvalid: <value>
Android

TBD

3.5.2.52 인식되지 않는 값을 가진 aria-invalid
ARIA 명세 aria-invalid에 인식되지 않는 값이 있는 경우
MSAA + IAccessible2 상태: IA2_STATE_INVALID_ENTRY
텍스트 속성: invalid:true
UIA 속성: IsDataValidForForm: false
ATK/AT-SPI 상태: STATE_INVALID_ENTRY
텍스트 속성: invalid:true
AX API 속성: AXInvalid: true
Android

TBD

3.5.2.53 aria-keyshortcuts
ARIA 명세 aria-keyshortcuts
MSAA + IAccessible2 속성: accKeyboardShortcut: <value>
UIA 속성: AcceleratorKey: <value>
ATK/AT-SPI 객체 속성: keyshortcuts:<value>
AX API 속성: AXKeyShortcutsValue: <value>
Android

TBD

3.5.2.54 aria-label
ARIA 명세 aria-label
MSAA + IAccessible2 속성: accName: <value>
참조: 이름 계산
UIA 속성: Name: <value>
참조: 이름 계산
ATK/AT-SPI 속성: Name: <value>
참조: 이름 계산
AX API 속성: AXTitle: <value>
참조: 이름 계산
Android

TBD

3.5.2.55 aria-labelledby
ARIA 명세 aria-labelledby
MSAA + IAccessible2 속성: accName: <value>
관계: 참조된 객체가 접근성 트리 안에 있는 경우, IA2_RELATION_LABELLED_BY는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: IA2_RELATION_LABEL_FOR는 요소를 가리킴
참조: 이름 계산추가 관계 매핑
UIA 속성: Name: <value>
속성: LabeledBy: 참조된 객체가 접근성 트리 안에 있는 경우, IDREF와 일치하는 접근 가능한 노드를 가리킴
참조: 이름 계산
ATK/AT-SPI 속성: Name: <value>
관계: 참조된 객체가 접근성 트리 안에 있는 경우, RELATION_LABELLED_BY는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: RELATION_LABEL_FOR는 요소를 가리킴
참조: 이름 계산추가 관계 매핑
AX API 속성: AXTitle: <value>
속성: AXTitleUIElement는 접근성 트리 안에 있는 참조된 요소가 하나인 경우, IDREF와 일치하는 접근 가능한 노드를 가리킴
참조: 이름 계산
Android

TBD

3.5.2.56 heading이 아닌 것에 있는 aria-level
ARIA 명세 aria-level이 non-heading에 있는 경우
MSAA + IAccessible2 객체 속성: level:<value>
메서드: IAccessible2::groupPosition(): aria-posinsetaria-setsize를 지원하는 역할에서 groupLevel=<value>
참조: groupPosition()
UIA 속성: AriaProperties.level: <value>
ATK/AT-SPI 객체 속성: level:<value>
AX API 속성: AXDisclosureLevel: <value> (0 기반), outline row(예: treeitem 또는 group)에 사용된 경우
Android

TBD

3.5.2.57 heading에 있는 aria-level
ARIA 명세 aria-levelheading에 있는 경우
MSAA + IAccessible2 객체 속성: level:<value>
UIA 속성: AriaProperties.level: <value>
속성: StyleId_Heading: <value>
ATK/AT-SPI 객체 속성: level:<value>
AX API 속성: AXValue: <value>
Android

TBD

3.5.2.58 aria-live=assertive
ARIA 명세 aria-live=assertive
MSAA + IAccessible2 객체 속성: live:assertive
객체 속성: container-live:assertive
객체 속성: 모든 자손에 container-live:assertive
참조: 문서 콘텐츠 또는 노드 가시성 변경
UIA 속성: LiveSetting: "assertive"
참조: 문서 콘텐츠 또는 노드 가시성 변경
ATK/AT-SPI 객체 속성: live:assertive
객체 속성: container-live:assertive
객체 속성: 모든 자손에 container-live:assertive
참조: 문서 콘텐츠 또는 노드 가시성 변경
AX API 속성: AXARIALive: "assertive"
참조: 문서 콘텐츠 또는 노드 가시성 변경
Android

TBD

3.5.2.59 aria-live=polite
ARIA 명세 aria-live=polite
MSAA + IAccessible2 객체 속성: live:polite
객체 속성: container-live:polite
객체 속성: 모든 자손에 container-live:polite
참조: 문서 콘텐츠 또는 노드 가시성 변경
UIA 속성: LiveSetting: "polite"
참조: 문서 콘텐츠 또는 노드 가시성 변경
ATK/AT-SPI 객체 속성: live:polite
객체 속성: container-live:polite
객체 속성: 모든 자손에 container-live:polite
참조: 문서 콘텐츠 또는 노드 가시성 변경
AX API 속성: AXARIALive: "polite"
참조: 문서 콘텐츠 또는 노드 가시성 변경
Android

TBD

3.5.2.60 aria-live=off
ARIA 명세 aria-live=off
MSAA + IAccessible2 객체 속성: live:off
객체 속성: container-live:off
객체 속성: 모든 자손에 container-live:off
UIA 속성: LiveSetting: "off"
ATK/AT-SPI 객체 속성: live:off
객체 속성: container-live:off
객체 속성: 모든 자손에 container-live:off
AX API 속성: AXARIALive: "off"
Android

TBD

3.5.2.61 aria-modal=true
ARIA 명세 aria-modal=true
MSAA + IAccessible2 상태: IA2_STATE_MODAL
UIA 속성: Window.IsModal: true
ATK/AT-SPI 상태: STATE_MODAL
AX API 배경 콘텐츠가 더 이상 노출되지 않도록 접근성 트리를 잘라낸다. aria-modal="true"를 가진 요소에 대응하는 접근 가능한 객체에는 특정 속성이 설정되지 않는다. 해당 모달 접근 가능한 객체를 루트로 하는 트리만 노출된다.
Android

TBD

3.5.2.62 aria-modal=false
ARIA 명세 aria-modal=false
MSAA + IAccessible2 상태: IA2_STATE_MODAL 노출되지 않음
UIA 속성: Window.IsModal: false
ATK/AT-SPI 상태: STATE_MODAL 노출되지 않음
AX API 배경 콘텐츠가 노출되도록 접근성 트리를 확장한다. aria-modal="false"를 가진 접근 가능한 객체에 대응하는 요소에는 특정 속성이 설정되지 않는다.
Android

TBD

3.5.2.63 aria-multiline=true
ARIA 명세 aria-multiline=true
MSAA + IAccessible2 상태: IA2_STATE_MULTI_LINE
상태: IA2_STATE_SINGLE_LINE 노출되지 않음
UIA 속성: AriaProperties.multiline: true
ATK/AT-SPI 상태: STATE_MULTI_LINE
상태: STATE_SINGLE_LINE 노출되지 않음
AX API 매핑되지 않음
참조: 역할 매핑 표의 textbox
Android

TBD

3.5.2.64 aria-multiline=false
ARIA 명세 aria-multiline=false
MSAA + IAccessible2 상태: IA2_STATE_SINGLE_LINE
상태: IA2_STATE_MULTI_LINE 노출되지 않음
UIA 매핑되지 않음
ATK/AT-SPI 상태: STATE_SINGLE_LINE
상태: STATE_MULTI_LINE 노출되지 않음
AX API 매핑되지 않음
참조: 역할 매핑 표의 textbox
Android

TBD

3.5.2.65 aria-multiselectable=true
ARIA 명세 aria-multiselectable=true
MSAA + IAccessible2 상태: STATE_SYSTEM_MULTISELECTABLE
상태: STATE_SYSTEM_EXTSELECTABLE
접근성 이벤트에 대한 자세한 내용은 선택을 참조하라
UIA 속성: Selection.CanSelectMultiple: true
접근성 이벤트에 대한 자세한 내용은 선택을 참조하라
ATK/AT-SPI 상태: STATE_MULTISELECTABLE
접근성 이벤트에 대한 자세한 내용은 선택을 참조하라
AX API 속성: AXIsMultiSelectable: YES
접근성 이벤트에 대한 자세한 내용은 선택을 참조하라
Android

TBD

3.5.2.66 aria-multiselectable=false
ARIA 명세 aria-multiselectable=false
MSAA + IAccessible2 상태: STATE_SYSTEM_MULTISELECTABLE 노출되지 않음
상태: STATE_SYSTEM_EXTSELECTABLE 노출되지 않음
접근성 이벤트에 대한 자세한 내용은 선택을 참조하라
UIA 매핑되지 않음*
ATK/AT-SPI 상태: STATE_MULTISELECTABLE 노출되지 않음
AX API 매핑되지 않음*
Android

TBD

3.5.2.67 aria-orientation=horizontal
ARIA 명세 aria-orientation=horizontal
MSAA + IAccessible2 상태: IA2_STATE_HORIZONTAL
상태: IA2_STATE_VERTICAL 노출되지 않음
UIA 속성: Orientation: horizontal
ATK/AT-SPI 상태: STATE_HORIZONTAL
상태: STATE_VERTICAL 노출되지 않음
AX API 속성: AXOrientation: AXHorizontalOrientation
Android

TBD

3.5.2.68 aria-orientation=vertical
ARIA 명세 aria-orientation=vertical
MSAA + IAccessible2 상태: IA2_STATE_VERTICAL
상태: IA2_STATE_HORIZONTAL 노출되지 않음
UIA 속성: Orientation: vertical
ATK/AT-SPI 상태: STATE_VERTICAL
상태: STATE_HORIZONTAL 노출되지 않음
AX API 속성: AXOrientation: AXVerticalOrientation
Android

TBD

3.5.2.69 aria-orientation가 정의되지 않음
ARIA 명세 aria-orientation가 정의되지 않음
MSAA + IAccessible2 매핑되지 않음*
UIA 매핑되지 않음*
ATK/AT-SPI 상태: STATE_VERTICAL 노출되지 않음
상태: STATE_HORIZONTAL 노출되지 않음
AX API 속성: AXOrientation: AXUnknownOrientation
Android

TBD

3.5.2.70 aria-owns
ARIA 명세 aria-owns
MSAA + IAccessible2

사용자 에이전트는 이 속성에서 참조하는 요소를 현재 요소의 자식으로 노출할 수 MAY 있다. 이 경우, 여러 aria-owns 관계가 발견되면 첫 번째 것만 사용한다. 접근성 트리가 수정되지 않은 경우 다음으로 노출한다:

관계: 참조된 객체가 접근성 트리 안에 있는 경우, IA2_RELATION_NODE_PARENT_OF는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: IA2_RELATION_NODE_CHILD_OF는 요소를 가리킴
참조: 추가 관계 매핑
UIA 이 속성에서 참조하는 요소를 현재 요소의 자식으로 노출한다. 여러 aria-owns 관계가 발견되면 첫 번째 것만 사용한다.
ATK/AT-SPI

사용자 에이전트는 이 속성에서 참조하는 요소를 현재 요소의 자식으로 노출할 수 MAY 있다. 이 경우, 여러 aria-owns 관계가 발견되면 첫 번째 것만 사용한다. 접근성 트리가 수정되지 않은 경우 다음으로 노출한다:

관계: 참조된 객체가 접근성 트리 안에 있는 경우, RELATION_NODE_PARENT_OF는 IDREF와 일치하는 접근 가능한 노드를 가리킴
역방향 관계: RELATION_NODE_CHILD_OF는 요소를 가리킴
참조: 추가 관계 매핑
AX API 속성: AXOwns: IDREF와 일치하는 접근 가능한 노드에 대한 포인터
Android

TBD

3.5.2.71 aria-placeholder
ARIA 명세 aria-placeholder
MSAA + IAccessible2 객체 속성: placeholder-text:<value>
UIA 속성: HelpText: <value>
ATK/AT-SPI 객체 속성: placeholder-text:<value>
AX API 속성: AXPlaceholderValue: <value>
Android

TBD

3.5.2.72 aria-posinset
ARIA 명세 aria-posinset
MSAA + IAccessible2 객체 속성: posinset:<value>
참조: 그룹 위치
UIA 속성: AriaProperties.posinset: <value>
참조: 그룹 위치
ATK/AT-SPI 객체 속성: posinset:<value>
참조: 그룹 위치
AX API 속성: AXARIAPosInSet: <value>
참조: 그룹 위치
Android

TBD

3.5.2.73 aria-pressed=true
ARIA 명세 aria-pressed=true
MSAA + IAccessible2 상태: STATE_SYSTEM_PRESSED
참조: aria-pressed에 대해 정의된 값을 가진 button
UIA 속성: Toggle.ToggleState: On (1)
ATK/AT-SPI 상태: STATE_PRESSED
참조: aria-pressed에 대해 정의된 값을 가진 button
AX API 속성: AXValue: 1
참조: aria-pressed에 대해 정의된 값을 가진 button
Android

TBD

3.5.2.74 aria-pressed=mixed
ARIA 명세 aria-pressed=mixed
MSAA + IAccessible2 상태: STATE_SYSTEM_MIXED
참조: aria-pressed에 대해 정의된 값을 가진 button
UIA 속성: Toggle.ToggleState: Indeterminate (2)
ATK/AT-SPI 상태: STATE_INDETERMINATE
참조: aria-pressed에 대해 정의된 값을 가진 button
AX API 속성: AXValue: 2
참조: aria-pressed에 대해 정의된 값을 가진 button
Android

TBD

3.5.2.75 aria-pressed=false
ARIA 명세 aria-pressed=false
MSAA + IAccessible2 상태: STATE_SYSTEM_PRESSED 노출되지 않음
참조: aria-pressed에 대해 정의된 값을 가진 button
UIA 속성: Toggle.ToggleState: Off (3)
ATK/AT-SPI 상태: STATE_PRESSED 노출되지 않음
참조: aria-pressed에 대해 정의된 값을 가진 button
AX API 속성: AXValue: 0
참조: aria-pressed에 대해 정의된 값을 가진 button
Android

TBD

3.5.2.76 aria-pressed가 정의되지 않음
ARIA 명세 aria-pressed가 정의되지 않음
MSAA + IAccessible2 매핑되지 않음*
UIA 매핑되지 않음*
ATK/AT-SPI 매핑되지 않음*
AX API 매핑되지 않음*
Android

TBD

3.5.2.77 aria-readonly=true
ARIA 명세 aria-readonly=true
MSAA + IAccessible2 상태: STATE_SYSTEM_READONLY
UIA 속성: Value.IsReadOnly: true, 요소가 IValueProvider를 구현하는 경우.
속성: RangeValue.IsReadOnly: true, 요소가 IRangeValueProvider를 구현하는 경우.
속성: AriaProperties.readonly: true
ATK/AT-SPI 상태: STATE_READ_ONLY
상태: 텍스트 입력 역할에서 STATE_EDITABLE 노출되지 않음
상태: aria-checked를 지원하는 역할에서 STATE_CHECKABLE 노출되지 않음
상태: radiogroup에 사용된 경우 radio 자손에서 STATE_CHECKABLE 노출되지 않음
AX API 메서드: AXUIElementIsAttributeSettable(AXValue): NO
Android

TBD

3.5.2.78 aria-readonly=false
ARIA 명세 aria-readonly=false
MSAA + IAccessible2 상태: STATE_SYSTEM_READONLY 노출되지 않음
상태: IA2_STATE_EDITABLE
UIA 속성: Value.IsReadOnly: false, 요소가 IValueProvider를 구현하는 경우.
속성: RangeValue.IsReadOnly: false, 요소가 IRangeValueProvider를 구현하는 경우.
속성: AriaProperties.readonly: false
ATK/AT-SPI 상태: STATE_READ_ONLY 노출되지 않음
AX API 메서드: AXUIElementIsAttributeSettable(AXValue): YES
Android

TBD

3.5.2.79 gridcell에서 aria-readonly가 지정되지 않음
ARIA 명세 aria-readonlygridcell에서 지정되지 않음
MSAA + IAccessible2 gridcell은 포함하는 grid 또는 treegrid에서 aria-readonly에 대해 작성자가 제공한 모든 값을 상속해야 MUST 한다. 상속된 값을 aria-readonly="true"aria-readonly="false"에 설명된 대로 gridcell에 노출한다.
UIA gridcell은 포함하는 grid 또는 treegrid에서 aria-readonly에 대해 작성자가 제공한 모든 값을 상속해야 MUST 한다. 상속된 값을 aria-readonly="true"aria-readonly="false"에 설명된 대로 gridcell에 노출한다.
ATK/AT-SPI gridcell은 포함하는 grid 또는 treegrid에서 aria-readonly에 대해 작성자가 제공한 모든 값을 상속해야 MUST 한다. 상속된 값을 aria-readonly="true"aria-readonly="false"에 설명된 대로 gridcell에 노출한다.
AX API gridcell은 포함하는 grid 또는 treegrid에서 aria-readonly에 대해 작성자가 제공한 모든 값을 상속해야 MUST 한다. 상속된 값을 aria-readonly="true"aria-readonly="false"에 설명된 대로 gridcell에 노출한다.
Android

TBD

3.5.2.80 aria-relevant
ARIA 명세 aria-relevant
MSAA + IAccessible2 객체 속성: relevant:<value>
객체 속성: container-relevant:<value>
객체 속성: 모든 자손에 container-relevant:<value>
참조: 문서 콘텐츠 또는 노드 가시성 변경
UIA 속성: AriaProperties.relevant: <value>
참조: 문서 콘텐츠 또는 노드 가시성 변경
ATK/AT-SPI 객체 속성: relevant:<value>
객체 속성: container-relevant:<value>
객체 속성: 모든 자손에 container-relevant:<value>
참조: 문서 콘텐츠 또는 노드 가시성 변경
AX API 속성: AXARIARelevant: <value>
참조: 문서 콘텐츠 또는 노드 가시성 변경
Android

TBD

3.5.2.81 aria-required=true
ARIA 명세 aria-required=true
MSAA + IAccessible2 상태: IA2_STATE_REQUIRED
UIA 속성: IsRequiredForForm: true
ATK/AT-SPI 상태: STATE_REQUIRED
AX API 속성: AXRequired: YES
Android

TBD

3.5.2.82 aria-required=false
ARIA 명세 aria-required=false
MSAA + IAccessible2 매핑되지 않음*
UIA 매핑되지 않음*
ATK/AT-SPI 매핑되지 않음*
AX API 매핑되지 않음*
Android

TBD

3.5.2.83 aria-roledescription
ARIA 명세 aria-roledescription
MSAA + IAccessible2 메서드: localizedExtendedRole(): <value>
UIA 지역화된 컨트롤 유형: <value>
ATK/AT-SPI 객체 속성: roledescription:<value>
AX API 속성: AXRoleDescription: <value>
Android

TBD

3.5.2.84 aria-roledescription가 정의되지 않았거나 빈 문자열임
ARIA 명세 aria-roledescription가 정의되지 않았거나 빈 문자열임
MSAA + IAccessible2 매핑되지 않음
UIA 지역화된 컨트롤 유형은 요소의 역할에 대해 지정된 것으로 정의된다: role 속성이 제공된 경우 명시적 역할을 기준으로 하고, 그렇지 않으면 호스트 언어의 암시적 역할을 기준으로 한다.
ATK/AT-SPI 매핑되지 않음
AX API AXRoleDescription은 요소의 역할에 대해 지정된 것으로 정의된다: role 속성이 제공된 경우 명시적 역할을 기준으로 하고; 그렇지 않으면 호스트 언어의 암시적 역할을 기준으로 한다.
Android

TBD

3.5.2.85 aria-rowcount
ARIA 명세 aria-rowcount
MSAA + IAccessible2 객체 속성: rowcount:<value>
메서드: IAccessible2::groupPosition(): 행에서 similarItemsInGroup=<value>
UIA 속성: Grid.RowCount: <value>
ATK/AT-SPI 객체 속성: rowcount는 작성자가 제공한 값을 포함해야 한다.
메서드: atk_table_get_n_rows()는 실제 행 수를 반환해야 한다.
AX API 속성: AXARIARowCount: <value>
Android

TBD

3.5.2.86 aria-rowindex
ARIA 명세 aria-rowindex
MSAA + IAccessible2 객체 속성: rowindex:<value>
메서드: IAccessible2::groupPosition(): 행에서 positionInGroup=<value>
UIA 속성: GridItem.Row: <value> (0 기반)
ATK/AT-SPI 객체 속성: rowindex는 작성자가 제공한 값을 포함해야 한다.
메서드: atk_table_cell_get_position()은 실제(0 기반) 행 인덱스를 반환해야 한다.
AX API 속성: AXARIARowIndex: <value>
Android

TBD

3.5.2.87 aria-rowindextext
ARIA 명세 aria-rowindextext
MSAA + IAccessible2 객체 속성: rowindextext:<value>
UIA 속성: AriaProperties.rowindextext: <value>
ATK/AT-SPI 객체 속성: rowindextext:<value>
AX API 속성: AXRowIndexDescription: <value>
Android

TBD

3.5.2.88 aria-rowspan
ARIA 명세 aria-rowspan
MSAA + IAccessible2 객체 속성: rowspan:<value>
메서드: IAccessibleTableCell::rowExtent(): column=<value>
UIA 속성: GridItem.RowSpan: <value>
ATK/AT-SPI 객체 속성: rowspan은 작성자가 제공한 값을 포함해야 한다.
메서드: atk_table_cell_get_row_column_span() 는 실제 행 span을 반환해야 한다.
AX API 속성: AXRowIndexRange.length: <value>
Android

TBD

3.5.2.89 aria-selected=true
ARIA 명세 aria-selected=true
MSAA + IAccessible2 상태: STATE_SYSTEM_SELECTABLE
상태: STATE_SYSTEM_SELECTED
접근성 이벤트에 대한 자세한 내용은 선택을 참조하라
UIA 속성: SelectionItem.IsSelected: true
ATK/AT-SPI 상태: STATE_SELECTABLE
상태: STATE_SELECTED
접근성 이벤트에 대한 자세한 내용은 선택을 참조하라
AX API 속성: AXSelected: YES
Android

TBD

3.5.2.90 aria-selected=false
ARIA 명세 aria-selected=false
MSAA + IAccessible2 상태: STATE_SYSTEM_SELECTABLE
상태: STATE_SYSTEM_SELECTED 노출되지 않음
접근성 이벤트에 대한 자세한 내용은 선택을 참조하라
UIA 속성: SelectionItem.IsSelected: false
ATK/AT-SPI 상태: STATE_SELECTABLE
상태: STATE_SELECTED 노출되지 않음
접근성 이벤트에 대한 자세한 내용은 선택을 참조하라
AX API 속성: AXSelected: NO
Android

TBD

3.5.2.91 aria-selected가 정의되지 않음
ARIA 명세 aria-selected 가 정의되지 않음
MSAA + IAccessible2 매핑되지 않음
UIA 매핑되지 않음
ATK/AT-SPI 매핑되지 않음
AX API 매핑되지 않음
Android

TBD

3.5.2.92 aria-setsize
ARIA 명세 aria-setsize
MSAA + IAccessible2 객체 속성: setsize:<value>
참조: 그룹 위치
UIA 속성: AriaProperties.setsize: <value>
참조: 그룹 위치
ATK/AT-SPI

작성자가 제공한 aria-setsize 값이 -1인 경우, 노출되는 값은 DOM 안의 객체 수를 기준으로 해야 한다.

객체 속성: setsize:<value>
상태: 작성자가 제공한 값이 -1인 경우 STATE_INDETERMINATE
참조: 그룹 위치
AX API 속성: AXARIASetSize: <value>
참조: 그룹 위치
Android

TBD

3.5.2.93 aria-sort=ascending
ARIA 명세 aria-sort=ascending
MSAA + IAccessible2 객체 속성: sort:ascending
UIA 속성: AriaProperties.sort: ascending
속성: 요소가 HeaderItem 컨트롤 유형에 매핑되는 경우 ItemStatus: ascending
ATK/AT-SPI 객체 속성: sort:ascending
AX API 속성: AXSortDirection: AXAscendingSortDirection
Android

TBD

3.5.2.94 aria-sort=descending
ARIA 명세 aria-sort=descending
MSAA + IAccessible2 객체 속성: sort:descending
UIA 속성: AriaProperties.sort: descending
속성: 요소가 HeaderItem 컨트롤 유형에 매핑되는 경우 ItemStatus: descending
ATK/AT-SPI 객체 속성: sort:descending
AX API 속성: AXSortDirection: AXDescendingSortDirection
Android

TBD

3.5.2.95 aria-sort=other
ARIA 명세 aria-sort=other
MSAA + IAccessible2 객체 속성: sort:other
UIA 속성: AriaProperties.sort: other
속성: 요소가 HeaderItem 컨트롤 유형에 매핑되는 경우 ItemStatus: other
ATK/AT-SPI 객체 속성: sort:other
AX API 속성: AXSortDirection: AXUnknownSortDirection
Android

TBD

3.5.2.96 aria-sort=none
ARIA 명세 aria-sort=none
MSAA + IAccessible2 객체 속성: 값이 지정되지 않은 상태가 아닌 경우 sort:none
UIA 매핑되지 않음*
ATK/AT-SPI 객체 속성: 값이 지정되지 않은 상태가 아닌 경우 sort:none
AX API 매핑되지 않음*
Android

TBD

3.5.2.97 aria-valuemax
ARIA 명세 aria-valuemax
MSAA + IAccessible2 메서드: IAccessibleValue::maximumValue(): <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
UIA 속성: RangeValue.Maximum: <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
ATK/AT-SPI 메서드: atk_value_get_maximum_value(): <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
AX API 속성: AXMaxValue: <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
Android

TBD

3.5.2.98 aria-valuemin
ARIA 명세 aria-valuemin
MSAA + IAccessible2 메서드: IAccessibleValue::minimumValue(): <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
UIA 속성: RangeValue.Minimum: <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
ATK/AT-SPI 메서드: atk_value_get_minimum_value(): <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
AX API 속성: AXMinValue: <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
Android

TBD

3.5.2.99 aria-valuenow
ARIA 명세 aria-valuenow
MSAA + IAccessible2 메서드: IAccessibleValue::currentValue(): <value>
메서드: IAccessible::get_accValue(): aria-valuetext가 정의되어 있지 않은 경우 <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
UIA 속성: RangeValue.Value: <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
ATK/AT-SPI 메서드: atk_value_get_current_value(): <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
AX API 속성: AXValue: <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
Android

TBD

3.5.2.100 aria-valuetext
ARIA 명세 aria-valuetext
MSAA + IAccessible2 메서드: IAccessible::get_accValue(): <value>
객체 속성: valuetext:<value>
참조: 상태 및 속성에 대한 작성자 오류 처리
UIA 속성: Value.Value: <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
ATK/AT-SPI 객체 속성: valuetext:<value>
참조: 상태 및 속성에 대한 작성자 오류 처리
AX API 속성: AXValueDescription: <value>
참조: 상태 및 속성에 대한 작성자 오류 처리
Android

TBD

3.6 추가 계산이 필요한 특수 처리

3.6.1 이름 및 설명

접근 가능한 이름 또는 접근 가능한 설명을 계산하는 방법에 대한 정보는 접근 가능한 이름 및 설명 계산 절을 Accessible Name and Description Computation 명세에서 참조하라.

3.6.2 관계

GUI에서는 위젯 사이에 관계가 있는 경우가 많으며, 이는 보조 기술에 프로그래밍 방식으로 노출될 수 있다. WAI-ARIA는 모든 요소에 전역적으로 적용 가능한 여러 관계 속성을 제공한다: aria-controls, aria-describedby, aria-flowto, aria-labelledby, aria-owns, aria-posinset, 및 aria-setsize. 따라서 이를 계산하기 전에 역할을 확인하는 것은 중요하지 않다. 사용자 에이전트는 단순히 이러한 관계를 접근성 API상태 및 속성 매핑이라는 제목의 절에 정의된 대로 매핑할 수 있다.

3.6.2.1 역방향 관계

어떤 요소의 ID가 다른 요소 안의 속성에 의해 참조될 때 역방향 관계가 존재한다. 역방향 관계를 지원하는 API의 경우, 어떤 요소의 ID가 다른 요소의 관계 속성에 의해 참조되고 참조된 요소가 접근성 트리 안에 있으면, 사용자 에이전트상태 및 속성 매핑 표에 정의된 매핑을 사용해야 MUST 한다. 모든 WAI-ARIA 참조는 접근성 트리 안에서 접근 가능한 객체로 노출되는 요소를 가리켜야 한다. 참조된 객체가 접근성 트리 안에 노출되지 않은 경우 (예: 숨겨져 있기 때문), 참조는 null이다. aria-labelledbyaria-describedby에는 추가 기능이 있으며, 이 기능은 참조된 요소에서 평탄화된 문자열을 가져와 접근성 API의 이름 또는 설명 필드를 채울 수 있게 한다. 이 기능은 이름 및 설명 절에 설명되어 있다.

특수 사례: aria-labelledbyHTML <label for= … >가 모두 사용된 경우, 사용자 에이전트는 WAI-ARIA 관계를 사용해야 MUST 하며 HTML label 관계를 무시해야 MUST 한다.

aria-describedby는 사용자가 콘텐츠의 여러 섹션으로 이동하기를 원하는 구조화된 정보 또는 상호작용 정보를 참조할 수 있다는 점에 유의하라. 사용자 에이전트는 aria-describedby가 참조하는 구조화된 정보로 사용자가 이동할 수 있는 방법을 제공할 수 MAY 있으며, 보조 기술은 그러한 방법을 제공해야 SHOULD 한다.

3.6.2.2 암시적 역방향 관계

WAI-ARIA 속성으로 정의된 명시적 관계 외에도, 두 가지 다른 상황에서 역방향 관계가 암시된다: 조상이 aria-owns 속성을 갖지 않는 role="treeitem"을 가진 요소와, aria-atomic 속성을 가진 요소의 자손이다.

role="treeitem"의 경우, aria-owns가 사용되지 않았을 때, 역방향 관계가 API에 의해 지원되는 경우 사용자 에이전트는 다음을 수행해야 SHOULD 한다:

  • 현재 treeitemaria-level을 사용하는 경우, 더 낮은 aria-level을 가진 treeitem을 찾을 때까지 트리에서 뒤로 이동한 다음, RELATION_NODE_CHILD_OF를 그 요소로 설정한다. 트리의 맨 위에 도달한 경우, RELATION_NODE_CHILD_OF를 트리 요소 자체로 설정한다.
  • treeitem의 부모가 group역할을 가진 경우, group에서 뒤로 이동하여 treeitem 역할을 가진 요소를 찾은 다음, RELATION_NODE_CHILD_OF를 그 요소로 설정한다.

aria-atomic의 경우, 역방향 관계가 API에 의해 지원되는 곳에서는:

  • 사용자 에이전트는 조상 요소의 체인을 확인하여 aria-atomic="true"를 찾아야 SHOULD 한다. 발견되면, 사용자 에이전트는 RELATION_MEMBER_OF 관계가 aria-atomic="true"를 설정한 조상을 가리키도록 설정해야 SHOULD 한다.

3.6.3 그룹 위치

aria-level, aria-posinset, 및 aria-setsize는 모두 1 기반이다. 속성이 없거나 "0"인 경우, 이는 해당 속성이 계산되지 않았거나 지원되지 않음을 나타낸다. 이러한 속성 중 하나라도 작성자가 "0" 또는 음수로 지정한 경우, 사용자 에이전트는 그 대신 "1"을 사용해야 SHOULD 한다.

aria-leveltreeitem 또는 comment 역할의 요소에 제공되거나 상속되지 않은 경우, IAccessible2 또는 ATK/AT-SPI를 구현하는 사용자 에이전트는 명시적 또는 계산된 RELATION_NODE_CHILD_OF 관계를 따라 이를 계산해야 MUST 한다.

aria-posinsetaria-setsize가 제공되지 않은 경우, 사용자 에이전트는 다음과 같이 이를 계산해야 MUST 한다:

  • role="treeitem"role="comment"의 경우, 명시적 또는 계산된 레벨이 현재 항목의 레벨보다 작아질 때까지 트리를 뒤와 앞으로 이동한다. 현재 항목과 같은 레벨에 있는 항목만 센다.
  • 그 외의 경우, 역할이 aria-posinsetaria-setsize를 지원하면, 부모(DOM 부모 또는 aria-owns에 의해 정의된 부모)를 처리하여 같은 역할을 가진 항목을 센다.
  • 이러한 값은 1 기반이므로, 계산에 현재 항목을 포함한다. aria-posinset의 경우, 현재 항목과, DOM에서 현재 항목보다 앞에 있는 경우 다른 그룹 항목을 포함한다. aria-setsize의 경우, 여기에 DOM에서 현재 항목 뒤에 있는 같은 그룹의 항목 수를 더한다.

작성자가 aria-setsizearia-posinset 중 하나 이상을 제공하는 경우, 집합 안의 모든 요소에 이를 제공하는 것은 작성자의 책임이다. 이 경우 사용자 에이전트가 누락된 값을 보정하는 것은 정의되지 않는다.

MSAA/IAccessible2 API 매핑에는, aria-level, aria-posinset, 및/또는 aria-setsize가 요소에 존재하거나 사용자 에이전트에 의해 계산되는 경우 추가 함수 groupPosition() [IAccessible2]가 포함된다. 이 경우:

  • aria-levelgroupPosition()groupLevel 매개변수에 노출되고,
  • aria-setsizesimilarItemsInGroup 매개변수에 노출되며,
  • aria-posinsetpositionInGroup 매개변수에 노출된다.

3.7 동작

역할 매핑에 정의된 대로 역할을 접근 가능한 객체에 매핑하는 일부로, 사용자 에이전트는 해당 객체에 기본 동작을 노출한다.

참고

작성자는 이러한 클릭 이벤트에 대한 핸들러를 만들어 WAI-ARIA 상태 및 속성을 DOM에서 그에 맞게 갱신해야 한다. 그래야 갱신된 상태가 사용자 에이전트에 의해 접근성 API에 채워질 수 있다.

3.8 이벤트

사용자 에이전트는 사용자 동작, WAI-ARIA 상태 변경, 문서 콘텐츠 또는 노드 가시성 변경, 선택 변경 및 메뉴 동작에 대해 다음 절에 정의된 대로 이벤트를 발생시킨다.

3.8.1 상태 및 속성 변경 이벤트

사용자 에이전트는 아래 표에 정의된 대로 상태 변경을 보조 기술에 알려야 MUST 하며, 접근성 API가 해당 속성에 대한 변경 이벤트를 정의하는 경우 속성 변경을 보조 기술에 알려야 SHOULD 하며, 접근성 API가 해당 속성에 대한 변경 이벤트를 정의하지 않는 경우 속성 변경을 보조 기술에 알려서는 SHOULD NOT 된다. 예를 들어, IAccessible2는 aria-activedescendant가 변경될 때 사용할 이벤트를 정의한다. 변경될 것으로 예상되는 WAI-ARIA 속성에는 aria-activedescendant, aria-valuenow, 및 aria-valuetext가 포함된다.

참고

일부 API에서는 AT가 구독한 이벤트에 대해서만 알림을 받을 수 있다.

단순성과 성능을 위해 사용자 에이전트는 현재 포커스가 없는 창에서 발생하는 이벤트와 같이 보조 기술이 일반적으로 무시하는 상태 또는 속성 변경에 대한 변경 이벤트를 생략할 수 MAY 있다.

참고

번역자: 다음 표 및 해당 토글 버튼과 연결된 레이블 텍스트는 이 문서의 <head> 절에 있는 mappingTableLabels 객체를 참조하라.

3.8.1.1 aria-activedescendant
ARIA 명세 aria-activedescendant
MSAA + IAccessible2 이벤트 포커스 변경을 참조하라.

추가로:

IA2_EVENT_ACTIVE_DESCENDANT_CHANGED

UIA 이벤트 포커스 변경을 참조하라.

추가로:

PropertyChangedEvent

속성: AriaProperties

ATK/AT-SPI 이벤트 포커스 변경을 참조하라.
AX API 알림 포커스 변경을 참조하라.

추가로: AXSelectedChildrenChanged

Android

TBD

3.8.1.2 aria-busy (상태)
ARIA 명세 aria-busy (상태)
MSAA + IAccessible2 이벤트 EVENT_OBJECT_STATECHANGE
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties

ATK/AT-SPI 이벤트 object:state-changed:busy
AX API 알림 AXElementBusyChanged
Android

TBD

3.8.1.3 aria-checked (상태)
ARIA 명세 aria-checked (상태)
MSAA + IAccessible2 이벤트 EVENT_OBJECT_STATECHANGE
UIA 이벤트 PropertyChangedEvent

속성: toggle 패턴의 일부인 AriaProperties, ToggleState

ATK/AT-SPI 이벤트 object:state-changed:checked
AX API 알림 AXValueChanged
Android

TBD

3.8.1.4 aria-current (상태)
ARIA 명세 aria-current (상태)
MSAA + IAccessible2 이벤트 IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties

ATK/AT-SPI 이벤트 object:state-changed:active
AX API 알림 AXCurrentStateChanged
Android

TBD

3.8.1.5 aria-disabled (상태)
ARIA 명세 aria-disabled (상태)
MSAA + IAccessible2 이벤트 EVENT_OBJECT_STATECHANGE
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties, IsEnabled

ATK/AT-SPI 이벤트 object:state-changed:enabledobject:state-changed:sensitive
AX API 알림 AXDisabledStateChanged
Android

TBD

3.8.1.6 aria-describedby
ARIA 명세 aria-describedby
MSAA + IAccessible2 이벤트 EVENT_OBJECT_DESCRIPTIONCHANGE
UIA 이벤트 PropertyChangedEvent

속성: DescribedBy

ATK/AT-SPI 이벤트 object:property-change:accessible-description
AX API 알림 AXDescribedByChanged
Android

TBD

3.8.1.7 aria-dropeffect (속성, 폐기 예정)
ARIA 명세 aria-dropeffect (속성, 폐기 예정)
MSAA + IAccessible2 이벤트 IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties

ATK/AT-SPI 이벤트 object:property-change
AX API 알림 AXDropEffectChanged
Android

TBD

3.8.1.8 aria-expanded (상태)
ARIA 명세 aria-expanded (상태)
MSAA + IAccessible2 이벤트 EVENT_OBJECT_STATECHANGE
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties, ExpandCollapse 패턴의 일부인 ExpandCollapseState

ATK/AT-SPI 이벤트 object:state-changed:expanded
AX API 알림 AXRowExpanded,
AXRowCollapsed,
AXRowCountChanged
Android

TBD

3.8.1.9 aria-grabbed (상태, 폐기 예정)
ARIA 명세 aria-grabbed (상태, 폐기 예정)
MSAA + IAccessible2 이벤트

EVENT_OBJECT_SELECTION

IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED

UIA 이벤트 PropertyChangedEvent

속성: AriaProperties

ATK/AT-SPI 이벤트 object:property-change
AX API 알림 AXGrabbedStateChanged
Android

TBD

3.8.1.10 aria-hidden (상태)
ARIA 명세 aria-hidden (상태)
MSAA + IAccessible2 이벤트 IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED
UIA 이벤트 StructureChangedEvent

PropertyChangedEvent

속성: AriaProperties

ATK/AT-SPI 이벤트 object:property-change
AX API 알림 AXUIElementDestroyed,
AXUIElementCreated
Android

TBD

3.8.1.11 aria-invalid (상태)
ARIA 명세 aria-invalid (상태)
MSAA + IAccessible2 이벤트 EVENT_OBJECT_STATECHANGE
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties, IsDataValidForForm

ATK/AT-SPI 이벤트 object:state-changed:invalid_entry
AX API 알림 AXInvalidStatusChanged
Android

TBD

3.8.1.12 aria-labelaria-labelledby
ARIA 명세 aria-labelaria-labelledby
MSAA + IAccessible2 이벤트 EVENT_OBJECT_NAMECHANGE
UIA 이벤트 PropertyChangedEvent

aria-label에 대한 속성: AriaProperties

aria-labelledby에 대한 속성: LabeledBy

ATK/AT-SPI 이벤트 object:property-change:accessible-name
AX API 알림 AXLabelCreated
Android

TBD

3.8.1.13 aria-pressed (상태)
ARIA 명세 aria-pressed (상태)
MSAA + IAccessible2 이벤트 EVENT_OBJECT_STATECHANGE
UIA 이벤트 PropertyChangedEvent

속성: toggle 패턴의 일부인 AriaProperties, ToggleState

ATK/AT-SPI 이벤트 object:state-changed:pressed
AX API 알림 AXPressedStateChanged
Android

TBD

3.8.1.14 aria-readonly
ARIA 명세 aria-readonly
MSAA + IAccessible2 이벤트 EVENT_OBJECT_STATECHANGE
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties

ATK/AT-SPI 이벤트 object:state-changed:readonly
AX API 알림 AXReadOnlyStatusChanged
Android

TBD

3.8.1.15 aria-required
ARIA 명세 aria-required
MSAA + IAccessible2 이벤트 EVENT_OBJECT_STATECHANGE
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties, IsRequiredForForm

ATK/AT-SPI 이벤트 object:state-changed:required
AX API 알림 AXRequiredStatusChanged
Android

TBD

3.8.1.16 aria-selected (상태)
ARIA 명세 aria-selected (상태)
MSAA + IAccessible2 이벤트 자세한 내용은 선택 절을 참조하라.
UIA 이벤트 자세한 내용은 선택 절을 참조하라.
ATK/AT-SPI 이벤트 자세한 내용은 선택 절을 참조하라.
AX API 알림 자세한 내용은 선택 절을 참조하라.
Android

TBD

3.8.1.17 aria-valuenow
ARIA 명세 aria-valuenow
MSAA + IAccessible2 이벤트 EVENT_OBJECT_VALUECHANGE
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties, 요소가 RangeValue 컨트롤 패턴으로 매핑되는 경우 RangeValueValue도 포함

ATK/AT-SPI 이벤트 object:property-change:accessible-value
AX API 알림 AXValueChanged
Android

TBD

3.8.1.18 aria-valuetext
ARIA 명세 aria-valuetext
MSAA + IAccessible2 이벤트 EVENT_OBJECT_VALUECHANGE
UIA 이벤트 PropertyChangedEvent

속성: AriaProperties

ATK/AT-SPI 이벤트 object:property-change:accessible-value
AX API 알림 AXValueChanged
Android

TBD

3.8.2 문서 콘텐츠 또는 노드 가시성 변경

문서 변경 처리는 WAI-ARIA와 관계없이 중요하다. 아래 표에 설명된 이벤트는 사용자 에이전트가 접근성 트리를 통해 DOM의 변경을 AT에 알리는 데 사용된다. 이 표준에 대한 적합성 목적상, 사용자 에이전트는 웹 페이지의 동적 콘텐츠에 WAI-ARIA 속성이 적용될 때마다 이 절에 설명된 동작을 구현해야 MUST 한다.

API에서 발생시켜야 하는 문서 변경 시나리오 및 이벤트 표
시나리오 MSAA + IAccessible2 이벤트 UIA 이벤트 ATK/AT-SPI 이벤트 AX API 알림
텍스트가 제거될 때 IA2_EVENT_TEXT_REMOVED EVENT_OBJECT_LIVEREGIONCHANGED text_changed::delete 라이브 영역 안에 있는 경우 AXLiveRegionChanged.
aria-errormessage 안에 있는 경우, AXValidationErrorChanged.
텍스트가 삽입될 때 IA2_EVENT_TEXT_INSERTED EVENT_OBJECT_LIVEREGIONCHANGED text_changed::insert 라이브 영역 안에 있는 경우 AXLiveRegionChanged.
aria-errormessage 안에 있는 경우, AXValidationErrorChanged.
텍스트가 변경될 때 IA2_EVENT_TEXT_REMOVEIA2_EVENT_TEXT_INSERTED EVENT_OBJECT_LIVEREGIONCHANGED text_changed::deletetext_changed::insert 라이브 영역 안에 있는 경우 AXLiveRegionChanged.
aria-errormessage 안에 있는 경우, AXValidationErrorChanged.

문제의 노드가 요소이며 접근 가능한 객체를 가진 경우의 노드 변경에 대해서는 다음 이벤트를 발생시킨다. 노드의 접근성 하위트리접근 가능한 객체접근성 트리 안에 있는 것과, 그 모든 접근성 자손이다. 여기에는 그 트리에서 부모-자식 외의 관계를 가진 객체는 포함되지 않는다. 예를 들어, 그러한 객체가 aria-flowto를 통해 연결되어 있더라도 접근성 트리의 자손이기도 한 경우가 아니라면 포함되지 않는다.

API에서 발생시켜야 하는 문서 변경 시나리오 및 이벤트 표
시나리오 MSAA Microsoft UIA 이벤트 ATK/AT-SPI 이벤트 AX API 알림
접근성 하위트리숨겨질 EVENT_OBJECT_HIDE
MSAA 이벤트인 EVENT_OBJECT_DESTROY는 안정성 문제의 이력이 있고 보조 기술이 이를 피하기 때문에 사용되지 않는다. 어쨌든 사용자의 관점에서는 어떤 것이 숨겨진 것과 파괴된 것 사이에 차이가 없다.
AutomationElement..::.StructureChangedEvent children_changed::remove

AXUIElementDestroyed

라이브 영역 안에 있는 경우, AXLiveRegionChanged

접근성 하위트리가 제거될 때 EVENT_OBJECT_REORDER
MSAA 이벤트인 EVENT_OBJECT_DESTROY는 안정성 문제의 이력이 있고 보조 기술이 이를 피하기 때문에 사용되지 않는다. 어쨌든 사용자의 관점에서는 어떤 것이 숨겨진 것과 파괴된 것 사이에 차이가 없다.
AutomationElement..::.StructureChangedEvent children_changed::remove

AXUIElementDestroyed

라이브 영역 안에 있는 경우, AXLiveRegionChanged

접근성 하위트리가 표시될 때 EVENT_OBJECT_SHOW   children_changed::add

AXUIElementCreated

라이브 영역 안에 있는 경우, AXLiveRegionChanged

접근성 하위트리가 삽입될 때 EVENT_OBJECT_REORDER   children_changed::add

AXUIElementCreated

라이브 영역 안에 있는 경우, AXLiveRegionChanged

접근성 하위트리가 이동될 때 한 위치에서의 제거 및 다른 위치로의 삽입으로 처리한다 한 위치에서의 제거 및 다른 위치로의 삽입으로 처리한다 한 위치에서의 제거 및 다른 위치로의 삽입으로 처리한다

AXUIElementDestroyed/ AXUIElementCreated

라이브 영역 안에 있는 경우, AXLiveRegionChanged

접근성 하위트리가 변경될 때(예: replaceNode) 제거 및 삽입으로 처리한다 제거 및 삽입으로 처리한다 제거 및 삽입으로 처리한다

AXUIElementDestroyed/ AXUIElementCreated

라이브 영역 안에 있는 경우, AXLiveRegionChanged

어떤 경우에는 노드가 요소가 아니거나 접근 가능한 객체가 없는 곳에서 노드 변경이 발생할 수 있다. 예를 들어, 번호 매기기 목록의 불릿("12.")은 접근성 트리에는 노드가 있을 수 있지만 DOM 트리에는 없을 수 있다. HTML에서 <strong>으로 표시된 단락 안의 텍스트의 경우, <strong> 요소는 DOM 트리에는 노드가 있지만 접근성 트리에는 없을 수 있다. 텍스트 자체는 물론 접근성 트리 안에 있으며, strong으로 서식 지정된 텍스트 범위의 식별도 함께 있다. 위 표에 설명된 변경 중 하나가 그러한 노드에서 발생하는 경우, 사용자 에이전트는 위에 설명된 관련 텍스트 변경 이벤트를 계산하고 발생시켜야 SHOULD 한다.

사용자 에이전트는 프로세스 안에서 실행 중인 보조 기술이 노드가 제거되기 전에 제거 알림을 받을 수 있도록 해야 SHOULD 한다. 이를 통해 스크린 리더와 같은 보조 기술은 삭제되는 해당 DOM 노드를 다시 참조할 수 있다. 이는 제거가 중요한 라이브 영역에서 중요하다. 예를 들어, 스크린 리더는 다른 사용자가 채팅방을 나갔음을 사용자에게 알리고자 할 수 있다. MSAA의 이벤트는 EVENT_OBJECT_HIDE가 된다. ATK/AT-SPI에서는 children_changed::remove가 된다. macOS에서는 이벤트가 AXLiveRegionChanged이다. 또한 이를 위해 사용자 에이전트는 제거되는 고유한 노드를 식별하는 고유 ID를 접근성 API 알림에 제공해야 한다.

위에 언급한 변경 이벤트를 발생시킬 때, 해당 변경이 사용자 입력으로 인해 발생했는지(페이지 로드에서 시작된 timeout 등과 반대로)에 대한 정보를 제공하는 것은 매우 유용하다. 이를 통해 보조 기술은 사용자 동작으로 인한 변경과 실제 세계에서 비롯된 변경을 서로 다른 규칙으로 표시할 수 있다. 마우스 호버는 마우스를 우발적으로 건드려 발생할 수 있으므로 명시적 사용자 입력으로 간주되지 않는다.

변경이 사용자 입력으로부터 발생했는지를 노출하려면:

  • ATK/AT-SPI에서는 사용자가 변경을 일으키지 않은 경우 이벤트 이름에 문자열 ":system"을 추가하여 제공할 수 있다.
  • 스크린 리더가 일반적으로 같은 스레드의 프로세스 안에서 접근하는 IAccessible2에서는 사용자가 변경을 일으킨 경우 이벤트에 대한 접근 가능한 객체에 객체 속성 event-from-user-input:true를 노출하는 것이 모범 사례이다.

변경의 맥락에 대한 추가적인 유용한 정보 노출:

  • ATK/AT-SPI 및 IAccessible2에서, 접근성 이벤트의 대상 접근 가능한 객체에 있는 RELATION_MEMBER_OF 관계는 aria-atomic="true"를 가진 조상(있는 경우)을 가리켜야 SHOULD 한다.
  • ATK/AT-SPI 및 IAccessible2에서, container-live, container-relevant, container-busy, container-atomic 객체 속성은 접근성 이벤트 객체에 노출되어야 SHOULD 하며, 관련 WAI-ARIA 속성에 대한 계산된 값을 제공한다. 계산된 값은 가장 가까운 조상의 값이다. 기본값이 사용되는 경우에는 객체 속성을 노출하지 않는 것이 권장된다.

추가 MSAA 이벤트가 필요할 수 있다:

  • ROLE_SYSTEM_ALERT의 매핑된 MSAA 역할을 가진 조상 안에서 어떤 것이 변경되는 경우, alert에 대해 EVENT_SYSTEM_ALERT 이벤트를 발생시켜야 SHOULD 한다. alert 역할은 aria-live 속성에 대해 "assertive"라는 암시적 값을 가진다.
  • 메뉴 이벤트를 발생시켜야 할 수 있다. 메뉴에 대한 특수 이벤트를 참조하라.

3.8.3 포커스 변경

다음 표는 접근성 API 키보드 포커스 상태 및 이벤트를 정의한다.

포커스 상태 및 이벤트에 대한 접근성 API
  MSAA Microsoft UIA ATK/AT-SPI AX API
포커스 가능 상태 STATE_SYSTEM_FOCUSABLE 현재 상태는 IUIAutomationElement::CurrentIsKeyboardFocusable에 반영되며, UIA_IsKeyboardFocusablePropertyId 속성 식별자를 사용하여 IUIAutomationElement::GetCurrentPropertyValue 메서드로 검색할 수 있다. STATE_FOCUSABLE boolean AXFocused: AXUIElementIsAttributeSettable 메서드는 YES를 반환한다.
포커스된 상태 STATE_SYSTEM_FOCUSED 현재 상태는 IUIAutomationElement::CurrentHasKeyboardFocus에 반영되며, UIA_HasKeyboardFocusPropertyId 속성 식별자를 사용하여 IUIAutomationElement::GetCurrentPropertyValue 메서드로 검색할 수 있다. STATE_FOCUSED boolean AXFocused
포커스 이벤트 EVENT_OBJECT_FOCUS 클라이언트는 IUIAutomationFocusChangedEventHandler 콜백 인터페이스를 사용하여 IUIAutomation::AddFocusChangedEventHandler로 구독할 수 있다 object:state-changed:focused 및: AXFocusedUIElementChanged

3.8.4 선택

선택에는 두 가지 경우가 있다:

  • 단일 선택
  • 다중 선택

단일 선택의 경우, 선택은 포커스를 따른다(포커스 이벤트에 대한 정보는 "포커스 상태 및 이벤트 표" 절을 참조하라). 사용자 에이전트는 aria-selected가 변경될 때 다음 이벤트를 발생시켜야 MUST 한다:

단일 선택 이벤트
시나리오 MSAA Microsoft UIA ATK/AT-SPI AX API
포커스 변경 새로 포커스된 항목에 대해 EVENT_OBJECT_SELECTIONEVENT_OBJECT_STATECHANGE. 새로 포커스된 요소에 대해 UIA_SelectionItem_ElementSelectedEventId.

gridcell, row, option 또는 tab에 있는 경우 UIA_SelectionItem_ElementSelectedEventId를 발생시킨다.

  • 현재 컨테이너에서 object:selection-changed,
  • 선택이 변경된 자손 접근 가능한 객체에서 object:state-changed:selected:
    • 방금 선택된 자손에 대해 detail1 = 1.
    • 방금 선택 해제된 자손에 대해 detail1 = 0.
AXSelectedChildrenChanged

다중 선택의 경우는 해당 속성을 지원하는 역할을 가진 요소aria-multiselectable="true"가 있는 경우 발생한다. 사용자 에이전트는 자손에서 aria-selected가 변경될 때 다음 이벤트를 다음과 같이 발생시켜야 MUST 한다:

다중 선택의 경우는 해당 속성을 지원하는 역할을 가진 요소aria-multiselectable="true"가 있는 경우 발생한다. 몇 가지 중요한 측면이 있다:

  1. Microsoft UIA에서 SelectionSelectionItem 컨트롤 패턴은 선택 가능 여부, 상태 및 메서드를 노출한다.
  2. 사용자 에이전트는 자손에서 aria-selected가 변경될 때 다음 이벤트를 다음과 같이 발생시켜야 MUST 한다:
다중 선택 이벤트
시나리오 MSAA Microsoft UIA ATK/AT-SPI AX API
aria-selected 토글 항목에서 EVENT_OBJECT_SELECTIONADD/EVENT_OBJECT_SELECTIONREMOVE. SelectionItem Control Pattern: 항목에서 UIA_SelectionItem_ElementAddedToSelectionEventId 또는 UIA_SelectionItem_ElementRemovedFromSelectionEventId.
  • 현재 컨테이너에서 object:selection-changed,
  • 선택이 변경된 모든 자손 접근 가능한 객체에서 object:state-changed:selected:
    • 방금 선택된 모든 자손에 대해 detail1 = 1.
    • 방금 선택 해제된 모든 자손에 대해 detail1 = 0.
AXSelectedChildrenChanged
선택이 포커스를 따름 새로 포커스된 항목에서 EVENT_OBJECT_SELECTIONEVENT_OBJECT_STATECHANGE. 중복을 피하기 위해 FocusChangedEvent는 발생시켜야 하지만 개별 선택 이벤트는 발생하지 않을 수 있다. AXSelectedChildrenChanged
한 번에 많은 항목 선택 또는 선택 해제 사용자 에이전트는 EVENT_OBJECT_SELECTIONWITHIN을 발생시킬 수 MAY 있다. 이 이벤트가 발생된 경우, 위에 언급된 다른 이벤트는 성능을 위해 생략될 수 MAY 있다. 선택되거나 선택 해제된 각 요소에 대해 현재 컨테이너에서 SelectionItem 컨트롤 패턴: UIA_SelectionItem_ElementAddedToSelectionEventId 또는 UIA_SelectionItem_ElementRemovedFromSelectionEventId를 발생시킨다. 사용자 에이전트는 Selection 컨트롤 패턴 Invalidated 이벤트를 발생시키도록 선택할 수 MAY 있으며, 이는 컨테이너 안의 선택이 크게 변경되어 InvalidateLimit 상수가 허용하는 것보다 더 많은 추가 및 제거 이벤트를 보내야 함을 나타낸다.
  • 사용자 에이전트는 성능을 위해 여러 이벤트 대신 컨테이너에서 단일 object:selection-changed 이벤트를 발생시킬 수 MAY 있다.
  • 선택이 변경된 모든 자손 접근 가능한 객체에서 object:state-changed:selected:
AXSelectedChildrenChanged

3.8.5 메뉴에 대한 특수 이벤트

일부 API는 메뉴가 열리거나 닫힐 때마다 특수 이벤트를 제공한다. 사용자 에이전트는 아래 표에 설명된 이벤트를 제공해야 SHOULD 한다. 제공되는 경우, 메뉴는 다양한 기법을 사용하여 표시되거나 숨겨질 수 있으므로, 사용자 에이전트는 이벤트가 중첩되고 대칭적이도록 보장해야 MUST 한다.

흔히 menubar는 메뉴 계층을 구성하는 데 사용된다. 이러한 경우, menubar는 연결된 menuitem들의 DOM 부모이거나, aria-owns로 정의된 부모여야 MUST 한다. 다른 경우에는 menubar가 관여하지 않는다. 예를 들어, menu가 toolbar 버튼과 연결되어 있거나 컨텍스트 메뉴인 경우가 그렇다. 그럼에도 관련 메뉴 이벤트는 다음 표에 설명된 대로 제공된다.

메뉴 이벤트
시나리오 MSAA Microsoft UIA AX API

menubar가 현재 활성 상태가 아니며, 사용자가 다른 곳에서 menubar로 포커스를 이동하여 이를 활성화한다. 그 결과 menubar 안의 menuitem이 포커스된다.

menubar를 활성화하고 menubar의 접근 가능한 객체에서 EVENT_SYSTEM_MENUSTART를 발생시킨다. 메뉴의 접근 가능한 객체에서 MenuModeStartEvent. AXMenuOpenedNotification

menubar가 활성화되어 있는 동안 menuitem에 포커스하거나, menu 안의 menuitem에 포커스한다.

EVENT_OBJECT_FOCUS AutomationFocusChangedEvent AXMenuItemSelectedNotification

메뉴 팝업이 표시됨(menu가 열림).

메뉴가 닫혔다가 다시 열릴 때까지 한 번만 발생해야 한다.

EVENT_SYSTEM_MENUPOPUPSTART MenuOpenedEvent, 그 다음 menuitem에서 focus 이벤트. AXMenuOpenedNotification
메뉴 팝업이 숨겨짐(menu가 닫힘). 접근 가능한 menu 객체에 대해 한 번만 EVENT_SYSTEM_MENUPOPUPEND, 그리고 EVENT_SYSTEM_MENUPOPUPSTART가 그것에 대해 발생된 경우에만. MenuClosedEvent AXMenuClosedNotification
하위 메뉴를 포함한 열린 모든 메뉴가 닫히고, 사용자가 menubar 밖으로 포커스를 이동한다; menubar가 비활성화된다. menubar에서 EVENT_SYSTEM_MENUEND를 발생시키고 menubar를 비활성화한다. MenuClosedEvent, 그 다음 MenuModeEndEvent AXMenuClosedNotification

4. 알고리즘

일부 API는 특정 알고리즘을 따라야 하는 메서드를 제공한다. 다음 절에서는 이러한 메서드에 대한 알고리즘 매핑 표를 제공한다.

4.1 ARIANotifyMixin 알고리즘 매핑 표

ARIANotifyMixin은 콘텐츠를 보조 기술에 알리는 메서드를 제공한다. 다음 알고리즘 매핑은 보조 기술 사용자에게 일관된 동작을 보장하기 위해 이러한 알림이 여러 접근성 API에서 어떻게 구현되는지를 지정한다.

4.1.1 ariaNotify

node, announcement, 및 priority가 주어졌을 때 aria notify하려면:

ARIA 명세 aria notify
전제 조건

node접근성 트리에서 제외된 경우, 이 단계를 중단한다.

언어

사용자 에이전트 및 보조 기술은 다음 출처에서 첫 번째 유효한 BCP 47 언어 태그를 가져와 알림의 언어를 결정해야 MUST 한다:

  1. node에서 가장 가까운 조상 요소의 lang 속성 (node 자체 포함).
  2. 문서 요소의 lang 속성(문서에서 호출된 경우 포함).
  3. 사용자 에이전트 또는 플랫폼 기본값.

보조 기술은 해당 언어를 사용하여 알림을 표시해야 MUST 한다 (예: 음성, 발음 규칙, 점자 표).

MSAA + IAccessible2

지정된 구현 없음(fallback 참고 참조).

UIA
  1. priority가 "high"이면 mapped_priorityNotificationProcessing_ImportantAll로, 그렇지 않으면 NotificationProcessing_All로 둔다.

  2. node, NotificationKind_ActionCompleted, mapped_priority, announcement, 및 빈 문자열을 사용하여 UiaRaiseNotificationEvent를 호출한다.

참고

플랫폼 접근성 구현이 nodeUIA Control view 또는 Content view에 표시되지 않는다고 판단하는 경우, 사용자 에이전트는 대신 UIA Control로 표시되는 가장 가까운 조상에서 알림 이벤트를 발생시켜야 SHOULD 한다. 그러한 조상이 없으면, 사용자 에이전트는 Control 또는 Content view에 없는 요소의 이벤트를 무시하는 보조 기술도 알림을 받을 수 있도록 문서 루트(이러한 view 중 하나에 있을 것으로 예상됨)에서 이를 발생시켜야 SHOULD 한다.

ATK
  1. priority가 "high"이면 mapped_priorityAtk.Live.ATK_LIVE_ASSERTIVE로, 그렇지 않으면 Atk.Live.ATK_LIVE_POLITE로 둔다.

  2. node, "notification", announcement, 및 mapped_priority를 사용하여 g_signal_emit_by_name을 호출한다.

ATK 2.50.0 이전의 오래된 Linux 접근성 스택에서는 사용자 에이전트가 fallback을 사용할 수 MAY 있다. fallback 참고를 참조하라.

AT-SPI
  1. priority가 "high"이면 mapped_priorityATSPI_LIVE_ASSERTIVE로, 그렇지 않으면 ATSPI_LIVE_POLITE로 둔다.

  2. node, "announcement", announcement, 및 mapped_priority를 사용하여 DBUS 신호 ATSPI_DBUS_INTERFACE_EVENT_OBJECT를 보낸다.

AX API
  1. priority가 "high"이면 mapped_priorityNSAccessibilityPriorityHigh로, 그렇지 않으면 NSAccessibilityPriorityMedium으로 둔다.

  2. userInfo를 다음 키를 가진 NSDictionary로 둔다:

    1. NSAccessibilityAnnouncementKeyannouncement
    2. NSAccessibilityPriorityKeymapped_priority
  3. node, NSAccessibilityAnnouncementRequestedNotification, 및 userInfo를 사용하여 NSAccessibilityPostNotificationWithUserInfo를 호출한다.

참고

적절한 플랫폼 알림 API를 사용할 수 없는 경우(예: 더 새로운 알림 신호가 없는 ATK 2.50.0 이전의 오래된 Linux 접근성 스택, 또는 Windows에서 사용자 에이전트가 UIA를 사용할 수 없는 경우), 사용자 에이전트는 aria notify 알림을 전달하기 위해 접근성 트리에 임시의 보조 기술 전용 라이브 영역을 합성할 수 MAY 있다. 이러한 fallback 노드는 웹 콘텐츠에 노출되거나 웹 콘텐츠에서 감지될 수 없으며, 이 동작은 필수가 아니다.

5. 개인정보 보호 고려사항

Web Platform Design Principles에 따라, 이 명세는 정보가 보조 기술에 의해 사용되고 있는지를 판별하는 프로그래밍 방식의 인터페이스를 제공하지 않는다. 그러나 이 명세는 작성자가 보조 기술 사용자에게, 보조 기술을 사용하지 않는 사용자에게 제공되는 정보와 다른 정보를 표시할 수 있도록 허용한다. 이는 ARIA 및 CORE-AAM 명세의 여러 기능을 사용하여 가능하며, 웹 기술 스택의 다른 많은 부분을 사용해서도 가능한 것과 같다. 이러한 콘텐츠 불일치는 보조 기술 사용자의 능동적 핑거프린팅을 수행하는 데 악용될 수 있다.

6. 보안 고려사항

이 명세는 새로운 보안 고려사항을 도입하지 않는다.

A. 변경 로그

A.1 마지막 Candidate Recommendation Snapshot 이후의 실질적 변경사항

A.2 Core Accessibility API Mappings 1.1 Recommendation 이후의 실질적 변경사항

B. 감사의 글

이 절은 비규범적이다.

다음 사람들은 이 문서의 개발에 기여했다.

B.1 게시 당시의 ARIA WG 참여자

B.2 지원 기금 제공자

이 출판물은 부분적으로 미국 교육부, National Institute on Disability, Independent Living, and Rehabilitation Research (NIDILRR)의 미국 연방 기금으로 지원되었으며, 초기에는 계약 번호 ED-OSE-10-C-0067, 그 다음에는 계약 번호 HHSP23301500054C, 현재는 HHS75P00120P00168에 따라 지원되었다. 이 출판물의 내용이 반드시 미국 교육부의 견해나 정책을 반영하는 것은 아니며, 상표명, 상업 제품 또는 조직의 언급이 미국 정부의 승인을 의미하지도 않는다.

C. 참고문헌

C.1 규범 참고문헌

[HTML-AAM]
HTML Accessibility API Mappings 1.0. Scott O'Hara; Rahim Abdi. W3C. 2026년 4월 24일. W3C Working Draft. URL: https://www.w3.org/TR/html-aam-1.0/
[IAccessible2]
IAccessible2. Linux Foundation. URL: https://wiki.linuxfoundation.org/accessibility/iaccessible2/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997년 3월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. B. Leiba. IETF. 2017년 5월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[wai-aria]
Accessible Rich Internet Applications (WAI-ARIA) 1.0. James Craig; Michael Cooper et al. W3C. 2014년 3월 20일. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria/
[WAI-ARIA-1.2]
Accessible Rich Internet Applications (WAI-ARIA) 1.2. Joanmarie Diggs; James Nurthen; Michael Cooper; Carolyn MacLeod. W3C. 2023년 6월 6일. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria-1.2/

C.2 정보 참고문헌

[accname-1.2]
Accessible Name and Description Computation 1.2. Bryan Garaventa; Melanie Sumner. W3C. 2026년 4월 24일. W3C Working Draft. URL: https://www.w3.org/TR/accname-1.2/
[Android-Accessibility-API]
Android Accessibility API. Google. URL: https://developer.android.com/guide/topics/ui/accessibility
[AT-SPI]
Assistive Technology Service Provider Interface. The GNOME Project. URL: https://gnome.pages.gitlab.gnome.org/at-spi2-core/libatspi/
[ATK]
ATK - Accessibility Toolkit. The GNOME Project. URL: https://developer.gnome.org/atk/stable/
[AXAPI]
The NSAccessibility Protocol for macOS. Apple, Inc. URL: https://developer.apple.com/documentation/appkit/nsaccessibility
[CORE-AAM-1.1]
Core Accessibility API Mappings 1.1. Joanmarie Diggs; Joseph Scheuhammer; Richard Schwerdtfeger; Michael Cooper; Andi Snow-Weaver; Aaron Leventhal. W3C. 2017년 12월 14일. W3C Recommendation. URL: https://www.w3.org/TR/core-aam-1.1/
[dom]
DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
[UI-AUTOMATION]
UI Automation. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/ui-automation-specification
[UIA-EXPRESS]
The IAccessibleEx Interface. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/iaccessibleex
[WAI-ARIA-ROADMAP]
Roadmap for Accessible Rich Internet Applications (WAI-ARIA Roadmap). Richard Schwerdtfeger. W3C. 2008년 2월 4일. W3C Working Draft. URL: https://www.w3.org/TR/wai-aria-roadmap/