mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
No need to share a reference for HTMLMediaElement played TimeRange
This commit is contained in:
parent
f5581a78ab
commit
4b23c631ea
2 changed files with 8 additions and 16 deletions
|
@ -203,7 +203,7 @@ pub struct HTMLMediaElement {
|
||||||
resource_url: DomRefCell<Option<ServoUrl>>,
|
resource_url: DomRefCell<Option<ServoUrl>>,
|
||||||
/// https://html.spec.whatwg.org/multipage/#dom-media-played
|
/// https://html.spec.whatwg.org/multipage/#dom-media-played
|
||||||
#[ignore_malloc_size_of = "Rc"]
|
#[ignore_malloc_size_of = "Rc"]
|
||||||
played: Rc<DomRefCell<TimeRangesContainer>>,
|
played: DomRefCell<TimeRangesContainer>,
|
||||||
/// https://html.spec.whatwg.org/multipage/#dom-media-texttracks
|
/// https://html.spec.whatwg.org/multipage/#dom-media-texttracks
|
||||||
text_tracks_list: MutNullableDom<TextTrackList>,
|
text_tracks_list: MutNullableDom<TextTrackList>,
|
||||||
/// Time of last timeupdate notification.
|
/// Time of last timeupdate notification.
|
||||||
|
@ -264,7 +264,7 @@ impl HTMLMediaElement {
|
||||||
volume: Cell::new(1.0),
|
volume: Cell::new(1.0),
|
||||||
seeking: Cell::new(false),
|
seeking: Cell::new(false),
|
||||||
resource_url: DomRefCell::new(None),
|
resource_url: DomRefCell::new(None),
|
||||||
played: Rc::new(DomRefCell::new(TimeRangesContainer::new())),
|
played: DomRefCell::new(TimeRangesContainer::new()),
|
||||||
text_tracks_list: Default::default(),
|
text_tracks_list: Default::default(),
|
||||||
next_timeupdate_event: Cell::new(time::get_time() + Duration::milliseconds(250)),
|
next_timeupdate_event: Cell::new(time::get_time() + Duration::milliseconds(250)),
|
||||||
current_fetch_context: DomRefCell::new(None),
|
current_fetch_context: DomRefCell::new(None),
|
||||||
|
@ -1654,7 +1654,7 @@ impl HTMLMediaElementMethods for HTMLMediaElement {
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-media-played
|
// https://html.spec.whatwg.org/multipage/#dom-media-played
|
||||||
fn Played(&self) -> DomRoot<TimeRanges> {
|
fn Played(&self) -> DomRoot<TimeRanges> {
|
||||||
TimeRanges::new(self.global().as_window(), self.played.clone())
|
TimeRanges::new(self.global().as_window(), self.played.borrow().clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-media-buffered
|
// https://html.spec.whatwg.org/multipage/#dom-media-buffered
|
||||||
|
@ -1665,7 +1665,7 @@ impl HTMLMediaElementMethods for HTMLMediaElement {
|
||||||
let _ = buffered.add(range.start as f64, range.end as f64);
|
let _ = buffered.add(range.start as f64, range.end as f64);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TimeRanges::new(self.global().as_window(), Rc::new(DomRefCell::new(buffered)))
|
TimeRanges::new(self.global().as_window(), buffered)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-media-texttracks
|
// https://html.spec.whatwg.org/multipage/#dom-media-texttracks
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* 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/. */
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use crate::dom::bindings::cell::DomRefCell;
|
|
||||||
use crate::dom::bindings::codegen::Bindings::TimeRangesBinding;
|
use crate::dom::bindings::codegen::Bindings::TimeRangesBinding;
|
||||||
use crate::dom::bindings::codegen::Bindings::TimeRangesBinding::TimeRangesMethods;
|
use crate::dom::bindings::codegen::Bindings::TimeRangesBinding::TimeRangesMethods;
|
||||||
use crate::dom::bindings::error::{Error, Fallible};
|
use crate::dom::bindings::error::{Error, Fallible};
|
||||||
|
@ -12,7 +11,6 @@ use crate::dom::bindings::root::DomRoot;
|
||||||
use crate::dom::window::Window;
|
use crate::dom::window::Window;
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::rc::Rc;
|
|
||||||
|
|
||||||
#[derive(Clone, JSTraceable, MallocSizeOf)]
|
#[derive(Clone, JSTraceable, MallocSizeOf)]
|
||||||
struct TimeRange {
|
struct TimeRange {
|
||||||
|
@ -128,22 +126,18 @@ impl TimeRangesContainer {
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct TimeRanges {
|
pub struct TimeRanges {
|
||||||
reflector_: Reflector,
|
reflector_: Reflector,
|
||||||
#[ignore_malloc_size_of = "Rc"]
|
ranges: TimeRangesContainer,
|
||||||
ranges: Rc<DomRefCell<TimeRangesContainer>>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TimeRanges {
|
impl TimeRanges {
|
||||||
fn new_inherited(ranges: Rc<DomRefCell<TimeRangesContainer>>) -> TimeRanges {
|
fn new_inherited(ranges: TimeRangesContainer) -> TimeRanges {
|
||||||
Self {
|
Self {
|
||||||
reflector_: Reflector::new(),
|
reflector_: Reflector::new(),
|
||||||
ranges,
|
ranges,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(
|
pub fn new(window: &Window, ranges: TimeRangesContainer) -> DomRoot<TimeRanges> {
|
||||||
window: &Window,
|
|
||||||
ranges: Rc<DomRefCell<TimeRangesContainer>>,
|
|
||||||
) -> DomRoot<TimeRanges> {
|
|
||||||
reflect_dom_object(
|
reflect_dom_object(
|
||||||
Box::new(TimeRanges::new_inherited(ranges)),
|
Box::new(TimeRanges::new_inherited(ranges)),
|
||||||
window,
|
window,
|
||||||
|
@ -155,13 +149,12 @@ impl TimeRanges {
|
||||||
impl TimeRangesMethods for TimeRanges {
|
impl TimeRangesMethods for TimeRanges {
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-timeranges-length
|
// https://html.spec.whatwg.org/multipage/#dom-timeranges-length
|
||||||
fn Length(&self) -> u32 {
|
fn Length(&self) -> u32 {
|
||||||
self.ranges.borrow().len()
|
self.ranges.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-timeranges-start
|
// https://html.spec.whatwg.org/multipage/#dom-timeranges-start
|
||||||
fn Start(&self, index: u32) -> Fallible<Finite<f64>> {
|
fn Start(&self, index: u32) -> Fallible<Finite<f64>> {
|
||||||
self.ranges
|
self.ranges
|
||||||
.borrow()
|
|
||||||
.start(index)
|
.start(index)
|
||||||
.map(Finite::wrap)
|
.map(Finite::wrap)
|
||||||
.map_err(|_| Error::IndexSize)
|
.map_err(|_| Error::IndexSize)
|
||||||
|
@ -170,7 +163,6 @@ impl TimeRangesMethods for TimeRanges {
|
||||||
// https://html.spec.whatwg.org/multipage/#dom-timeranges-end
|
// https://html.spec.whatwg.org/multipage/#dom-timeranges-end
|
||||||
fn End(&self, index: u32) -> Fallible<Finite<f64>> {
|
fn End(&self, index: u32) -> Fallible<Finite<f64>> {
|
||||||
self.ranges
|
self.ranges
|
||||||
.borrow()
|
|
||||||
.end(index)
|
.end(index)
|
||||||
.map(Finite::wrap)
|
.map(Finite::wrap)
|
||||||
.map_err(|_| Error::IndexSize)
|
.map_err(|_| Error::IndexSize)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue