Auto merge of #25629 - pshaughn:reflect_translate, r=jdm

Implement "translate" attribute

This attribute is almost a straightforward enumerated one, but the getter value inherits from parents when the content attribute is absent, even when the parents are non-HTML elements. This initial commit is using LocalName::from on a static string; once html5ever has a release with "translate" in the built-in local name list, a small change will be needed.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #25628

<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because ___

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
bors-servo 2020-02-13 08:26:28 -05:00 committed by GitHub
commit e3a2301efe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 38 additions and 44 deletions

View file

@ -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)]