OSSCA Chromium

기여 목록 / 8523618

[net] Remove the expired Net.Reporting.*HeaderType histograms

NetworkcleanupIn Review

Reporting API 의 Net.Reporting.HeaderType(2025-06-22 만료)과 Net.Reporting.UploadHeaderType(2025-11-30 만료) 히스토그램을, 그것만을 위해 존재하던 enum 2개·기록 코드·테스트 단언과 함께 지웠습니다. 8파일 +1/−230, 동작은 바뀌지 않습니다.

문제 설명

  • 공식 정리 작업 메타 버그: https://crbug.com/499059525
  • 두 히스토그램은 어떤 Reporting API 헤더(Report-To / Reporting-Endpoints)가 엔드포인트를 만들었는지 세는 enum 지표였습니다. HeaderType 은 헤더를 파싱할 때마다, UploadHeaderType 은 업로드에 성공한 보고서마다 기록했습니다.
  • 만료된 지 각각 15개월·10개월이 지났는데 기록 코드가 그대로라, tools/metrics/histograms/README.md 기준으로 죽은 코드였습니다.

해결 내용

  • ReportingHeaderParser::ReportingHeaderType enum, RecordReportingHeaderType() 과 호출 6곳, ReportingDeliveryAgent::ReportingUploadHeaderType enum, 기록 헬퍼, Delivery::ProcessOutcome() 에서 header type 을 계산해 보고서 수만큼 기록하던 루프를 지웠습니다.
  • 파서 테스트의 히스토그램 단언 9곳과 HistogramTester 7개, 에이전트 테스트의 단언 4곳, 지표만 검사하던 에이전트 테스트 2개(ReportToHeaderCountedCorrectly·UploadHeaderTypeEnumCountPerReport)와 그 테스트만 쓰던 픽스처 헬퍼를 지웠습니다. 불필요해진 histogram_functions.h·histogram_tester.h include 도 정리했습니다.
  • metadata/net/histograms.xml 항목 2개와 metadata/net/enums.xml 의 NetReportingHeaderType·NetReportingUploadHeaderType 을 지웠습니다.
     if (success) {
-      ReportingUploadHeaderType upload_type =
-          target_.reporting_source.has_value()
-              ? ReportingUploadHeaderType::kReportingEndpoints
-              : ReportingUploadHeaderType::kReportTo;
-      for (size_t i = 0; i < reports_.size(); ++i) {
-        RecordReportingUploadHeaderType(upload_type);
-      }
       cache->RemoveReports(reports_, /* delivery_success */ true);

같은 파일의 Net.Reporting.Report* 4개는 2026-02-21 에 만료됐지만 올해 2월 kExcludeLargeBodyReports 롤아웃용으로 들어온 것이고 테스트가 관찰 수단으로도 쓰고 있어, 삭제할지 연장할지는 OWNER 결정으로 남기고 커밋 메시지에 적었습니다.

발굴 과정

커미터 추천을 받으려면 같은 리뷰어에게 여러 번 승인받는 것이 중요해서, 이미 승인을 여러 번 받은 영역(media·net·storage)으로 발굴을 좁혔습니다. metadata/net 의 만료 히스토그램 중 net 코드가 아직 기록하는 것을 파일별로 모았고, net/reporting 은 OWNER 가 ricea@ 한 명이라 승인 경로가 짧습니다. 가장 오래 만료된 enum 지표 2개를 한 CL 로 묶고, 최근 만료분은 범위에서 뺐습니다.

테스트 방법

동작 불변 정리라 새 테스트는 없고 기존 테스트 통과가 검증입니다.

  • net_unittests 증분 빌드 67스텝 3분 21초
  • net_unittests --gtest_filter='*ReportingHeaderParser*:*ReportingDeliveryAgent*' 87/87 (지운 테스트 2개는 더 이상 없음)
  • validate_format.py·pretty_print.py --presubmit 통과, presubmit 0 경고

배운 점

  • 지표 전용 enum 은 지표를 지울 때 함께 지워야 합니다. 헤더 주석이 «enums.xml 과 맞춰라»고 적혀 있으면 그 enum 은 지표 말고는 쓰임이 없다는 신호입니다.
  • 여러 줄을 한 덩어리로 지우는 편집에서 조건문 줄이 같이 딸려 가면 조기 반환이 무조건 반환으로 바뀝니다. 지운 뒤 diff 를 헝크 단위로 다시 읽어야 합니다. 이번에도 그렇게 잡았습니다.
  • 같은 파일에 더 최근에 만료된 지표가 있을 때는 한 CL 에 다 넣기보다 OWNER 에게 결정을 넘기는 편이 리뷰가 빠릅니다.

참고 자료