OSSCA Chromium

기여 목록 / 8505716

[arc] Remove the expired Arc.NearbyShare histograms

PlatformcleanupMerged

ChromeOS에서 Android 앱의 공유를 Nearby Share로 넘기는 코드(chrome/browser/ash/arc/nearby_share)가 기록하던 Arc.NearbyShare.* 히스토그램 6개를 기록 코드째 지웠습니다. 6개 모두 2025-03-28에 만료돼 더는 수집되지 않는 죽은 코드였습니다. 10파일 −253. 첫 리뷰어 hidehiko@가 기능 맥락을 아는 jhorwich@를 더했고, jhorwich@와 phshah@가 승인했습니다. jhorwich@가 histograms.xml OWNER로 넣은 batoon@은 7주 동안 활동이 없어 같은 metadata/arc OWNER인 youkichihosoi@를 더했고, 10분 만에 승인을 받았습니다. 제출을 부탁한 뒤 youkichihosoi@의 CQ로 2026-10-07(UTC)에 머지됐습니다(b78ada35f72c1).

문제 설명

  • issue url: 버그 번호 없음 (OSSCA #648)
  • arc_nearby_share_uma.{h,cc}의 기록 함수 6개가 브리지·세션·파일 핸들러·스트림 어댑터 곳곳에서 20번 호출되고 있었습니다.
  • 기록하는 히스토그램 6개(ArcBridgeFailure, DataHandlingFailure, IOFailure, WindowFound, FileStreamFailure, FileStreamComplete.TimeDelta)는 모두 expires_after="2025-03-28"이고 expired_intentionally가 아니었습니다.
  • tools/metrics/histograms/README.md는 만료된 히스토그램의 기록 코드를 죽은 코드로 보고 지우라고 안내합니다.

해결 내용

  • 기록 helper 파일 두 개를 지우고 BUILD.gn에서 뺐습니다.
  • 호출 20곳과 include 네 개를 지웠습니다. 호출이 빠진 자리는 모두 LOG(ERROR) 뒤 기존 에러 처리로 바로 이어집니다.
  • 전송 시간 히스토그램만을 위해 있던 file_streaming_started_ 멤버와 그 기록, 설명 주석을 지웠습니다.
  • histograms.xml의 6항목과, 이 히스토그램들만 쓰던 enum 3개를 enums.xml에서 지웠습니다.
     LOG(ERROR) << "Base directory is empty.";
-    UpdateNearbyShareDataHandlingFail(DataHandlingResult::kEmptyDirectory);
     NotifyFileSharingCompleted(base::File::FILE_ERROR_NOT_A_DIRECTORY);

발굴 과정

Mac에서 만료 히스토그램 1,531개를 코드와 대조해, 파일 안 히스토그램이 전부 만료된 파일을 ChromeOS 경로에서만 추렸습니다(리눅스 몫 후보 LA). 문자열을 이어 붙여 이름을 만드는 히스토그램은 스캔이 놓칠 수 있어서, 리눅스에서 파일을 직접 읽어 6개가 모두 이름을 그대로 쓰는 것과 XML의 Arc.NearbyShare.* 항목이 이 6개뿐인 것을 확인했습니다. 같은 디렉터리에 열린 CL 8302314가 있어 그 패치를 받아 병합 충돌이 없는 것도 확인했습니다.

테스트 방법

  • 리눅스 박스의 target_os="chromeos" 빌드(out/cros)에서 증분 빌드: 29 스텝 4분.
  • gn check '//chrome/browser/ash/arc/nearby_share/*', tools/metrics/histograms/validate_format.py, pretty_print.py --presubmit 통과.
  • unit_tests --gtest_filter='*NearbyShare*:ShareInfoFileStreamAdapterTest.*' 149/149 통과 (ARC nearby_share 테스트 7개 포함).
  • presubmit 0 경고

배운 점

  • OWNERS 파일이 이미 없어진 파일을 file://로 가리키고 있어도(이번엔 chrome/browser/sharesheet/OWNERS) 상위 OWNERS로 승인 경로가 이어집니다. 리뷰어를 고를 때 코드와 histograms.xml의 code-owner 구성을 각각 확인합니다.
  • 지표만을 위한 상태(시작 시각 멤버 등)는 기록 호출을 지운 뒤 남지 않도록 같이 찾아 지웁니다.
  • 리뷰어가 넣어 준 OWNER가 오래 활동이 없으면, 같은 OWNERS 파일에서 최근 활동한 사람을 찾아 이유를 한 줄 적고 더합니다. 원래 OWNER는 빼지 않고 둡니다.

참고 자료