aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlvideoelement.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/htmlvideoelement.rs')
-rw-r--r--components/script/dom/htmlvideoelement.rs36
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()
+ }
}