OSSCA Chromium

기여 목록 / 8449710

[viz] Remove the kRejectInvalidChildRegions kill switch

GraphicscleanupMerged

viz HitTestAggregator가 부모-자식 관계가 아닌 frame sink의 hit-test region을 걸러내는 검증을 감싸고 있던 킬스위치 kRejectInvalidChildRegions를 제거했습니다. «M150이 Stable이 되면 제거»라는 주석과 함께 들어온 플래그로, 트리가 M156이 된 지금까지 기본 켜짐이었으므로 동작은 바뀌지 않습니다(crbug.com/495852034). 1파일 +1/−7. 2026-09-24에 머지됐습니다(425de4fbabe45). jonross@의 +1 뒤 두 번째 리뷰어로 원 CL 리뷰어 kylechar@를 추가하자 바로 +1과 CQ를 눌러 줬습니다.

문제 설명

  • issue url: https://crbug.com/495852034
  • 2026-04 CL 7748974가 hit-test 집계 때 «제출한 frame sink의 자식인지»를 확인해, 자식이 아닌 region을 집계 결과에서 빼도록 했습니다. 이 검증을 롤백용 킬스위치로 감싸 두었습니다.
  • 지금은 AppendRegion() 조건문에 FeatureList 조회 한 항과 TODO만 남아 있었습니다.

해결 내용

  • components/viz/service/hit_test/hit_test_aggregator.cc에서 BASE_FEATURE 정의와 TODO, 그것만 담고 있던 익명 namespace를 지웠습니다.
  • 자식 관계 검증을 무조건 실행하도록 조건에서 플래그 항을 뺐습니다.
  • 파일에서 유일한 FeatureList 사용이 사라져 base/feature_list.h include도 제거했습니다.
-    if (base::FeatureList::IsEnabled(kRejectInvalidChildRegions) &&
-        !delegate_->IsChildOf(submitting_frame_sink_id, region.frame_sink_id)) {
+    if (!delegate_->IsChildOf(submitting_frame_sink_id, region.frame_sink_id)) {
       return base::unexpected(AggregationError::INVALID_CHILD_REGION);
     }

발굴 과정

«Remove … after M» 만료 주석을 트리 전체에서 다시 훑은 스윕(148건)에서 나온 항목입니다. 플래그 이름이 든 열린 CL과 OSSCA 이슈가 없는지 확인하고 OSSCA #495로 등록한 뒤 착수했습니다.

테스트 방법

동작 불변 정리라 새 테스트는 없고 기존 테스트 통과가 검증입니다. 원 CL이 추가한 HitTestAggregatorTest의 자식 검증 테스트가 플래그 없이도 그대로 통과하는지가 핵심입니다.

  • 같은 시기에 준비한 킬스위치 정리 네 건을 통합 브랜치에 모아 media_unittests·viz_unittests·google_apis_unittests를 한 번에 빌드: Mac M5, 12분 29초 / 623 스텝
  • viz_unittests의 HitTestAggregatorTest.*·SkiaOutputSurfaceImplTest.* 필터 19/19 통과 (1개는 플랫폼 조건으로 SKIPPED)
  • presubmit 0 경고

배운 점

  • 킬스위치가 파일의 유일한 익명 namespace 내용이면 namespace 블록째 지워야 빈 블록이 남지 않습니다.
  • 원 CL 작성자가 해당 디렉터리 OWNER라면 첫 리뷰어로 가장 빠릅니다(jonross@).

참고 자료