mirror of
https://github.com/servo/servo.git
synced 2025-09-30 08:39:16 +01:00
script: Move webaudio DOM interfaces to script/dom/audio/
(#38894)
Moves interfaces defined by the webaudio spec (27 files) to the new `script/dom/audio/` module from the `script/dom/` module. Testing: Just a refactor shouldn't need any testing Fixes: N/A Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
This commit is contained in:
parent
6ae61d796e
commit
b4a454aaea
31 changed files with 114 additions and 108 deletions
126
components/script/dom/audio/audiotrack.rs
Normal file
126
components/script/dom/audio/audiotrack.rs
Normal file
|
@ -0,0 +1,126 @@
|
|||
/* 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 std::cell::Cell;
|
||||
|
||||
use dom_struct::dom_struct;
|
||||
|
||||
use crate::dom::audio::audiotracklist::AudioTrackList;
|
||||
use crate::dom::bindings::cell::DomRefCell;
|
||||
use crate::dom::bindings::codegen::Bindings::AudioTrackBinding::AudioTrackMethods;
|
||||
use crate::dom::bindings::reflector::{Reflector, reflect_dom_object};
|
||||
use crate::dom::bindings::root::{Dom, DomRoot};
|
||||
use crate::dom::bindings::str::DOMString;
|
||||
use crate::dom::window::Window;
|
||||
use crate::script_runtime::CanGc;
|
||||
|
||||
#[dom_struct]
|
||||
pub(crate) struct AudioTrack {
|
||||
reflector_: Reflector,
|
||||
id: DOMString,
|
||||
kind: DOMString,
|
||||
label: DOMString,
|
||||
language: DOMString,
|
||||
enabled: Cell<bool>,
|
||||
track_list: DomRefCell<Option<Dom<AudioTrackList>>>,
|
||||
}
|
||||
|
||||
impl AudioTrack {
|
||||
pub(crate) fn new_inherited(
|
||||
id: DOMString,
|
||||
kind: DOMString,
|
||||
label: DOMString,
|
||||
language: DOMString,
|
||||
track_list: Option<&AudioTrackList>,
|
||||
) -> AudioTrack {
|
||||
AudioTrack {
|
||||
reflector_: Reflector::new(),
|
||||
id,
|
||||
kind,
|
||||
label,
|
||||
language,
|
||||
enabled: Cell::new(false),
|
||||
track_list: DomRefCell::new(track_list.map(Dom::from_ref)),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn new(
|
||||
window: &Window,
|
||||
id: DOMString,
|
||||
kind: DOMString,
|
||||
label: DOMString,
|
||||
language: DOMString,
|
||||
track_list: Option<&AudioTrackList>,
|
||||
can_gc: CanGc,
|
||||
) -> DomRoot<AudioTrack> {
|
||||
reflect_dom_object(
|
||||
Box::new(AudioTrack::new_inherited(
|
||||
id, kind, label, language, track_list,
|
||||
)),
|
||||
window,
|
||||
can_gc,
|
||||
)
|
||||
}
|
||||
|
||||
pub(crate) fn id(&self) -> DOMString {
|
||||
self.id.clone()
|
||||
}
|
||||
|
||||
pub(crate) fn kind(&self) -> DOMString {
|
||||
self.kind.clone()
|
||||
}
|
||||
|
||||
pub(crate) fn enabled(&self) -> bool {
|
||||
self.enabled.get()
|
||||
}
|
||||
|
||||
pub(crate) fn set_enabled(&self, value: bool) {
|
||||
self.enabled.set(value);
|
||||
}
|
||||
|
||||
pub(crate) fn add_track_list(&self, track_list: &AudioTrackList) {
|
||||
*self.track_list.borrow_mut() = Some(Dom::from_ref(track_list));
|
||||
}
|
||||
|
||||
pub(crate) fn remove_track_list(&self) {
|
||||
*self.track_list.borrow_mut() = None;
|
||||
}
|
||||
}
|
||||
|
||||
impl AudioTrackMethods<crate::DomTypeHolder> for AudioTrack {
|
||||
// https://html.spec.whatwg.org/multipage/#dom-audiotrack-id
|
||||
fn Id(&self) -> DOMString {
|
||||
self.id()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-audiotrack-kind
|
||||
fn Kind(&self) -> DOMString {
|
||||
self.kind()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-audiotrack-label
|
||||
fn Label(&self) -> DOMString {
|
||||
self.label.clone()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-audiotrack-language
|
||||
fn Language(&self) -> DOMString {
|
||||
self.language.clone()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-audiotrack-enabled
|
||||
fn Enabled(&self) -> bool {
|
||||
self.enabled()
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-audiotrack-enabled
|
||||
fn SetEnabled(&self, value: bool) {
|
||||
if let Some(list) = self.track_list.borrow().as_ref() {
|
||||
if let Some(idx) = list.find(self) {
|
||||
list.set_enabled(idx, value);
|
||||
}
|
||||
}
|
||||
self.set_enabled(value);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue