Add default UA positioning for ::backdrop
모든 top-layer 요소의 ::backdrop에 CSS Positioned Layout이 정의한 기본 위치
스타일을 적용하도록 Blink의 공통 UA 스타일 경로를 추가했습니다.
문제 설명
CSS Positioned Layout은 ::backdrop의 UA 기본값으로 position: fixed와inset: 0을 정의합니다. Blink에서는 dialog, popover, fullscreen이 각각 일부
스타일을 제공했지만 모든 top-layer 요소에 적용되는 공통 규칙이 없었습니다.
이 때문에 일반 top-layer 요소의 backdrop은 position: absolute로 계산됐고
관련 WPT가 실패했습니다.
해결 내용
공통 backdrop.css에 다음 UA 규칙을 추가했습니다.
::backdrop {
position: fixed;
inset: 0;
}이 스타일시트를 Blink 리소스로 등록하고 kPseudoIdBackdrop의 스타일을 해석할
때 지연 로드하도록 연결했습니다. 기존 dialog, popover, fullscreen의 배경색과
pointer 동작은 유지하며 작성자 스타일이 UA 기본값을 덮어쓸 수 있습니다.
테스트 방법
WPT에서 HTML, SVG, MathML top-layer 요소의 ::backdrop이 position: fixed와
0px inset을 갖는지 확인하고, 작성자 스타일의 position: absolute와 10px inset이
우선하는지도 검사했습니다.
관련 단위 테스트 138개와 선택한 웹 테스트 67개를 실행해 회귀가 없음을
확인했습니다. 이 결과는 해당 범위의 검증이며 전체 Chromium 테스트 결과는
아닙니다. CL은 현재 리뷰 중입니다.
배운 점
- 공통 pseudo-element 기본값은 HTML 기본 스타일 전체에 넣기보다 해당 pseudo의
UA 스타일 경로에서 로드해야 적용 범위와 비용을 제어할 수 있습니다. - computed style 확인만으로 실제 backdrop 생성과 수명 주기를 모두 검증할 수
없습니다. top-layer 상태, 작성자 재정의, 제거 과정도 함께 확인해야 합니다.