Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Introduce RTCError and RTCErrorEvent
- Loading branch information
Showing
5 changed files
with
214 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
/* This Source Code Form is subject to the terms of the Mozilla Public | ||
* License, v. 2.0. If a copy of the MPL was not distributed with this | ||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ | ||
|
||
use crate::dom::bindings::codegen::Bindings::RTCErrorBinding::RTCErrorDetailType; | ||
use crate::dom::bindings::codegen::Bindings::RTCErrorBinding::RTCErrorInit; | ||
use crate::dom::bindings::codegen::Bindings::RTCErrorBinding::RTCErrorMethods; | ||
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; | ||
use crate::dom::bindings::root::{Dom, DomRoot}; | ||
use crate::dom::bindings::str::DOMString; | ||
use crate::dom::domexception::{DOMErrorName, DOMException}; | ||
use crate::dom::globalscope::GlobalScope; | ||
use crate::dom::window::Window; | ||
use dom_struct::dom_struct; | ||
|
||
#[dom_struct] | ||
pub struct RTCError { | ||
exception: Dom<DOMException>, | ||
error_detail: RTCErrorDetailType, | ||
sdp_line_number: Option<i32>, | ||
http_request_status_code: Option<i32>, | ||
sctp_cause_code: Option<i32>, | ||
received_alert: Option<u32>, | ||
sent_alert: Option<u32>, | ||
} | ||
|
||
impl RTCError { | ||
fn new_inherited(global: &GlobalScope, init: &RTCErrorInit, message: DOMString) -> RTCError { | ||
RTCError { | ||
exception: Dom::from_ref(&*DOMException::new( | ||
global, | ||
DOMErrorName::from(&message).unwrap(), | ||
)), | ||
error_detail: init.errorDetail, | ||
sdp_line_number: init.sdpLineNumber, | ||
http_request_status_code: init.httpRequestStatusCode, | ||
sctp_cause_code: init.sctpCauseCode, | ||
received_alert: init.receivedAlert, | ||
sent_alert: init.sentAlert, | ||
} | ||
} | ||
|
||
fn new(global: &GlobalScope, init: &RTCErrorInit, message: DOMString) -> DomRoot<RTCError> { | ||
reflect_dom_object( | ||
Box::new(RTCError::new_inherited(global, init, message)), | ||
global, | ||
) | ||
} | ||
|
||
#[allow(non_snake_case)] | ||
pub fn Constructor( | ||
window: &Window, | ||
init: &RTCErrorInit, | ||
message: DOMString, | ||
) -> DomRoot<RTCError> { | ||
RTCError::new(&window.global(), init, message) | ||
} | ||
} | ||
|
||
impl RTCErrorMethods for RTCError { | ||
// https://www.w3.org/TR/webrtc/#dom-rtcerror-errordetail | ||
fn ErrorDetail(&self) -> RTCErrorDetailType { | ||
self.error_detail | ||
} | ||
|
||
// https://www.w3.org/TR/webrtc/#dom-rtcerror-sdplinenumber | ||
fn GetSdpLineNumber(&self) -> Option<i32> { | ||
self.sdp_line_number | ||
} | ||
|
||
// https://www.w3.org/TR/webrtc/#dom-rtcerror | ||
fn GetHttpRequestStatusCode(&self) -> Option<i32> { | ||
self.http_request_status_code | ||
} | ||
|
||
// https://www.w3.org/TR/webrtc/#dom-rtcerror-sctpcausecode | ||
fn GetSctpCauseCode(&self) -> Option<i32> { | ||
self.sctp_cause_code | ||
} | ||
|
||
// https://www.w3.org/TR/webrtc/#dom-rtcerror-receivedalert | ||
fn GetReceivedAlert(&self) -> Option<u32> { | ||
self.received_alert | ||
} | ||
|
||
// https://www.w3.org/TR/webrtc/#dom-rtcerror-sentalert | ||
fn GetSentAlert(&self) -> Option<u32> { | ||
self.sent_alert | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* This Source Code Form is subject to the terms of the Mozilla Public | ||
* License, v. 2.0. If a copy of the MPL was not distributed with this | ||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ | ||
|
||
use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods; | ||
use crate::dom::bindings::codegen::Bindings::RTCErrorEventBinding::RTCErrorEventInit; | ||
use crate::dom::bindings::codegen::Bindings::RTCErrorEventBinding::RTCErrorEventMethods; | ||
use crate::dom::bindings::inheritance::Castable; | ||
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject}; | ||
use crate::dom::bindings::root::{Dom, DomRoot}; | ||
use crate::dom::bindings::str::DOMString; | ||
use crate::dom::event::Event; | ||
use crate::dom::globalscope::GlobalScope; | ||
use crate::dom::rtcerror::RTCError; | ||
use crate::dom::window::Window; | ||
use dom_struct::dom_struct; | ||
use servo_atoms::Atom; | ||
|
||
#[dom_struct] | ||
pub struct RTCErrorEvent { | ||
event: Event, | ||
error: Dom<RTCError>, | ||
} | ||
|
||
impl RTCErrorEvent { | ||
fn new_inherited(error: &RTCError) -> RTCErrorEvent { | ||
RTCErrorEvent { | ||
event: Event::new_inherited(), | ||
error: Dom::from_ref(error), | ||
} | ||
} | ||
|
||
fn new( | ||
global: &GlobalScope, | ||
type_: Atom, | ||
bubbles: bool, | ||
cancelable: bool, | ||
error: &RTCError, | ||
) -> DomRoot<RTCErrorEvent> { | ||
let event = reflect_dom_object(Box::new(RTCErrorEvent::new_inherited(&error)), global); | ||
{ | ||
let event = event.upcast::<Event>(); | ||
event.init_event(type_, bubbles, cancelable); | ||
} | ||
event | ||
} | ||
|
||
#[allow(non_snake_case)] | ||
pub fn Constructor( | ||
window: &Window, | ||
type_: DOMString, | ||
init: &RTCErrorEventInit, | ||
) -> DomRoot<RTCErrorEvent> { | ||
RTCErrorEvent::new( | ||
&window.global(), | ||
Atom::from(type_), | ||
init.parent.bubbles, | ||
init.parent.cancelable, | ||
&init.error, | ||
) | ||
} | ||
} | ||
|
||
impl RTCErrorEventMethods for RTCErrorEvent { | ||
fn Error(&self) -> DomRoot<RTCError> { | ||
DomRoot::from_ref(&*self.error) | ||
} | ||
|
||
fn IsTrusted(&self) -> bool { | ||
self.event.IsTrusted() | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
/* This Source Code Form is subject to the terms of the Mozilla Public | ||
* License, v. 2.0. If a copy of the MPL was not distributed with this | ||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ | ||
|
||
// https://www.w3.org/TR/webrtc/#dom-rtcerror | ||
|
||
[Exposed=Window] | ||
interface RTCError : DOMException { | ||
constructor(RTCErrorInit init, optional DOMString message = ""); | ||
readonly attribute RTCErrorDetailType errorDetail; | ||
readonly attribute long? sdpLineNumber; | ||
readonly attribute long? httpRequestStatusCode; | ||
readonly attribute long? sctpCauseCode; | ||
readonly attribute unsigned long? receivedAlert; | ||
readonly attribute unsigned long? sentAlert; | ||
}; | ||
|
||
dictionary RTCErrorInit { | ||
required RTCErrorDetailType errorDetail; | ||
long sdpLineNumber; | ||
long httpRequestStatusCode; | ||
long sctpCauseCode; | ||
unsigned long receivedAlert; | ||
unsigned long sentAlert; | ||
}; | ||
|
||
enum RTCErrorDetailType { | ||
"data-channel-failure", | ||
"dtls-failure", | ||
"fingerprint-failure", | ||
"sctp-failure", | ||
"sdp-syntax-error", | ||
"hardware-encoder-not-available", | ||
"hardware-encoder-error" | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
/* This Source Code Form is subject to the terms of the Mozilla Public | ||
* License, v. 2.0. If a copy of the MPL was not distributed with this | ||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ | ||
|
||
// https://www.w3.org/TR/webrtc/#rtcerrorevent-interface | ||
|
||
[Exposed=Window] | ||
interface RTCErrorEvent : Event { | ||
constructor(DOMString type, RTCErrorEventInit eventInitDict); | ||
[SameObject] readonly attribute RTCError error; | ||
}; | ||
|
||
dictionary RTCErrorEventInit : EventInit { | ||
required RTCError error; | ||
}; |