diff options
Diffstat (limited to 'components/script/dom/htmlvideoelement.rs')
-rw-r--r-- | components/script/dom/htmlvideoelement.rs | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/components/script/dom/htmlvideoelement.rs b/components/script/dom/htmlvideoelement.rs index 8561aa051e1..59c93bfea6e 100644 --- a/components/script/dom/htmlvideoelement.rs +++ b/components/script/dom/htmlvideoelement.rs @@ -3,16 +3,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLVideoElementBinding; +use dom::bindings::codegen::Bindings::HTMLVideoElementBinding::HTMLVideoElementMethods; use dom::bindings::root::DomRoot; use dom::document::Document; -use dom::htmlmediaelement::HTMLMediaElement; +use dom::htmlmediaelement::{HTMLMediaElement, ReadyState}; use dom::node::Node; use dom_struct::dom_struct; use html5ever::{LocalName, Prefix}; +use std::cell::Cell; #[dom_struct] pub struct HTMLVideoElement { htmlmediaelement: HTMLMediaElement, + /// https://html.spec.whatwg.org/multipage/#dom-video-videowidth + video_width: Cell<u32>, + /// https://html.spec.whatwg.org/multipage/#dom-video-videoheight + video_height: Cell<u32>, } impl HTMLVideoElement { @@ -23,6 +29,8 @@ impl HTMLVideoElement { ) -> HTMLVideoElement { HTMLVideoElement { htmlmediaelement: HTMLMediaElement::new_inherited(local_name, prefix, document), + video_width: Cell::new(0), + video_height: Cell::new(0), } } @@ -40,4 +48,30 @@ impl HTMLVideoElement { HTMLVideoElementBinding::Wrap, ) } + + pub fn set_video_width(&self, width: u32) { + self.video_width.set(width); + } + + pub fn set_video_height(&self, height: u32) { + self.video_height.set(height); + } +} + +impl HTMLVideoElementMethods for HTMLVideoElement { + // https://html.spec.whatwg.org/multipage/#dom-video-videowidth + fn VideoWidth(&self) -> u32 { + if self.htmlmediaelement.get_ready_state() == ReadyState::HaveNothing { + return 0; + } + self.video_width.get() + } + + // https://html.spec.whatwg.org/multipage/#dom-video-videoheight + fn VideoHeight(&self) -> u32 { + if self.htmlmediaelement.get_ready_state() == ReadyState::HaveNothing { + return 0; + } + self.video_height.get() + } } |