aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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
-rw-r--r--tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini6
-rw-r--r--tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-007.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-008.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-009.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-010.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-011.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-012.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/idlharness.https.html.ini6
11 files changed, 38 insertions, 44 deletions
diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs
index 29bdaf2f3bf..cd9fb4481ad 100644
--- a/components/script/dom/element.rs
+++ b/components/script/dom/element.rs
@@ -514,6 +514,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 c5b7e6d0251..eea1d94de51 100644
--- a/components/script/dom/htmlelement.rs
+++ b/components/script/dom/htmlelement.rs
@@ -516,6 +516,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;
diff --git a/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini b/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini
index 44ad7d81adc..7a1eceb9555 100644
--- a/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini
+++ b/tests/wpt/metadata/custom-elements/reactions/HTMLElement.html.ini
@@ -1,11 +1,5 @@
[HTMLElement.html]
type: testharness
- [translate on HTMLElement must enqueue an attributeChanged reaction when adding translate content attribute]
- expected: FAIL
-
- [translate on HTMLElement must enqueue an attributeChanged reaction when replacing an existing attribute]
- expected: FAIL
-
[dir on HTMLElement must enqueue an attributeChanged reaction when adding dir content attribute]
expected: FAIL
diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-007.html.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-007.html.ini
deleted file mode 100644
index d1c210ac5b7..00000000000
--- a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-007.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[the-translate-attribute-007.html]
- type: testharness
- [In the default case, ie. with no translate attribute in the page, javascript will detect the translation mode of text as translate-enabled.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-008.html.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-008.html.ini
deleted file mode 100644
index 5fcf74aacb5..00000000000
--- a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-008.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[the-translate-attribute-008.html]
- type: testharness
- [If the translate attribute is set to yes, javascript will detect the translation mode of text as translate-enabled.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-009.html.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-009.html.ini
deleted file mode 100644
index decc9584c61..00000000000
--- a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-009.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[the-translate-attribute-009.html]
- type: testharness
- [If the translate attribute is set to no, javascript will detect the translation mode of text as no-translate.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-010.html.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-010.html.ini
deleted file mode 100644
index 0f0ef682cc4..00000000000
--- a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-010.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[the-translate-attribute-010.html]
- type: testharness
- [If the translate attribute is set to no, javascript will detect the translation mode of elements inside that element with no translate flag as no-translate.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-011.html.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-011.html.ini
deleted file mode 100644
index 64bf17a07c6..00000000000
--- a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-011.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[the-translate-attribute-011.html]
- type: testharness
- [If the translate attribute is set to yes on an element inside an element with the translate attribute set to no, javascript will detect the translation mode of text in the inner element as translate-enabled.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-012.html.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-012.html.ini
deleted file mode 100644
index 8863e305357..00000000000
--- a/tests/wpt/metadata/html/dom/elements/global-attributes/the-translate-attribute-012.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[the-translate-attribute-012.html]
- type: testharness
- [If the translate attribute is set to a null string, javascript will detect the translation mode of text as translate-enabled.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/idlharness.https.html.ini b/tests/wpt/metadata/html/dom/idlharness.https.html.ini
index 2ed0991f98c..201c943593a 100644
--- a/tests/wpt/metadata/html/dom/idlharness.https.html.ini
+++ b/tests/wpt/metadata/html/dom/idlharness.https.html.ini
@@ -2424,9 +2424,6 @@
[HTMLObjectElement interface: attribute name]
expected: FAIL
- [HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type]
- expected: FAIL
-
[HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type]
expected: FAIL
@@ -3765,9 +3762,6 @@
[HTMLAreaElement interface: attribute hostname]
expected: FAIL
- [HTMLElement interface: attribute translate]
- expected: FAIL
-
[HTMLTableColElement interface: attribute span]
expected: FAIL