aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/element.rs19
-rw-r--r--components/script/dom/htmlelement.rs17
-rw-r--r--components/script/dom/webidls/HTMLElement.webidl4
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;