Commit 7d952183 authored by Eldar Rello's avatar Eldar Rello Committed by Commit Bot

Implement RTCPeerConnection.onicecandidateerror and add web-platform-test

Spec:
https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-onicecandidateerror

Intent:
https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/fs-Y4awdYj0

Bug: webrtc:3098
Change-Id: I9c4a3ec75050e85f2a13b896f580bc16206ca2c6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1607800
Commit-Queue: Eldar Rello <elrello@microsoft.com>
Reviewed-by: default avatarQingsi Wang <qingsi@chromium.org>
Reviewed-by: default avatarPhilip Jägenstedt <foolip@chromium.org>
Reviewed-by: default avatarHenrik Boström <hbos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#676359}
parent cb31dab8
...@@ -30,6 +30,11 @@ class MockWebRTCPeerConnectionHandlerClient ...@@ -30,6 +30,11 @@ class MockWebRTCPeerConnectionHandlerClient
MOCK_METHOD0(NegotiationNeeded, void()); MOCK_METHOD0(NegotiationNeeded, void());
MOCK_METHOD1(DidGenerateICECandidate, MOCK_METHOD1(DidGenerateICECandidate,
void(scoped_refptr<blink::WebRTCICECandidate> candidate)); void(scoped_refptr<blink::WebRTCICECandidate> candidate));
MOCK_METHOD4(DidFailICECandidate,
void(const blink::WebString& host_candidate,
const blink::WebString& url,
int error_code,
const blink::WebString& error_text));
MOCK_METHOD1(DidChangeSignalingState, MOCK_METHOD1(DidChangeSignalingState,
void(webrtc::PeerConnectionInterface::SignalingState state)); void(webrtc::PeerConnectionInterface::SignalingState state));
MOCK_METHOD1(DidChangeIceGatheringState, MOCK_METHOD1(DidChangeIceGatheringState,
......
...@@ -53,6 +53,7 @@ ...@@ -53,6 +53,7 @@
#include "third_party/blink/public/platform/web_rtc_session_description_request.h" #include "third_party/blink/public/platform/web_rtc_session_description_request.h"
#include "third_party/blink/public/platform/web_rtc_stats.h" #include "third_party/blink/public/platform/web_rtc_stats.h"
#include "third_party/blink/public/platform/web_rtc_void_request.h" #include "third_party/blink/public/platform/web_rtc_void_request.h"
#include "third_party/blink/public/platform/web_string.h"
#include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/public/platform/web_url.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util.h" #include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util.h"
#include "third_party/webrtc/api/rtc_event_log_output.h" #include "third_party/webrtc/api/rtc_event_log_output.h"
...@@ -915,6 +916,17 @@ class RTCPeerConnectionHandler::Observer ...@@ -915,6 +916,17 @@ class RTCPeerConnectionHandler::Observer
candidate->candidate().address().family())); candidate->candidate().address().family()));
} }
void OnIceCandidateError(const std::string& host_candidate,
const std::string& url,
int error_code,
const std::string& error_text) override {
main_thread_->PostTask(
FROM_HERE,
base::BindOnce(
&RTCPeerConnectionHandler::Observer::OnIceCandidateErrorImpl, this,
host_candidate, url, error_code, error_text));
}
void OnDataChannelImpl(scoped_refptr<DataChannelInterface> channel) { void OnDataChannelImpl(scoped_refptr<DataChannelInterface> channel) {
DCHECK(main_thread_->BelongsToCurrentThread()); DCHECK(main_thread_->BelongsToCurrentThread());
if (handler_) if (handler_)
...@@ -930,6 +942,17 @@ class RTCPeerConnectionHandler::Observer ...@@ -930,6 +942,17 @@ class RTCPeerConnectionHandler::Observer
} }
} }
void OnIceCandidateErrorImpl(const std::string& host_candidate,
const std::string& url,
int error_code,
const std::string& error_text) {
DCHECK(main_thread_->BelongsToCurrentThread());
if (handler_) {
handler_->OnIceCandidateError(host_candidate, url, error_code,
error_text);
}
}
void OnInterestingUsage(int usage_pattern) override { void OnInterestingUsage(int usage_pattern) override {
main_thread_->PostTask( main_thread_->PostTask(
FROM_HERE, FROM_HERE,
...@@ -2297,6 +2320,21 @@ void RTCPeerConnectionHandler::OnIceCandidate( ...@@ -2297,6 +2320,21 @@ void RTCPeerConnectionHandler::OnIceCandidate(
client_->DidGenerateICECandidate(std::move(web_candidate)); client_->DidGenerateICECandidate(std::move(web_candidate));
} }
void RTCPeerConnectionHandler::OnIceCandidateError(
const std::string& host_candidate,
const std::string& url,
int error_code,
const std::string& error_text) {
DCHECK(task_runner_->RunsTasksInCurrentSequence());
TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::OnIceCandidateError");
if (!is_closed_) {
client_->DidFailICECandidate(blink::WebString::FromUTF8(host_candidate),
blink::WebString::FromUTF8(url), error_code,
blink::WebString::FromUTF8(error_text));
}
}
void RTCPeerConnectionHandler::OnInterestingUsage(int usage_pattern) { void RTCPeerConnectionHandler::OnInterestingUsage(int usage_pattern) {
client_->DidNoteInterestingUsage(usage_pattern); client_->DidNoteInterestingUsage(usage_pattern);
} }
......
...@@ -242,6 +242,10 @@ class CONTENT_EXPORT RTCPeerConnectionHandler ...@@ -242,6 +242,10 @@ class CONTENT_EXPORT RTCPeerConnectionHandler
int sdp_mline_index, int sdp_mline_index,
int component, int component,
int address_family); int address_family);
void OnIceCandidateError(const std::string& host_candidate,
const std::string& url,
int error_code,
const std::string& error_text);
void OnInterestingUsage(int usage_pattern); void OnInterestingUsage(int usage_pattern);
private: private:
......
...@@ -44,6 +44,7 @@ namespace blink { ...@@ -44,6 +44,7 @@ namespace blink {
class WebRTCICECandidate; class WebRTCICECandidate;
class WebRTCRtpReceiver; class WebRTCRtpReceiver;
class WebRTCRtpTransceiver; class WebRTCRtpTransceiver;
class WebString;
struct BLINK_PLATFORM_EXPORT WebRTCSctpTransportSnapshot { struct BLINK_PLATFORM_EXPORT WebRTCSctpTransportSnapshot {
rtc::scoped_refptr<webrtc::SctpTransportInterface> transport; rtc::scoped_refptr<webrtc::SctpTransportInterface> transport;
...@@ -59,6 +60,10 @@ class BLINK_PLATFORM_EXPORT WebRTCPeerConnectionHandlerClient { ...@@ -59,6 +60,10 @@ class BLINK_PLATFORM_EXPORT WebRTCPeerConnectionHandlerClient {
virtual void NegotiationNeeded() = 0; virtual void NegotiationNeeded() = 0;
virtual void DidGenerateICECandidate(scoped_refptr<WebRTCICECandidate>) = 0; virtual void DidGenerateICECandidate(scoped_refptr<WebRTCICECandidate>) = 0;
virtual void DidFailICECandidate(const WebString& host_candidate,
const WebString& url,
int error_code,
const WebString& error_text) = 0;
virtual void DidChangeSignalingState( virtual void DidChangeSignalingState(
webrtc::PeerConnectionInterface::SignalingState) = 0; webrtc::PeerConnectionInterface::SignalingState) = 0;
virtual void DidChangeIceGatheringState( virtual void DidChangeIceGatheringState(
......
...@@ -47,6 +47,7 @@ generate_event_interfaces("modules_bindings_generated_event_interfaces") { ...@@ -47,6 +47,7 @@ generate_event_interfaces("modules_bindings_generated_event_interfaces") {
"//third_party/blink/renderer/modules/payments/payment_request_update_event.idl", "//third_party/blink/renderer/modules/payments/payment_request_update_event.idl",
"//third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.idl", "//third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.idl",
"//third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.idl", "//third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.idl",
"//third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_error_event.idl",
"//third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.idl", "//third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.idl",
"//third_party/blink/renderer/modules/peerconnection/rtc_quic_stream_event.idl", "//third_party/blink/renderer/modules/peerconnection/rtc_quic_stream_event.idl",
"//third_party/blink/renderer/modules/picture_in_picture/enter_picture_in_picture_event.idl", "//third_party/blink/renderer/modules/picture_in_picture/enter_picture_in_picture_event.idl",
......
...@@ -145,6 +145,7 @@ ...@@ -145,6 +145,7 @@
"gotpointercapture", "gotpointercapture",
"hashchange", "hashchange",
"icecandidate", "icecandidate",
"icecandidateerror",
"iceconnectionstatechange", "iceconnectionstatechange",
"icegatheringstatechange", "icegatheringstatechange",
"inactive", "inactive",
......
...@@ -253,6 +253,7 @@ modules_idl_files = ...@@ -253,6 +253,7 @@ modules_idl_files =
"peerconnection/rtc_ice_transport.idl", "peerconnection/rtc_ice_transport.idl",
"peerconnection/rtc_legacy_stats_report.idl", "peerconnection/rtc_legacy_stats_report.idl",
"peerconnection/rtc_peer_connection.idl", "peerconnection/rtc_peer_connection.idl",
"peerconnection/rtc_peer_connection_ice_error_event.idl",
"peerconnection/rtc_peer_connection_ice_event.idl", "peerconnection/rtc_peer_connection_ice_event.idl",
"peerconnection/rtc_quic_stream.idl", "peerconnection/rtc_quic_stream.idl",
"peerconnection/rtc_quic_stream_event.idl", "peerconnection/rtc_quic_stream_event.idl",
...@@ -715,6 +716,7 @@ modules_dictionary_idl_files = ...@@ -715,6 +716,7 @@ modules_dictionary_idl_files =
"peerconnection/rtc_ice_server.idl", "peerconnection/rtc_ice_server.idl",
"peerconnection/rtc_offer_answer_options.idl", "peerconnection/rtc_offer_answer_options.idl",
"peerconnection/rtc_offer_options.idl", "peerconnection/rtc_offer_options.idl",
"peerconnection/rtc_peer_connection_ice_error_event_init.idl",
"peerconnection/rtc_peer_connection_ice_event_init.idl", "peerconnection/rtc_peer_connection_ice_event_init.idl",
"peerconnection/rtc_quic_parameters.idl", "peerconnection/rtc_quic_parameters.idl",
"peerconnection/rtc_quic_stream_event_init.idl", "peerconnection/rtc_quic_stream_event_init.idl",
......
...@@ -81,6 +81,8 @@ blink_modules_sources("peerconnection") { ...@@ -81,6 +81,8 @@ blink_modules_sources("peerconnection") {
"rtc_peer_connection.h", "rtc_peer_connection.h",
"rtc_peer_connection_controller.cc", "rtc_peer_connection_controller.cc",
"rtc_peer_connection_controller.h", "rtc_peer_connection_controller.h",
"rtc_peer_connection_ice_error_event.cc",
"rtc_peer_connection_ice_error_event.h",
"rtc_peer_connection_ice_event.cc", "rtc_peer_connection_ice_event.cc",
"rtc_peer_connection_ice_event.h", "rtc_peer_connection_ice_event.h",
"rtc_quic_stream.cc", "rtc_quic_stream.cc",
......
...@@ -89,6 +89,7 @@ ...@@ -89,6 +89,7 @@
#include "third_party/blink/renderer/modules/peerconnection/rtc_ice_server.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_ice_server.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_offer_options.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_offer_options.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_error_event.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.h"
...@@ -2668,6 +2669,15 @@ void RTCPeerConnection::DidGenerateICECandidate( ...@@ -2668,6 +2669,15 @@ void RTCPeerConnection::DidGenerateICECandidate(
RTCIceCandidate::Create(std::move(web_candidate)); RTCIceCandidate::Create(std::move(web_candidate));
ScheduleDispatchEvent(RTCPeerConnectionIceEvent::Create(ice_candidate)); ScheduleDispatchEvent(RTCPeerConnectionIceEvent::Create(ice_candidate));
} }
void RTCPeerConnection::DidFailICECandidate(const WebString& host_candidate,
const WebString& url,
int error_code,
const WebString& error_text) {
DCHECK(!closed_);
DCHECK(GetExecutionContext()->IsContextThread());
ScheduleDispatchEvent(RTCPeerConnectionIceErrorEvent::Create(
host_candidate, url, error_code, error_text));
}
void RTCPeerConnection::DidChangeSignalingState( void RTCPeerConnection::DidChangeSignalingState(
webrtc::PeerConnectionInterface::SignalingState new_state) { webrtc::PeerConnectionInterface::SignalingState new_state) {
......
...@@ -264,6 +264,7 @@ class MODULES_EXPORT RTCPeerConnection final ...@@ -264,6 +264,7 @@ class MODULES_EXPORT RTCPeerConnection final
DEFINE_ATTRIBUTE_EVENT_LISTENER(icegatheringstatechange, DEFINE_ATTRIBUTE_EVENT_LISTENER(icegatheringstatechange,
kIcegatheringstatechange) kIcegatheringstatechange)
DEFINE_ATTRIBUTE_EVENT_LISTENER(datachannel, kDatachannel) DEFINE_ATTRIBUTE_EVENT_LISTENER(datachannel, kDatachannel)
DEFINE_ATTRIBUTE_EVENT_LISTENER(icecandidateerror, kIcecandidateerror)
// Utility to note result of CreateOffer / CreateAnswer // Utility to note result of CreateOffer / CreateAnswer
void NoteSdpCreated(const RTCSessionDescription&); void NoteSdpCreated(const RTCSessionDescription&);
...@@ -283,6 +284,10 @@ class MODULES_EXPORT RTCPeerConnection final ...@@ -283,6 +284,10 @@ class MODULES_EXPORT RTCPeerConnection final
// WebRTCPeerConnectionHandlerClient // WebRTCPeerConnectionHandlerClient
void NegotiationNeeded() override; void NegotiationNeeded() override;
void DidGenerateICECandidate(scoped_refptr<WebRTCICECandidate>) override; void DidGenerateICECandidate(scoped_refptr<WebRTCICECandidate>) override;
void DidFailICECandidate(const WebString& host_candidate,
const WebString& url,
int error_code,
const WebString& error_text) override;
void DidChangeSignalingState( void DidChangeSignalingState(
webrtc::PeerConnectionInterface::SignalingState) override; webrtc::PeerConnectionInterface::SignalingState) override;
void DidChangeIceGatheringState( void DidChangeIceGatheringState(
......
...@@ -95,6 +95,7 @@ enum RTCPeerConnectionState { ...@@ -95,6 +95,7 @@ enum RTCPeerConnectionState {
attribute EventHandler oniceconnectionstatechange; attribute EventHandler oniceconnectionstatechange;
attribute EventHandler onconnectionstatechange; attribute EventHandler onconnectionstatechange;
attribute EventHandler onicegatheringstatechange; attribute EventHandler onicegatheringstatechange;
attribute EventHandler onicecandidateerror;
// https://w3c.github.io/webrtc-pc/#legacy-interface-extensions // https://w3c.github.io/webrtc-pc/#legacy-interface-extensions
// These methods return Promise<void> because having Promise-based versions requires that all overloads return Promises. // These methods return Promise<void> because having Promise-based versions requires that all overloads return Promises.
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/core/event_type_names.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_error_event.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_error_event_init.h"
namespace blink {
RTCPeerConnectionIceErrorEvent* RTCPeerConnectionIceErrorEvent::Create(
const String& host_candidate,
const String& url,
int error_code,
const String& txt) {
DCHECK(error_code > 0 && error_code <= USHRT_MAX);
return MakeGarbageCollected<RTCPeerConnectionIceErrorEvent>(
host_candidate, url, static_cast<uint16_t>(error_code), txt);
}
RTCPeerConnectionIceErrorEvent* RTCPeerConnectionIceErrorEvent::Create(
const AtomicString& type,
const RTCPeerConnectionIceErrorEventInit* initializer) {
return MakeGarbageCollected<RTCPeerConnectionIceErrorEvent>(type,
initializer);
}
RTCPeerConnectionIceErrorEvent::RTCPeerConnectionIceErrorEvent(
const String& host_candidate,
const String& url,
uint16_t error_code,
const String& error_text)
: Event(event_type_names::kIcecandidateerror,
Bubbles::kNo,
Cancelable::kNo),
host_candidate_(host_candidate),
url_(url),
error_code_(error_code),
error_text_(error_text) {}
RTCPeerConnectionIceErrorEvent::RTCPeerConnectionIceErrorEvent(
const AtomicString& type,
const RTCPeerConnectionIceErrorEventInit* initializer)
: Event(type, initializer),
host_candidate_(initializer->hostCandidate()),
url_(initializer->url()),
error_code_(initializer->errorCode()),
error_text_(initializer->statusText()) {}
RTCPeerConnectionIceErrorEvent::~RTCPeerConnectionIceErrorEvent() = default;
String RTCPeerConnectionIceErrorEvent::hostCandidate() const {
return host_candidate_;
}
String RTCPeerConnectionIceErrorEvent::url() const {
return url_;
}
uint16_t RTCPeerConnectionIceErrorEvent::errorCode() const {
return error_code_;
}
String RTCPeerConnectionIceErrorEvent::errorText() const {
return error_text_;
}
const AtomicString& RTCPeerConnectionIceErrorEvent::InterfaceName() const {
return event_interface_names::kRTCPeerConnectionIceErrorEvent;
}
void RTCPeerConnectionIceErrorEvent::Trace(blink::Visitor* visitor) {
Event::Trace(visitor);
}
} // namespace blink
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_RTC_PEER_CONNECTION_ICE_ERROR_EVENT_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_RTC_PEER_CONNECTION_ICE_ERROR_EVENT_H_
#include "third_party/blink/renderer/modules/event_modules.h"
#include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
namespace blink {
class RTCPeerConnectionIceErrorEventInit;
class MODULES_EXPORT RTCPeerConnectionIceErrorEvent final : public Event {
DEFINE_WRAPPERTYPEINFO();
public:
RTCPeerConnectionIceErrorEvent(const String& host_candidate,
const String& url,
uint16_t error_code,
const String& error_text);
RTCPeerConnectionIceErrorEvent(const AtomicString& type,
const RTCPeerConnectionIceErrorEventInit*);
~RTCPeerConnectionIceErrorEvent() override;
static RTCPeerConnectionIceErrorEvent* Create(const String& host_candidate,
const String& url,
int error_code,
const String& error_text);
static RTCPeerConnectionIceErrorEvent* Create(
const AtomicString& type,
const RTCPeerConnectionIceErrorEventInit*);
String hostCandidate() const;
String url() const;
uint16_t errorCode() const;
String errorText() const;
const AtomicString& InterfaceName() const override;
void Trace(blink::Visitor*) override;
private:
String host_candidate_;
String url_;
uint16_t error_code_;
String error_text_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_PEERCONNECTION_RTC_PEER_CONNECTION_ICE_ERROR_EVENT_H_
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//https://w3c.github.io/webrtc-pc/#rtcpeerconnectioniceerrorevent
[
Constructor (DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict),
Exposed=Window
] interface RTCPeerConnectionIceErrorEvent : Event {
readonly attribute DOMString hostCandidate;
readonly attribute DOMString url;
readonly attribute unsigned short errorCode;
readonly attribute USVString errorText;
};
\ No newline at end of file
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://w3c.github.io/webrtc-pc/#rtcpeerconnectioniceerrorevent
dictionary RTCPeerConnectionIceErrorEventInit : EventInit {
DOMString hostCandidate;
DOMString url;
required unsigned short errorCode;
USVString statusText;
};
\ No newline at end of file
<!doctype html>
<meta charset=utf-8>
<title>RTCPeerConnection.prototype.onicecandidateerror</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="RTCPeerConnection-helper.js"></script>
<script>
promise_test(async t => {
const config = {
iceServers: [{urls: "turn:123", username: "123", credential: "123"}]
};
const pc = new RTCPeerConnection(config);
t.add_cleanup(() => pc.close());
const onErrorPromise = addEventListenerPromise(t, pc, 'icecandidateerror', event => {
assert_true(event instanceof RTCPeerConnectionIceErrorEvent,
'Expect event to be instance of RTCPeerConnectionIceErrorEvent');
// Do not hardcode any specific errors here. Instead only verify
// that all the fields contain something expected.
// Testing of event.errorText can be added later once it's content is
// specified in spec with more detail.
assert_true(event.errorCode >= 300 && event.errorCode <= 799, "errorCode");
assert_true(event.hostCandidate.includes(":"), "hostCandidate");
assert_true(event.url.includes("123"), "url");
});
const offerOptions = {offerToReceiveAudio: 1};
await pc.setLocalDescription(await pc.createOffer(offerOptions));
await onErrorPromise;
}, 'Surfacing onicecandidateerror');
</script>
This is a testharness.js-based test. This is a testharness.js-based test.
Found 506 tests; 452 PASS, 54 FAIL, 0 TIMEOUT, 0 NOTRUN. Found 506 tests; 470 PASS, 36 FAIL, 0 TIMEOUT, 0 NOTRUN.
PASS idl_test setup PASS idl_test setup
PASS Test driver for asyncInitCertificate PASS Test driver for asyncInitCertificate
PASS Test driver for asyncInitTransports PASS Test driver for asyncInitTransports
...@@ -39,7 +39,7 @@ PASS RTCPeerConnection interface: operation setConfiguration(RTCConfiguration) ...@@ -39,7 +39,7 @@ PASS RTCPeerConnection interface: operation setConfiguration(RTCConfiguration)
PASS RTCPeerConnection interface: operation close() PASS RTCPeerConnection interface: operation close()
PASS RTCPeerConnection interface: attribute onnegotiationneeded PASS RTCPeerConnection interface: attribute onnegotiationneeded
PASS RTCPeerConnection interface: attribute onicecandidate PASS RTCPeerConnection interface: attribute onicecandidate
FAIL RTCPeerConnection interface: attribute onicecandidateerror assert_true: The prototype object must have a property "onicecandidateerror" expected true got false PASS RTCPeerConnection interface: attribute onicecandidateerror
PASS RTCPeerConnection interface: attribute onsignalingstatechange PASS RTCPeerConnection interface: attribute onsignalingstatechange
PASS RTCPeerConnection interface: attribute oniceconnectionstatechange PASS RTCPeerConnection interface: attribute oniceconnectionstatechange
PASS RTCPeerConnection interface: attribute onicegatheringstatechange PASS RTCPeerConnection interface: attribute onicegatheringstatechange
...@@ -92,7 +92,7 @@ PASS RTCPeerConnection interface: calling setConfiguration(RTCConfiguration) on ...@@ -92,7 +92,7 @@ PASS RTCPeerConnection interface: calling setConfiguration(RTCConfiguration) on
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "close()" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "close()" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onnegotiationneeded" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onnegotiationneeded" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidate" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidate" with the proper type
FAIL RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidateerror" with the proper type assert_inherits: property "onicecandidateerror" not found in prototype chain PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidateerror" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onsignalingstatechange" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onsignalingstatechange" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "oniceconnectionstatechange" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "oniceconnectionstatechange" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicegatheringstatechange" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicegatheringstatechange" with the proper type
...@@ -192,22 +192,22 @@ PASS RTCPeerConnectionIceEvent must be primary interface of new RTCPeerConnectio ...@@ -192,22 +192,22 @@ PASS RTCPeerConnectionIceEvent must be primary interface of new RTCPeerConnectio
PASS Stringification of new RTCPeerConnectionIceEvent('ice') PASS Stringification of new RTCPeerConnectionIceEvent('ice')
PASS RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "candidate" with the proper type PASS RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "candidate" with the proper type
FAIL RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "url" with the proper type assert_inherits: property "url" not found in prototype chain FAIL RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "url" with the proper type assert_inherits: property "url" not found in prototype chain
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object
FAIL RTCPeerConnectionIceErrorEvent interface object length assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface object length
FAIL RTCPeerConnectionIceErrorEvent interface object name assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface object name
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
FAIL RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate
FAIL RTCPeerConnectionIceErrorEvent interface: attribute url assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: attribute url
FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorCode assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: attribute errorCode
FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorText assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: attribute errorText
FAIL RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
FAIL Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "hostCandidate" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "hostCandidate" with the proper type
FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "url" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "url" with the proper type
FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorCode" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorCode" with the proper type
FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorText" with the proper type
PASS RTCCertificate interface: existence and properties of interface object PASS RTCCertificate interface: existence and properties of interface object
PASS RTCCertificate interface object length PASS RTCCertificate interface object length
PASS RTCCertificate interface object name PASS RTCCertificate interface object name
......
...@@ -5062,6 +5062,7 @@ interface RTCPeerConnection : EventTarget ...@@ -5062,6 +5062,7 @@ interface RTCPeerConnection : EventTarget
getter onconnectionstatechange getter onconnectionstatechange
getter ondatachannel getter ondatachannel
getter onicecandidate getter onicecandidate
getter onicecandidateerror
getter oniceconnectionstatechange getter oniceconnectionstatechange
getter onicegatheringstatechange getter onicegatheringstatechange
getter onnegotiationneeded getter onnegotiationneeded
...@@ -5099,12 +5100,20 @@ interface RTCPeerConnection : EventTarget ...@@ -5099,12 +5100,20 @@ interface RTCPeerConnection : EventTarget
setter onconnectionstatechange setter onconnectionstatechange
setter ondatachannel setter ondatachannel
setter onicecandidate setter onicecandidate
setter onicecandidateerror
setter oniceconnectionstatechange setter oniceconnectionstatechange
setter onicegatheringstatechange setter onicegatheringstatechange
setter onnegotiationneeded setter onnegotiationneeded
setter onremovestream setter onremovestream
setter onsignalingstatechange setter onsignalingstatechange
setter ontrack setter ontrack
interface RTCPeerConnectionIceErrorEvent : Event
attribute @@toStringTag
getter errorCode
getter errorText
getter hostCandidate
getter url
method constructor
interface RTCPeerConnectionIceEvent : Event interface RTCPeerConnectionIceEvent : Event
attribute @@toStringTag attribute @@toStringTag
getter candidate getter candidate
...@@ -8664,6 +8673,7 @@ interface webkitRTCPeerConnection : EventTarget ...@@ -8664,6 +8673,7 @@ interface webkitRTCPeerConnection : EventTarget
getter onconnectionstatechange getter onconnectionstatechange
getter ondatachannel getter ondatachannel
getter onicecandidate getter onicecandidate
getter onicecandidateerror
getter oniceconnectionstatechange getter oniceconnectionstatechange
getter onicegatheringstatechange getter onicegatheringstatechange
getter onnegotiationneeded getter onnegotiationneeded
...@@ -8701,6 +8711,7 @@ interface webkitRTCPeerConnection : EventTarget ...@@ -8701,6 +8711,7 @@ interface webkitRTCPeerConnection : EventTarget
setter onconnectionstatechange setter onconnectionstatechange
setter ondatachannel setter ondatachannel
setter onicecandidate setter onicecandidate
setter onicecandidateerror
setter oniceconnectionstatechange setter oniceconnectionstatechange
setter onicegatheringstatechange setter onicegatheringstatechange
setter onnegotiationneeded setter onnegotiationneeded
......
This is a testharness.js-based test. This is a testharness.js-based test.
Found 506 tests; 382 PASS, 124 FAIL, 0 TIMEOUT, 0 NOTRUN. Found 506 tests; 400 PASS, 106 FAIL, 0 TIMEOUT, 0 NOTRUN.
PASS idl_test setup PASS idl_test setup
PASS Test driver for asyncInitCertificate PASS Test driver for asyncInitCertificate
FAIL Test driver for asyncInitTransports assert_unreached: Failed to run asyncInitTransports: Error: assert_true: Expect pc.sctp to be instance of RTCSctpTransport expected true got false Reached unreachable code FAIL Test driver for asyncInitTransports assert_unreached: Failed to run asyncInitTransports: Error: assert_true: Expect pc.sctp to be instance of RTCSctpTransport expected true got false Reached unreachable code
...@@ -39,7 +39,7 @@ PASS RTCPeerConnection interface: operation setConfiguration(RTCConfiguration) ...@@ -39,7 +39,7 @@ PASS RTCPeerConnection interface: operation setConfiguration(RTCConfiguration)
PASS RTCPeerConnection interface: operation close() PASS RTCPeerConnection interface: operation close()
PASS RTCPeerConnection interface: attribute onnegotiationneeded PASS RTCPeerConnection interface: attribute onnegotiationneeded
PASS RTCPeerConnection interface: attribute onicecandidate PASS RTCPeerConnection interface: attribute onicecandidate
FAIL RTCPeerConnection interface: attribute onicecandidateerror assert_true: The prototype object must have a property "onicecandidateerror" expected true got false PASS RTCPeerConnection interface: attribute onicecandidateerror
PASS RTCPeerConnection interface: attribute onsignalingstatechange PASS RTCPeerConnection interface: attribute onsignalingstatechange
PASS RTCPeerConnection interface: attribute oniceconnectionstatechange PASS RTCPeerConnection interface: attribute oniceconnectionstatechange
PASS RTCPeerConnection interface: attribute onicegatheringstatechange PASS RTCPeerConnection interface: attribute onicegatheringstatechange
...@@ -92,7 +92,7 @@ PASS RTCPeerConnection interface: calling setConfiguration(RTCConfiguration) on ...@@ -92,7 +92,7 @@ PASS RTCPeerConnection interface: calling setConfiguration(RTCConfiguration) on
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "close()" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "close()" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onnegotiationneeded" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onnegotiationneeded" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidate" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidate" with the proper type
FAIL RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidateerror" with the proper type assert_inherits: property "onicecandidateerror" not found in prototype chain PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicecandidateerror" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onsignalingstatechange" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onsignalingstatechange" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "oniceconnectionstatechange" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "oniceconnectionstatechange" with the proper type
PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicegatheringstatechange" with the proper type PASS RTCPeerConnection interface: new RTCPeerConnection() must inherit property "onicegatheringstatechange" with the proper type
...@@ -192,22 +192,22 @@ PASS RTCPeerConnectionIceEvent must be primary interface of new RTCPeerConnectio ...@@ -192,22 +192,22 @@ PASS RTCPeerConnectionIceEvent must be primary interface of new RTCPeerConnectio
PASS Stringification of new RTCPeerConnectionIceEvent('ice') PASS Stringification of new RTCPeerConnectionIceEvent('ice')
PASS RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "candidate" with the proper type PASS RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "candidate" with the proper type
FAIL RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "url" with the proper type assert_inherits: property "url" not found in prototype chain FAIL RTCPeerConnectionIceEvent interface: new RTCPeerConnectionIceEvent('ice') must inherit property "url" with the proper type assert_inherits: property "url" not found in prototype chain
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object
FAIL RTCPeerConnectionIceErrorEvent interface object length assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface object length
FAIL RTCPeerConnectionIceErrorEvent interface object name assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface object name
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
FAIL RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate
FAIL RTCPeerConnectionIceErrorEvent interface: attribute url assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: attribute url
FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorCode assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: attribute errorCode
FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorText assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing PASS RTCPeerConnectionIceErrorEvent interface: attribute errorText
FAIL RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
FAIL Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "hostCandidate" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "hostCandidate" with the proper type
FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "url" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "url" with the proper type
FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorCode" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorCode" with the proper type
FAIL RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorText" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: RTCPeerConnectionIceErrorEvent is not defined" PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorText" with the proper type
PASS RTCCertificate interface: existence and properties of interface object PASS RTCCertificate interface: existence and properties of interface object
PASS RTCCertificate interface object length PASS RTCCertificate interface object length
PASS RTCCertificate interface object name PASS RTCCertificate interface object name
......
...@@ -5850,6 +5850,7 @@ interface RTCPeerConnection : EventTarget ...@@ -5850,6 +5850,7 @@ interface RTCPeerConnection : EventTarget
getter onconnectionstatechange getter onconnectionstatechange
getter ondatachannel getter ondatachannel
getter onicecandidate getter onicecandidate
getter onicecandidateerror
getter oniceconnectionstatechange getter oniceconnectionstatechange
getter onicegatheringstatechange getter onicegatheringstatechange
getter onnegotiationneeded getter onnegotiationneeded
...@@ -5887,12 +5888,20 @@ interface RTCPeerConnection : EventTarget ...@@ -5887,12 +5888,20 @@ interface RTCPeerConnection : EventTarget
setter onconnectionstatechange setter onconnectionstatechange
setter ondatachannel setter ondatachannel
setter onicecandidate setter onicecandidate
setter onicecandidateerror
setter oniceconnectionstatechange setter oniceconnectionstatechange
setter onicegatheringstatechange setter onicegatheringstatechange
setter onnegotiationneeded setter onnegotiationneeded
setter onremovestream setter onremovestream
setter onsignalingstatechange setter onsignalingstatechange
setter ontrack setter ontrack
interface RTCPeerConnectionIceErrorEvent : Event
attribute @@toStringTag
getter errorCode
getter errorText
getter hostCandidate
getter url
method constructor
interface RTCPeerConnectionIceEvent : Event interface RTCPeerConnectionIceEvent : Event
attribute @@toStringTag attribute @@toStringTag
getter candidate getter candidate
...@@ -10794,6 +10803,7 @@ interface webkitRTCPeerConnection : EventTarget ...@@ -10794,6 +10803,7 @@ interface webkitRTCPeerConnection : EventTarget
getter onconnectionstatechange getter onconnectionstatechange
getter ondatachannel getter ondatachannel
getter onicecandidate getter onicecandidate
getter onicecandidateerror
getter oniceconnectionstatechange getter oniceconnectionstatechange
getter onicegatheringstatechange getter onicegatheringstatechange
getter onnegotiationneeded getter onnegotiationneeded
...@@ -10831,6 +10841,7 @@ interface webkitRTCPeerConnection : EventTarget ...@@ -10831,6 +10841,7 @@ interface webkitRTCPeerConnection : EventTarget
setter onconnectionstatechange setter onconnectionstatechange
setter ondatachannel setter ondatachannel
setter onicecandidate setter onicecandidate
setter onicecandidateerror
setter oniceconnectionstatechange setter oniceconnectionstatechange
setter onicegatheringstatechange setter onicegatheringstatechange
setter onnegotiationneeded setter onnegotiationneeded
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment