diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/bindings/error.rs | 4 | ||||
-rw-r--r-- | components/script/dom/element.rs | 3 | ||||
-rw-r--r-- | components/script/dom/htmllielement.rs | 25 | ||||
-rw-r--r-- | components/script/dom/macros.rs | 16 | ||||
-rw-r--r-- | components/script/dom/virtualmethods.rs | 4 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLLIElement.webidl | 2 | ||||
-rw-r--r-- | components/script/lib.rs | 1 | ||||
-rw-r--r-- | components/script/script_runtime.rs | 8 |
8 files changed, 54 insertions, 9 deletions
diff --git a/components/script/dom/bindings/error.rs b/components/script/dom/bindings/error.rs index bd63ba84fb1..c4bda97e521 100644 --- a/components/script/dom/bindings/error.rs +++ b/components/script/dom/bindings/error.rs @@ -178,7 +178,7 @@ impl ErrorInfo { }) } - fn from_dom_exception(cx: *mut JSContext, object: HandleObject) -> Option<ErrorInfo> { + fn from_dom_exception(object: HandleObject) -> Option<ErrorInfo> { let exception = match root_from_object::<DOMException>(object.get()) { Ok(exception) => exception, Err(_) => return None, @@ -215,7 +215,7 @@ pub unsafe fn report_pending_exception(cx: *mut JSContext, obj: *mut JSObject) { rooted!(in(cx) let object = value.to_object()); let error_info = ErrorInfo::from_native_error(cx, object.handle()) - .or_else(|| ErrorInfo::from_dom_exception(cx, object.handle())); + .or_else(|| ErrorInfo::from_dom_exception(object.handle())); let error_info = match error_info { Some(error_info) => error_info, None => { diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index a4c1ed28583..ae3c31d151c 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -347,7 +347,8 @@ impl LayoutElementHelpers for LayoutJS<Element> { if let Some(url) = background { hints.push(from_declaration( PropertyDeclaration::BackgroundImage(DeclaredValue::Value( - background_image::SpecifiedValue(Some(specified::Image::Url(url))))))); + background_image::SpecifiedValue(Some( + specified::Image::Url(url, specified::UrlExtraData { }))))))); } let color = if let Some(this) = self.downcast::<HTMLFontElement>() { diff --git a/components/script/dom/htmllielement.rs b/components/script/dom/htmllielement.rs index 444fc37827c..32915a5c351 100644 --- a/components/script/dom/htmllielement.rs +++ b/components/script/dom/htmllielement.rs @@ -3,12 +3,16 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::Bindings::HTMLLIElementBinding; +use dom::bindings::codegen::Bindings::HTMLLIElementBinding::HTMLLIElementMethods; +use dom::bindings::inheritance::Castable; use dom::bindings::js::Root; use dom::bindings::str::DOMString; use dom::document::Document; use dom::htmlelement::HTMLElement; use dom::node::Node; +use dom::virtualmethods::VirtualMethods; use string_cache::Atom; +use style::attr::AttrValue; #[dom_struct] pub struct HTMLLIElement { @@ -31,3 +35,24 @@ impl HTMLLIElement { HTMLLIElementBinding::Wrap) } } + +impl HTMLLIElementMethods for HTMLLIElement { + // https://html.spec.whatwg.org/multipage/#dom-li-value + make_int_getter!(Value, "value"); + + // https://html.spec.whatwg.org/multipage/#dom-li-value + make_int_setter!(SetValue, "value"); +} + +impl VirtualMethods for HTMLLIElement { + fn super_type(&self) -> Option<&VirtualMethods> { + Some(self.upcast::<HTMLElement>() as &VirtualMethods) + } + + fn parse_plain_attribute(&self, name: &Atom, value: DOMString) -> AttrValue { + match name { + &atom!("value") => AttrValue::from_i32(value.into(), 0), + _ => self.super_type().unwrap().parse_plain_attribute(name, value), + } + } +} diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index 58af2b28ac6..2b29ec8014c 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -47,6 +47,22 @@ macro_rules! make_limited_int_setter( ); #[macro_export] +macro_rules! make_int_setter( + ($attr:ident, $htmlname:tt, $default:expr) => ( + fn $attr(&self, value: i32) { + use dom::bindings::inheritance::Castable; + use dom::element::Element; + + let element = self.upcast::<Element>(); + element.set_int_attribute(&atom!($htmlname), value) + } + ); + ($attr:ident, $htmlname:tt) => { + make_int_setter!($attr, $htmlname, 0); + }; +); + +#[macro_export] macro_rules! make_int_getter( ($attr:ident, $htmlname:tt, $default:expr) => ( fn $attr(&self) -> i32 { diff --git a/components/script/dom/virtualmethods.rs b/components/script/dom/virtualmethods.rs index b42e8b676c3..d4cf1609568 100644 --- a/components/script/dom/virtualmethods.rs +++ b/components/script/dom/virtualmethods.rs @@ -29,6 +29,7 @@ use dom::htmliframeelement::HTMLIFrameElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlinputelement::HTMLInputElement; use dom::htmllabelelement::HTMLLabelElement; +use dom::htmllielement::HTMLLIElement; use dom::htmllinkelement::HTMLLinkElement; use dom::htmlmediaelement::HTMLMediaElement; use dom::htmlmetaelement::HTMLMetaElement; @@ -179,6 +180,9 @@ pub fn vtable_for(node: &Node) -> &VirtualMethods { NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLabelElement)) => { node.downcast::<HTMLLabelElement>().unwrap() as &VirtualMethods } + NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLIElement)) => { + node.downcast::<HTMLLIElement>().unwrap() as &VirtualMethods + } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLinkElement)) => { node.downcast::<HTMLLinkElement>().unwrap() as &VirtualMethods } diff --git a/components/script/dom/webidls/HTMLLIElement.webidl b/components/script/dom/webidls/HTMLLIElement.webidl index a2fcd9cc7d3..ea7d574eba4 100644 --- a/components/script/dom/webidls/HTMLLIElement.webidl +++ b/components/script/dom/webidls/HTMLLIElement.webidl @@ -4,7 +4,7 @@ // https://html.spec.whatwg.org/multipage/#htmllielement interface HTMLLIElement : HTMLElement { - // attribute long value; + attribute long value; // also has obsolete members }; diff --git a/components/script/lib.rs b/components/script/lib.rs index 5b16377fe68..20eb3336a38 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -10,7 +10,6 @@ #![feature(custom_attribute)] #![feature(custom_derive)] #![feature(fnbox)] -#![feature(iter_arith)] #![feature(mpsc_select)] #![feature(nonzero)] #![feature(on_unimplemented)] diff --git a/components/script/script_runtime.rs b/components/script/script_runtime.rs index d07491d8ce8..dfbb5ba5203 100644 --- a/components/script/script_runtime.rs +++ b/components/script/script_runtime.rs @@ -120,7 +120,7 @@ pub unsafe fn new_rt_and_cx() -> Runtime { // Pre barriers aren't working correctly at the moment DisableIncrementalGC(runtime.rt()); - set_gc_zeal_options(runtime.cx()); + set_gc_zeal_options(runtime.rt()); // Enable or disable the JITs. let rt_opts = &mut *RuntimeOptionsRef(runtime.rt()); @@ -400,7 +400,7 @@ unsafe extern fn trace_rust_roots(tr: *mut JSTracer, _data: *mut os::raw::c_void #[allow(unsafe_code)] #[cfg(feature = "debugmozjs")] -unsafe fn set_gc_zeal_options(cx: *mut JSContext) { +unsafe fn set_gc_zeal_options(rt: *mut JSRuntime) { use js::jsapi::{JS_DEFAULT_ZEAL_FREQ, JS_SetGCZeal}; let level = match PREFS.get("js.mem.gc.zeal.level").as_i64() { @@ -411,9 +411,9 @@ unsafe fn set_gc_zeal_options(cx: *mut JSContext) { Some(frequency) if frequency >= 0 => frequency as u32, _ => JS_DEFAULT_ZEAL_FREQ, }; - JS_SetGCZeal(cx, level, frequency); + JS_SetGCZeal(rt, level, frequency); } #[allow(unsafe_code)] #[cfg(not(feature = "debugmozjs"))] -unsafe fn set_gc_zeal_options(_: *mut JSContext) {} +unsafe fn set_gc_zeal_options(_: *mut JSRuntime) {} |