기여 목록 / 8453023
[webview] Remove the kWebviewScriptFileOriginCheck kill switch
ExtensionscleanupMerged
WebView 스크립트 주입에서 임베더와 origin이 다른 스크립트 파일을 건너뛰는 검사를 감싸고 있던 킬스위치 kWebviewScriptFileOriginCheck를 제거했습니다. «M151 이후 제거»라는 주석과 함께 들어온 보안 수정의 롤백용 플래그로, 트리가 M156이 된 지금까지 기본 켜짐이었으므로 동작은 바뀌지 않습니다(crbug.com/496016840). 1파일 +2/−9. 2026-09-25에 머지됐습니다(d22b445d714c3). mcnee@와 원 CL 리뷰어 creis@의 +1을 받았고, 제출 요청 뒤 mcnee@가 CQ를 돌려 한 번에 통과했습니다.
문제 설명
- issue url: https://crbug.com/496016840
- WebUI나 Controlled Frame이
<webview>에 스크립트 파일을 주입할 때, 임베더 origin 밖의 파일 URL을 불러올 수 있는 문제가 있었습니다. 2026-03 CL 7714099가 same-origin이 아닌 파일을 건너뛰도록 고치면서 두 곳의 검사를 킬스위치로 감쌌습니다. - 지금은 두 조건문의
FeatureList조회 항과 TODO만 남아 있었습니다.
해결 내용
web_view_internal_api.cc에서BASE_FEATURE정의와 주석을 지웠습니다.- 스크립트 파일 목록을 만들 때와 파일 URL을 가져올 때의 두 origin 검사를 무조건 실행하도록 플래그 항을 뺐습니다.
- 파일에서 유일한
FeatureList사용이 사라져base/feature_list.hinclude도 제거했습니다.
- if (!url::IsSameOriginWith(owner_base_url, file_url) &&
- base::FeatureList::IsEnabled(kWebviewScriptFileOriginCheck)) {
+ if (!url::IsSameOriginWith(owner_base_url, file_url)) {
return false;
}발굴 과정
«Remove … M» 만료 주석을 트리 전체에서 다시 훑은 스윕에서 나온 항목입니다. 플래그 이름이 든 열린 CL과 OSSCA 이슈가 없는지 확인하고 OSSCA #517로 등록한 뒤 착수했습니다. 첫 리뷰어는 원 CL 작성자이자 guest_view OWNER인 mcnee@, 두 번째는 원 CL 리뷰어 creis@입니다.
테스트 방법
- 같은 시기의 정리 CL과 통합 브랜치에서
browser_tests빌드: Mac M5, 4시간 31분 / 41,311 스텝 - 원 CL이 추가한
WebUIWebViewBrowserTest.ExecuteScriptBadUrlFromOtherWebUi는 테스트 파일 전체가#if !BUILDFLAG(IS_MAC)로 꺼져 있어 Mac에서 돌 수 없었습니다(필터가 0개를 실행하고 «성공»으로 끝나는 것을 보고 알아챔). - 대신 같은 코드 경로(Controlled Frame 임베더의 스크립트 주입)를 타는
ControlledFrameApiTest.ExecuteScript와ControlledFrameWptBrowserTest.Run/add_content_scripts로 검증했습니다. 2/2 통과. 원래 테스트는 리눅스·윈도우 CQ 봇에서 돕니다. - presubmit 0 경고
배운 점
- gtest 필터가 0개를 실행해도 «SUCCESS»로 끝납니다. 통과 개수를 꼭 확인하고, 0이면 테스트 파일의 플랫폼 가드(
#if)부터 봅니다. - 원 테스트를 못 돌리는 플랫폼에서는 같은 함수 경로를 타는 다른 테스트를 찾아 대신 검증하고, 그 사실을 기록에 남깁니다.