OSSCA Chromium

기여 목록 / 8458262

a11y: Fix table accessible names when the first caption is hidden

BlinkfixMerged

<table> 요소의 접근성 이름(accessible name) 계산 시 첫 번째 <caption>이 숨김(hidden) 처리되어 있을 경우, 이후 노출되는 유효한 캡션을 탐색하여 테이블 이름을 올바르게 설정

문제 설명

  • 기존 계산 로직에서는 DOM 트리상의 단순 첫 번째 캡션(table_element->caption())만 확인
  • 첫 번째 캡션에 hidden 속성이 지정되어 있어 텍스트 대체 계산에서 제외될 경우, 이후에 화면에 노출되는 두 번째 <caption>이 존재하더라도 탐색하지 않고 빈 문자열("")을 반환하는 문제 발생
  • 스크린 리더 등 보조 기술 사용 시 시각적으로 렌더링된 테이블 캡션의 정보가 제대로 전달되지 않는 현상 발생

해결 내용

테이블의 자식 노드들을 순회하며 숨겨지지 않은(렌더링되는) 첫 번째 캡션을 찾아 접근성 이름을 계산하도록 로직을 변경하였습니다.

  1. HTMLTableElement::caption()으로 단순 첫 번째 캡션을 가져오는 대신, 자식 캡션 노드들을 순회하는 구조로 변경
  2. 각 캡션 요소의 AXObject를 조회하여 IsHiddenForTextAlternativeCalculation() 조건을 검사
  3. 숨겨지지 않은 첫 번째 캡션을 발견하면 해당 요소의 하위 트리를 통해 대체 텍스트(text alternative)를 계산하고 탐색 중단

관련 이슈와 외부 PR

배운 점

  • W3C ARIA 표준을 파악하여 스펙에 맞게 기여하는 방법 학습

참고 자료