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
MOCK_METHOD0(NegotiationNeeded, void());
MOCK_METHOD1(DidGenerateICECandidate,
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,
void(webrtc::PeerConnectionInterface::SignalingState state));
MOCK_METHOD1(DidChangeIceGatheringState,
......
......@@ -53,6 +53,7 @@
#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_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/web/modules/mediastream/media_stream_constraints_util.h"
#include "third_party/webrtc/api/rtc_event_log_output.h"
......@@ -915,6 +916,17 @@ class RTCPeerConnectionHandler::Observer
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) {
DCHECK(main_thread_->BelongsToCurrentThread());
if (handler_)
......@@ -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 {
main_thread_->PostTask(
FROM_HERE,
......@@ -2297,6 +2320,21 @@ void RTCPeerConnectionHandler::OnIceCandidate(
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) {
client_->DidNoteInterestingUsage(usage_pattern);
}
......
......@@ -242,6 +242,10 @@ class CONTENT_EXPORT RTCPeerConnectionHandler
int sdp_mline_index,
int component,
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);
private:
......
......@@ -44,6 +44,7 @@ namespace blink {
class WebRTCICECandidate;
class WebRTCRtpReceiver;
class WebRTCRtpTransceiver;
class WebString;
struct BLINK_PLATFORM_EXPORT WebRTCSctpTransportSnapshot {
rtc::scoped_refptr<webrtc::SctpTransportInterface> transport;
......@@ -59,6 +60,10 @@ class BLINK_PLATFORM_EXPORT WebRTCPeerConnectionHandlerClient {
virtual void NegotiationNeeded() = 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(
webrtc::PeerConnectionInterface::SignalingState) = 0;
virtual void DidChangeIceGatheringState(
......
......@@ -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/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_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_quic_stream_event.idl",
"//third_party/blink/renderer/modules/picture_in_picture/enter_picture_in_picture_event.idl",
......
......@@ -145,6 +145,7 @@
"gotpointercapture",
"hashchange",
"icecandidate",
"icecandidateerror",
"iceconnectionstatechange",
"icegatheringstatechange",
"inactive",
......
......@@ -253,6 +253,7 @@ modules_idl_files =
"peerconnection/rtc_ice_transport.idl",
"peerconnection/rtc_legacy_stats_report.idl",
"peerconnection/rtc_peer_connection.idl",
"peerconnection/rtc_peer_connection_ice_error_event.idl",
"peerconnection/rtc_peer_connection_ice_event.idl",
"peerconnection/rtc_quic_stream.idl",
"peerconnection/rtc_quic_stream_event.idl",
......@@ -715,6 +716,7 @@ modules_dictionary_idl_files =
"peerconnection/rtc_ice_server.idl",
"peerconnection/rtc_offer_answer_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_quic_parameters.idl",
"peerconnection/rtc_quic_stream_event_init.idl",
......
......@@ -81,6 +81,8 @@ blink_modules_sources("peerconnection") {
"rtc_peer_connection.h",
"rtc_peer_connection_controller.cc",
"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.h",
"rtc_quic_stream.cc",
......
......@@ -89,6 +89,7 @@
#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_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_rtp_receiver.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.h"
......@@ -2668,6 +2669,15 @@ void RTCPeerConnection::DidGenerateICECandidate(
RTCIceCandidate::Create(std::move(web_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(
webrtc::PeerConnectionInterface::SignalingState new_state) {
......
......@@ -264,6 +264,7 @@ class MODULES_EXPORT RTCPeerConnection final
DEFINE_ATTRIBUTE_EVENT_LISTENER(icegatheringstatechange,
kIcegatheringstatechange)
DEFINE_ATTRIBUTE_EVENT_LISTENER(datachannel, kDatachannel)
DEFINE_ATTRIBUTE_EVENT_LISTENER(icecandidateerror, kIcecandidateerror)
// Utility to note result of CreateOffer / CreateAnswer
void NoteSdpCreated(const RTCSessionDescription&);
......@@ -283,6 +284,10 @@ class MODULES_EXPORT RTCPeerConnection final
// WebRTCPeerConnectionHandlerClient
void NegotiationNeeded() 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(
webrtc::PeerConnectionInterface::SignalingState) override;
void DidChangeIceGatheringState(
......
......@@ -95,6 +95,7 @@ enum RTCPeerConnectionState {
attribute EventHandler oniceconnectionstatechange;
attribute EventHandler onconnectionstatechange;
attribute EventHandler onicegatheringstatechange;
attribute EventHandler onicecandidateerror;
// 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.
......
// 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.
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 Test driver for asyncInitCertificate
PASS Test driver for asyncInitTransports
......@@ -39,7 +39,7 @@ PASS RTCPeerConnection interface: operation setConfiguration(RTCConfiguration)
PASS RTCPeerConnection interface: operation close()
PASS RTCPeerConnection interface: attribute onnegotiationneeded
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 oniceconnectionstatechange
PASS RTCPeerConnection interface: attribute onicegatheringstatechange
......@@ -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 "onnegotiationneeded" 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 "oniceconnectionstatechange" 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
PASS Stringification of new RTCPeerConnectionIceEvent('ice')
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 RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface object length assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface object name assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
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
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
FAIL RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface: attribute url assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorCode assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorText assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
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"
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"
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"
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"
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"
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: existence and properties of interface object
PASS RTCPeerConnectionIceErrorEvent interface object length
PASS RTCPeerConnectionIceErrorEvent interface object name
PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object
PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property
PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
PASS RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate
PASS RTCPeerConnectionIceErrorEvent interface: attribute url
PASS RTCPeerConnectionIceErrorEvent interface: attribute errorCode
PASS RTCPeerConnectionIceErrorEvent interface: attribute errorText
PASS RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
PASS Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "hostCandidate" with the proper type
PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "url" with the proper type
PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorCode" with the proper type
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 object length
PASS RTCCertificate interface object name
......
......@@ -5062,6 +5062,7 @@ interface RTCPeerConnection : EventTarget
getter onconnectionstatechange
getter ondatachannel
getter onicecandidate
getter onicecandidateerror
getter oniceconnectionstatechange
getter onicegatheringstatechange
getter onnegotiationneeded
......@@ -5099,12 +5100,20 @@ interface RTCPeerConnection : EventTarget
setter onconnectionstatechange
setter ondatachannel
setter onicecandidate
setter onicecandidateerror
setter oniceconnectionstatechange
setter onicegatheringstatechange
setter onnegotiationneeded
setter onremovestream
setter onsignalingstatechange
setter ontrack
interface RTCPeerConnectionIceErrorEvent : Event
attribute @@toStringTag
getter errorCode
getter errorText
getter hostCandidate
getter url
method constructor
interface RTCPeerConnectionIceEvent : Event
attribute @@toStringTag
getter candidate
......@@ -8664,6 +8673,7 @@ interface webkitRTCPeerConnection : EventTarget
getter onconnectionstatechange
getter ondatachannel
getter onicecandidate
getter onicecandidateerror
getter oniceconnectionstatechange
getter onicegatheringstatechange
getter onnegotiationneeded
......@@ -8701,6 +8711,7 @@ interface webkitRTCPeerConnection : EventTarget
setter onconnectionstatechange
setter ondatachannel
setter onicecandidate
setter onicecandidateerror
setter oniceconnectionstatechange
setter onicegatheringstatechange
setter onnegotiationneeded
......
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 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
......@@ -39,7 +39,7 @@ PASS RTCPeerConnection interface: operation setConfiguration(RTCConfiguration)
PASS RTCPeerConnection interface: operation close()
PASS RTCPeerConnection interface: attribute onnegotiationneeded
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 oniceconnectionstatechange
PASS RTCPeerConnection interface: attribute onicegatheringstatechange
......@@ -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 "onnegotiationneeded" 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 "oniceconnectionstatechange" 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
PASS Stringification of new RTCPeerConnectionIceEvent('ice')
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 RTCPeerConnectionIceErrorEvent interface: existence and properties of interface object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface object length assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface object name assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
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
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
FAIL RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface: attribute url assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorCode assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
FAIL RTCPeerConnectionIceErrorEvent interface: attribute errorText assert_own_property: self does not have own property "RTCPeerConnectionIceErrorEvent" expected property "RTCPeerConnectionIceErrorEvent" missing
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"
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"
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"
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"
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"
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: existence and properties of interface object
PASS RTCPeerConnectionIceErrorEvent interface object length
PASS RTCPeerConnectionIceErrorEvent interface object name
PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object
PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's "constructor" property
PASS RTCPeerConnectionIceErrorEvent interface: existence and properties of interface prototype object's @@unscopables property
PASS RTCPeerConnectionIceErrorEvent interface: attribute hostCandidate
PASS RTCPeerConnectionIceErrorEvent interface: attribute url
PASS RTCPeerConnectionIceErrorEvent interface: attribute errorCode
PASS RTCPeerConnectionIceErrorEvent interface: attribute errorText
PASS RTCPeerConnectionIceErrorEvent must be primary interface of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
PASS Stringification of new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 });
PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "hostCandidate" with the proper type
PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "url" with the proper type
PASS RTCPeerConnectionIceErrorEvent interface: new RTCPeerConnectionIceErrorEvent('ice-error', { errorCode: 701 }); must inherit property "errorCode" with the proper type
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 object length
PASS RTCCertificate interface object name
......
......@@ -5850,6 +5850,7 @@ interface RTCPeerConnection : EventTarget
getter onconnectionstatechange
getter ondatachannel
getter onicecandidate
getter onicecandidateerror
getter oniceconnectionstatechange
getter onicegatheringstatechange
getter onnegotiationneeded
......@@ -5887,12 +5888,20 @@ interface RTCPeerConnection : EventTarget
setter onconnectionstatechange
setter ondatachannel
setter onicecandidate
setter onicecandidateerror
setter oniceconnectionstatechange
setter onicegatheringstatechange
setter onnegotiationneeded
setter onremovestream
setter onsignalingstatechange
setter ontrack
interface RTCPeerConnectionIceErrorEvent : Event
attribute @@toStringTag
getter errorCode
getter errorText
getter hostCandidate
getter url
method constructor
interface RTCPeerConnectionIceEvent : Event
attribute @@toStringTag
getter candidate
......@@ -10794,6 +10803,7 @@ interface webkitRTCPeerConnection : EventTarget
getter onconnectionstatechange
getter ondatachannel
getter onicecandidate
getter onicecandidateerror
getter oniceconnectionstatechange
getter onicegatheringstatechange
getter onnegotiationneeded
......@@ -10831,6 +10841,7 @@ interface webkitRTCPeerConnection : EventTarget
setter onconnectionstatechange
setter ondatachannel
setter onicecandidate
setter onicecandidateerror
setter oniceconnectionstatechange
setter onicegatheringstatechange
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