diff options
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/element.rs | 19 | ||||
-rw-r--r-- | components/script/dom/htmlelement.rs | 17 | ||||
-rw-r--r-- | components/script/dom/webidls/HTMLElement.webidl | 4 |
3 files changed, 38 insertions, 2 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index c26e492d544..3c321d83f54 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -523,6 +523,25 @@ impl Element { debug_assert!(false, "Trying to detach a non-attached shadow root"); } } + + // https://html.spec.whatwg.org/multipage/#translation-mode + pub fn is_translate_enabled(&self) -> bool { + // TODO change this to local_name! when html5ever updates + let name = &LocalName::from("translate"); + if self.has_attribute(name) { + match &*self.get_string_attribute(name) { + "yes" | "" => return true, + "no" => return false, + _ => {}, + } + } + if let Some(parent) = self.upcast::<Node>().GetParentNode() { + if let Some(elem) = parent.downcast::<Element>() { + return elem.is_translate_enabled(); + } + } + true // whatwg/html#5239 + } } #[allow(unsafe_code)] diff --git a/components/script/dom/htmlelement.rs b/components/script/dom/htmlelement.rs index b5cd0930def..28aa976002e 100644 --- a/components/script/dom/htmlelement.rs +++ b/components/script/dom/htmlelement.rs @@ -546,6 +546,23 @@ impl HTMLElementMethods for HTMLElement { // Step 7. Node::replace_all(Some(fragment.upcast()), self.upcast::<Node>()); } + + // https://html.spec.whatwg.org/multipage/#dom-translate + fn Translate(&self) -> bool { + self.upcast::<Element>().is_translate_enabled() + } + + // https://html.spec.whatwg.org/multipage/#dom-translate + fn SetTranslate(&self, yesno: bool) { + self.upcast::<Element>().set_string_attribute( + // TODO change this to local_name! when html5ever updates + &LocalName::from("translate"), + match yesno { + true => DOMString::from("yes"), + false => DOMString::from("no"), + }, + ); + } } fn append_text_node_to_fragment(document: &Document, fragment: &DocumentFragment, text: String) { diff --git a/components/script/dom/webidls/HTMLElement.webidl b/components/script/dom/webidls/HTMLElement.webidl index 1d15740f6c7..ef529dc80af 100644 --- a/components/script/dom/webidls/HTMLElement.webidl +++ b/components/script/dom/webidls/HTMLElement.webidl @@ -12,8 +12,8 @@ interface HTMLElement : Element { attribute DOMString title; [CEReactions] attribute DOMString lang; - // [CEReactions] - // attribute boolean translate; + [CEReactions] + attribute boolean translate; // [CEReactions] // attribute DOMString dir; readonly attribute DOMStringMap dataset; |