← All reports

Frame geometry sync consolidated into a single IPC payload

Component: WebKit Site Isolation | 119fd82

Site Isolation이 적용된 환경에서는 cross-origin iframe이 별도의 WebContent process에서 렌더링됩니다. 그래서 부모 frame의 geometry를 rendering update마다 각 자식 RemoteFrame이 속한 process로 전달해야 합니다. 전달 대상에는 layout viewport와 contents size가 포함되고, clip rect나 transform, zoom 같은 자식별 layout 정보도 함께 들어갑니다. 자식 process가 자기 몫의 페이지 영역에 대해 layout과 hit-testing, 좌표 변환을 계산하는 데 필요한 값들입니다. 이 값들을 실어 나르는 통로가 FrameTreeSyncData IPC 구조체이며, 수신 측에서는 Frame::updateFrameTreeSyncData가 이를 적용합니다.

이번 commit은 rendering update마다 각각 따로 오가던 세 종류의 메시지를 하나로 합쳤습니다. layout viewport rect, contents size, 자식 frame layout 정보가 그 대상입니다. 세 값은 FrameGeometrySyncData라는 단일 struct로 묶여 기존 FrameTreeSyncData 채널을 그대로 타고 전달됩니다. 여기에 더해 dark-appearance invalidation 경로의 null 처리도 함께 보완되었습니다.

rendering update마다 frame당 세 번씩 오가던 IPC 메시지가 한 번으로 줄었고, 프로세스 간 frame geometry 갱신이 단일 dispatch 지점으로 모이게 되었습니다. Site Isolation을 점검하는 입장에서 보면, 이 통합 자체가 기록해 둘 만한 변화입니다. 다른 process에서 넘어온 신뢰할 수 없는 geometry를 적용하는 코드의 범위가 좁아졌고, 그만큼 열거하기도 쉬워졌기 때문입니다.