OSSCA Chromium

기여 목록 / 8453762

[actor] Remove the kBackgroundActorTaskPopupsOpenInBackground kill switch

BrowsercleanupMerged

백그라운드에서 도는 actor(에이전트) 작업이 새 탭이나 팝업을 열 때 사용자를 방해하지 않도록 백그라운드로 여는 동작을 감싸고 있던 킬스위치 kBackgroundActorTaskPopupsOpenInBackground를 제거했습니다. «M150 이후 제거»라는 주석과 함께 들어온 merge-safety 플래그로, 트리가 M156이 된 지금까지 기본 켜짐이었으므로 동작은 바뀌지 않습니다(crbug.com/489205993). 1파일 +1/−8. 2026-09-25에 머지됐습니다(f1f0f7f2dd97d). tluk@와 mcnee@의 +1을 받았고, 첫 CQ가 윈도우 컴파일 봇의 인프라 오류(bot_update)로 떨어져 재요청 뒤 통과했습니다.

문제 설명

  • issue url: https://crbug.com/489205993
  • 사용자가 다른 탭을 보고 있는 동안 백그라운드 actor 작업이 로그인 팝업 등을 열면 그 창이 앞으로 튀어나와 사용자를 방해했습니다. 2026-04 CL 7758931(한 번 revert 뒤 reland)이 이런 팝업은 비활성 창으로, 새 전경 탭은 백그라운드 탭으로 열도록 고치면서 킬스위치로 감쌌습니다.
  • 07월 리팩터링으로 코드가 browser.cc에서 BrowserWebContentsDelegate로 옮겨졌고, AddNewContents() 조건문에 FeatureList 조회 한 항이 남아 있었습니다.

해결 내용

  • browser_web_contents_delegate.cc에서 BASE_FEATURE 정의와 주석을 지웠습니다.
  • AddNewContents()의 조건에서 플래그 항을 빼 백그라운드 actor 작업이면 항상 방해하지 않게 열도록 했습니다.
  • 같은 파일에 다른 FeatureList 사용이 남아 include는 그대로 두었습니다.
-  if (base::FeatureList::IsEnabled(
-          kBackgroundActorTaskPopupsOpenInBackground) &&
-      source && actor::IsRunningBackgroundActorTask(*source)) {
+  if (source && actor::IsRunningBackgroundActorTask(*source)) {

발굴 과정

«Remove … M» 만료 주석 스윕에서 나온 항목입니다. 플래그 이름이 든 열린 CL과 OSSCA 이슈가 없는지 확인하고 OSSCA #518로 등록했습니다. 파일이 07월에 옮겨졌기 때문에 git log --grep으로 원 CL을 따로 찾았고, 첫 리뷰어는 코드를 옮긴 chrome/browser/ui OWNER tluk@, 두 번째는 원 CL 작성자 mcnee@입니다.

테스트 방법

  • 같은 시기의 정리 CL과 통합 브랜치에서 browser_tests 빌드: Mac M5, 4시간 31분 / 41,311 스텝
  • 원 CL이 팝업 비포커스 검사를 추가한 ActorAttemptLoginToolFederatedTest.*를 돌렸습니다. 첫 배치에서 «새 팝업이 포커스를 가지면 안 된다» 검사 1개가 실패했지만, 그 테스트 단독 3/3, 배치 재실행 6/6 두 번이 통과해 창 포커스 플레이크로 판단했습니다. 플래그가 원래 기본 켜짐이라 실행 코드도 같습니다.
  • presubmit 0 경고

배운 점

  • 창 포커스를 검사하는 브라우저 테스트는 실행 중 사용자가 Mac을 쓰면 흔들립니다. 실패하면 단독 재실행과 배치 재실행으로 플레이크 여부부터 가립니다.
  • 리팩터링으로 파일이 옮겨지면 git log -S가 이동 커밋을 가리키므로, 버그 번호로 git log --grep해서 원 CL을 찾습니다.

참고 자료