[extensions] Remove the expired install_time pref migration

IN REVIEW2026extensions/browserexpired-migration
2026. 9. 14.jmsmg 프로필 이미지jmsmg

ExtensionPrefs가 프로필을 열 때마다 돌리던 일회성 pref 이행 루틴 BackfillAndMigrateInstallTimePrefs()를 제거했습니다. 옛 install_time 키를 last_update_time·first_install_time으로 옮기는 코드인데, "M113에서 제거" TODO가 붙은 채 42개 마일스톤을 더 살아 있었습니다. 3파일 −82줄, 추가 0줄의 순수 삭제입니다. crbug 없이 코드에서 직접 찾은 정리 작업입니다.

문제 설명

  • issue url: 없음 (코드의 TODO에도 버그 번호가 없음, Bug: none)
  • extensions/browser/extension_prefs.hBackfillAndMigrateInstallTimePrefs() 선언에 // TODO(anunoy): Remove this in M113.이 붙어 있습니다. 본문(extension_prefs.cc)은 설치된 확장 목록을 전부 훑어 옛 install_time 키가 있으면 두 개의 새 키로 옮기고 옛 키를 지우는 한 번 돌면 끝나는 이행이며, ExtensionPrefs 생성자에서 프로필을 열 때마다 호출됩니다.
  • M113은 2023년 4월 브랜치이고 트리는 M155입니다. 그 사이 열린 프로필은 전부 이행을 마쳤으므로 이 함수는 매 시작마다 확장 목록을 순회하고 아무것도 하지 않습니다.
  • 옛 키 이름 상수 kPrefDeprecatedInstallTime의 유일한 사용처가 이 함수라 상수도 함께 죽은 코드가 됐습니다.

해결 내용

선언·주석·friend class ExtensionPrefsMigratesToLastUpdateTime;(헤더), 상수·생성자 호출·함수 정의(구현), 그리고 그 이행만 검사하던 픽스처와 TEST_F(chrome/browser/extensions/extension_prefs_unittest.cc)를 삭제했습니다. git grep으로 잔여 참조가 0임을 확인했습니다.

-  // Backfills the first_install_time pref for currently installed extensions
-  // that did not have the pref recorded when they were installed.
-  // TODO(anunoy): Remove this in M113.
-  void BackfillAndMigrateInstallTimePrefs();

범위를 줄인 판단. 착수 전 큐에는 같은 파일의 MigrateDeprecatedDisableReasons()(선언부 TODO "Remove this around M89")도 올라 있었지만, 본문을 처음부터 끝까지 읽으니 그 뒤에 만료되지 않은 ChromeOS 정리 코드(crbug.com/380780352)가 붙어 있었습니다. 선언부 TODO만 보고 지웠으면 살아 있는 코드를 날릴 뻔했고, 이 함수는 제외했습니다.

발굴 과정

«Remove in M<n>» 형태의 만료 주석을 트리 전체에서 스윕해 후보 큐를 만들었고, 그중 프로덕션 호출처가 생성자 한 곳뿐이고 테스트 호출처가 제거 대상 테스트 하나뿐인 이 항목을 1순위로 골랐습니다.

테스트 방법

이행할 데이터가 남아 있지 않아 동작이 바뀌지 않는 삭제이므로 새 테스트는 없고, 기존 테스트 통과가 검증입니다.

  • 수정한 두 파일의 오브젝트 컴파일 → unit_tests 빌드(Mac M5, -j 6, 3시간 23분 / 36,619스텝) → unit_tests --gtest_filter='ExtensionPrefs*' 28/28 통과.
  • try-job 권한이 없어 로컬 실행이 유일한 검증이라, 업로드 전에 반드시 끝냈습니다.

배운 점

  • 만료 주석 스윕에서 선언부의 TODO 마일스톤은 후보를 찾는 근거일 뿐이고, 지워도 되는지는 본문을 끝까지 읽고 판단해야 합니다. 같은 파일의 이웃 함수가 정확히 그 함정이었습니다.
  • 삭제 CL이라도 unit_tests처럼 큰 타깃은 노트북에서 반나절입니다. 병렬도를 낮춰(-j 6) 다른 작업과 병행하는 편이 전체적으로 빠릅니다.
  • 리뷰어는 TODO 작성자보다 OWNERS이면서 최근에 그 파일을 만진 사람을 고르고, TODO 작성자는 CC로 두면 승인 라운드가 하나 줄어듭니다.

참고 자료