OSSCA Chromium

기여 목록 / 8405025

[Typed OM] Support text-emphasis-position keywords

BlinkfixIn Review

CSS Typed OM에서 text-emphasis-position에 CSSKeywordValue를 설정할 수 있도록 키워드 검증과 내부 CSS 값 변환을 수정했습니다.

문제 설명

text-emphasis-position의 over, under 같은 키워드를 CSSKeywordValue로 전달하면 StylePropertyMap.set()이 잘못된 타입으로 판단해 거부했습니다. 속성의 Typed OM 메타데이터와 내부 리스트 표현을 처리하는 변환 경로가 연결되지 않은 상태였습니다.

또한 CSSKeywordValue 입력은 일반 CSS 파서를 거치지 않으므로, auto를 지원할 때 파서가 검사하던 TextEmphasisPositionAuto 기능 플래그도 별도로 확인해야 했습니다.

해결 내용

  • css_properties.json5에 속성의 키워드와 Typed OM 키워드 타입을 등록했습니다.
  • StylePropertyMap과 StyleValueFactory에서 기존 단일 값 리스트 변환 경로를 재사용해 키워드 객체와 내부 CSS 표현을 서로 변환하도록 했습니다.
  • 생성되는 키워드 검증 코드에서 auto의 기능 플래그를 확인하도록 했습니다. 플래그가 꺼져 있으면 CSSKeywordValue("auto") 입력을 거부합니다.

left, right 단독 키워드와 over left 같은 조합을 하나의 CSSKeywordValue로 전달하는 경우는 계속 거부합니다.

테스트 방법

기존 text-emphasis-position.html WPT에 잘못된 키워드 입력 검증을 추가했습니다. auto, over, under의 기존 설정 테스트가 통과하도록 구현하고, 기본 실행의 실패 baseline을 제거했습니다.

TextEmphasisPositionAuto를 끈 Linux 전용 가상 테스트도 추가했습니다. 이 구성에서는 auto 설정이 거부되어야 하므로 해당 하위 테스트의 실패만 예상 결과로 기록합니다.

Gerrit에는 PS7의 CQ Dry Run 통과 기록이 있습니다. 현재 PS9의 CQ 통과 결과는 아직 확인되지 않았으며, CL은 리뷰 중입니다.

관련 이슈와 외부 PR

Gerrit PS9의 WPT 변경은 WPT PR #63326으로 자동 export되었습니다. 원본 CL의 관련 PR로 연결하며 별도 기여로 집계하지 않습니다.

배운 점

  • Typed OM 지원에는 키워드 목록뿐 아니라 객체와 내부 CSS 값 사이의 변환도 필요합니다. 같은 표현을 사용하는 기존 속성의 변환 경로를 재사용할 수 있습니다.
  • 파서를 우회하는 입력 경로에서도 기능 플래그를 검사해야 합니다. 기본 실행과 플래그를 끈 구성을 함께 검증해야 허용 범위가 넓어지는 회귀를 발견할 수 있습니다.

참고 자료