Auto merge of #16205 - bzbarsky:fix-pseudo-preshints, r=Manishearth

Presentation hints should not get applied to pseudo-elements.

Servo side of https://bugzilla.mozilla.org/show_bug.cgi?id=1352464

<!-- 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
- [ ] These changes fix #__ (github issue number if applicable).

<!-- Either: -->
- [ ] 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. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/16205)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-03-31 11:05:50 -05:00 committed by GitHub
commit bb4ea82b23

View file

@ -622,19 +622,21 @@ impl Stylist {
CascadeLevel::UANormal); CascadeLevel::UANormal);
debug!("UA normal: {:?}", relations); debug!("UA normal: {:?}", relations);
// Step 2: Presentational hints. if pseudo_element.is_none() {
let length_before_preshints = applicable_declarations.len(); // Step 2: Presentational hints.
element.synthesize_presentational_hints_for_legacy_attributes(applicable_declarations); let length_before_preshints = applicable_declarations.len();
if applicable_declarations.len() != length_before_preshints { element.synthesize_presentational_hints_for_legacy_attributes(applicable_declarations);
if cfg!(debug_assertions) { if applicable_declarations.len() != length_before_preshints {
for declaration in &applicable_declarations[length_before_preshints..] { if cfg!(debug_assertions) {
assert_eq!(declaration.level, CascadeLevel::PresHints); for declaration in &applicable_declarations[length_before_preshints..] {
assert_eq!(declaration.level, CascadeLevel::PresHints);
}
} }
// Never share style for elements with preshints
relations |= AFFECTED_BY_PRESENTATIONAL_HINTS;
} }
// Never share style for elements with preshints debug!("preshints: {:?}", relations);
relations |= AFFECTED_BY_PRESENTATIONAL_HINTS;
} }
debug!("preshints: {:?}", relations);
if element.matches_user_and_author_rules() { if element.matches_user_and_author_rules() {
// Step 3: User and author normal rules. // Step 3: User and author normal rules.