servo: Merge #12957 - stylo: Don't calculate restyle damage on text nodes (from emilio:stylo-pseudos); r=bholley

<!-- Please describe your changes on the following line: -->

---
<!-- 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

<!-- Either: -->
- [x] There are tests for these changes (the Servo-side, that is)

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

Source-Repo: https://github.com/servo/servo
Source-Revision: 1fd745a4084c28039746d63c81d49120199dcad4
This commit is contained in:
Emilio Cobos Álvarez 2016-09-03 20:48:35 -05:00
Родитель 6c030663ef
Коммит c6b5d498da
1 изменённых файлов: 16 добавлений и 8 удалений

Просмотреть файл

@ -878,21 +878,29 @@ pub trait MatchMethods : TNode {
None => None,
};
let mut applicable_declarations_cache =
context.local_context().applicable_declarations_cache.borrow_mut();
let (damage, restyle_result) = if self.is_text_node() {
// In the case we're styling a text node, we don't need to compute the
// restyle damage, since it's a subset of the restyle damage of the
// parent.
//
// In Gecko, we're done, we don't need anything else from text nodes.
//
// In Servo, this is also true, since text nodes generate UnscannedText
// fragments, which aren't repairable by incremental layout.
if self.is_text_node() {
let mut data_ref = self.mutate_data().unwrap();
let mut data = &mut *data_ref;
let cloned_parent_style = ComputedValues::style_for_child_text_node(parent_style.unwrap());
let damage =
self.compute_restyle_damage(data.style.as_ref(), &cloned_parent_style, None);
data.style = Some(cloned_parent_style);
(damage, RestyleResult::Continue)
} else {
return RestyleResult::Continue;
}
let mut applicable_declarations_cache =
context.local_context().applicable_declarations_cache.borrow_mut();
let (damage, restyle_result) = {
let mut data_ref = self.mutate_data().unwrap();
let mut data = &mut *data_ref;
let final_style =