aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/offlineaudiocompletionevent.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2018-07-27 16:44:36 +0200
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2018-07-30 14:23:48 +0200
commit6aaf5806b1adfaeef5b1ef7bc33d243f56db1ad9 (patch)
treea1cb84312170495b6910aa2314d75186a0bd41c9 /components/script/dom/offlineaudiocompletionevent.rs
parente0341594231d887672b16f3d4d613a2e382b6487 (diff)
downloadservo-6aaf5806b1adfaeef5b1ef7bc33d243f56db1ad9.tar.gz
servo-6aaf5806b1adfaeef5b1ef7bc33d243f56db1ad9.zip
OfflineAudioContext
Diffstat (limited to 'components/script/dom/offlineaudiocompletionevent.rs')
-rw-r--r--components/script/dom/offlineaudiocompletionevent.rs77
1 files changed, 77 insertions, 0 deletions
diff --git a/components/script/dom/offlineaudiocompletionevent.rs b/components/script/dom/offlineaudiocompletionevent.rs
new file mode 100644
index 00000000000..91edf35338c
--- /dev/null
+++ b/components/script/dom/offlineaudiocompletionevent.rs
@@ -0,0 +1,77 @@
+/* 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 http://mozilla.org/MPL/2.0/. */
+
+use dom::audiobuffer::AudioBuffer;
+use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
+use dom::bindings::codegen::Bindings::OfflineAudioCompletionEventBinding;
+use dom::bindings::codegen::Bindings::OfflineAudioCompletionEventBinding::OfflineAudioCompletionEventInit;
+use dom::bindings::codegen::Bindings::OfflineAudioCompletionEventBinding::OfflineAudioCompletionEventMethods;
+use dom::bindings::error::Fallible;
+use dom::bindings::inheritance::Castable;
+use dom::bindings::reflector::reflect_dom_object;
+use dom::bindings::root::{Dom, DomRoot, RootedReference};
+use dom::bindings::str::DOMString;
+use dom::event::{Event, EventBubbles, EventCancelable};
+use dom::window::Window;
+use dom_struct::dom_struct;
+use servo_atoms::Atom;
+
+#[dom_struct]
+pub struct OfflineAudioCompletionEvent {
+ event: Event,
+ rendered_buffer: Dom<AudioBuffer>,
+}
+
+impl OfflineAudioCompletionEvent {
+ pub fn new_inherited(rendered_buffer: &AudioBuffer) -> OfflineAudioCompletionEvent {
+ OfflineAudioCompletionEvent {
+ event: Event::new_inherited(),
+ rendered_buffer: Dom::from_ref(rendered_buffer),
+ }
+ }
+
+ pub fn new(
+ window: &Window,
+ type_: Atom,
+ bubbles: EventBubbles,
+ cancelable: EventCancelable,
+ rendered_buffer: &AudioBuffer,
+ ) -> DomRoot<OfflineAudioCompletionEvent> {
+ let event = Box::new(OfflineAudioCompletionEvent::new_inherited(rendered_buffer));
+ let ev = reflect_dom_object(event, window, OfflineAudioCompletionEventBinding::Wrap);
+ {
+ let event = ev.upcast::<Event>();
+ event.init_event(type_, bool::from(bubbles), bool::from(cancelable));
+ }
+ ev
+ }
+
+ pub fn Constructor(
+ window: &Window,
+ type_: DOMString,
+ init: &OfflineAudioCompletionEventInit,
+ ) -> Fallible<DomRoot<OfflineAudioCompletionEvent>> {
+ let bubbles = EventBubbles::from(init.parent.bubbles);
+ let cancelable = EventCancelable::from(init.parent.cancelable);
+ Ok(OfflineAudioCompletionEvent::new(
+ window,
+ Atom::from(type_),
+ bubbles,
+ cancelable,
+ init.renderedBuffer.r(),
+ ))
+ }
+}
+
+impl OfflineAudioCompletionEventMethods for OfflineAudioCompletionEvent {
+ // https://webaudio.github.io/web-audio-api/#dom-offlineaudiocompletionevent-renderedbuffer
+ fn RenderedBuffer(&self) -> DomRoot<AudioBuffer> {
+ DomRoot::from_ref(&*self.rendered_buffer)
+ }
+
+ // https://dom.spec.whatwg.org/#dom-event-istrusted
+ fn IsTrusted(&self) -> bool {
+ self.event.IsTrusted()
+ }
+}