Remove non-standard RTCConfiguration.iceTransports alias

MERGED2026blinkwebrtcinterop-2026
2026. 8. 21.Yelihi 프로필 이미지Yelihi

Blink의 RTCConfiguration.iceTransports 비표준 alias를 기본 동작에서 제거하고, Interop 2026 WPT가 기대하는 표준 동작에 맞춘 변경입니다.

문제 설명

WebRTC 표준은 RTCConfigurationiceTransportPolicy만 정의하지만, Chromium Blink는 M56부터 iceTransports를 alias로 받아주고 있었습니다.

이 때문에 { iceTransports: ... }가 알 수 없는 dictionary member로 무시되지 않고 실제 ICE policy에 반영되거나, 잘못된 enum 값에서 TypeError를 던졌습니다. 그 결과 Interop 2026의 RTCConfiguration-iceTransportPolicy WPT 기대값과 맞지 않았습니다.

해결 내용

  1. rtc_configuration.idl에서 비표준 iceTransports 멤버를 기본 노출 대상에서 제거했습니다.
  2. 리뷰 의견에 따라 alias를 완전히 삭제하지 않고 RTCConfigurationIceTransports runtime flag 뒤로 옮겼습니다.
  3. 해당 flag는 기본 off 상태라 iceTransports가 무시되고, 사이트 호환성 문제가 생기면 Finch 또는 --enable-features=RTCConfigurationIceTransports로 기존 동작을 복구할 수 있게 했습니다.
  4. 더 이상 실패 expectation이 필요 없어진 WPT expectation 파일을 삭제하고, Blink fast peerconnection 테스트 기대값에서 iceTransports 관련 출력을 제거했습니다.
-    // TODO(foolip): |iceTransports| is not in the spec.
-    // https://crbug.com/659131
-    RTCIceTransportPolicy iceTransports;
+    [RuntimeEnabled=RTCConfigurationIceTransports] RTCIceTransportPolicy iceTransports;
+      // Non-standard RTCConfiguration.iceTransports alias. Off by default
+      // (alias removed). Enable via Finch to restore if sites break.
+      // https://crbug.com/488071544
+      name: "RTCConfigurationIceTransports",

테스트 방법

Gerrit의 CQ를 통해 변경이 검증된 뒤 머지되었습니다.

  • third_party/blink/web_tests/external/wpt/webrtc/RTCConfiguration-iceTransportPolicy_interop-2026-expected.txt 삭제
  • third_party/blink/web_tests/fast/peerconnection/RTCPeerConnection.html 및 expected output 갱신
  • CQ full run 통과 후 refs/heads/main@{#1683862}로 submit

배운 점

  • WebIDL dictionary에서 비표준 멤버를 제거하면, 표준 동작상 알 수 없는 멤버는 무시되어야 합니다.
  • 사용률이 약 0.00002%처럼 매우 낮아도 웹 호환성 위험은 남을 수 있으므로, 리뷰에서는 Finch로 되돌릴 수 있는 runtime flag를 요구했습니다.
  • 첫 패치셋에서는 단순 제거였지만, 리뷰 코멘트를 반영해 RTCConfigurationIceTransports flag를 추가한 패치셋 2가 LGTM을 받았습니다.

참고 자료