Skip to content

Commit

Permalink
style: use the XBL styleset quirks mode to match XBL rules.
Browse files Browse the repository at this point in the history
This fixes bug 1405543.

MozReview-Commit-ID: Dv3mt3Fb8Yp
  • Loading branch information
emilio committed Oct 9, 2017
1 parent 715fc9c commit 100dd18
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
5 changes: 5 additions & 0 deletions components/style/gecko/data.rs
Expand Up @@ -123,6 +123,11 @@ impl PerDocumentStyleData {
/// Create a dummy `PerDocumentStyleData`.
pub fn new(pres_context: RawGeckoPresContextOwned) -> Self {
let device = Device::new(pres_context);

// FIXME(emilio, tlin): How is this supposed to work with XBL? This is
// right now not always honored, see bug 1405543...
//
// Should we just force XBL Stylists to be NoQuirks?
let quirks_mode = unsafe {
(*device.pres_context().mDocument.raw::<nsIDocument>()).mCompatMode
};
Expand Down
13 changes: 11 additions & 2 deletions components/style/stylist.rs
Expand Up @@ -1270,12 +1270,21 @@ impl Stylist {
// ServoStyleSet::CreateXBLServoStyleSet() loads XBL style sheets
// under eAuthorSheetFeatures level.
if let Some(map) = stylist.cascade_data.author.borrow_for_pseudo(pseudo_element) {
// NOTE(emilio): This is needed because the XBL stylist may
// think it has a different quirks mode than the document.
let mut matching_context = MatchingContext::new(
context.matching_mode,
context.bloom_filter,
context.nth_index_cache.as_mut().map(|s| &mut **s),
stylist.quirks_mode,
);

map.get_all_matching_rules(
element,
&rule_hash_target,
applicable_declarations,
context,
self.quirks_mode,
&mut matching_context,
stylist.quirks_mode,
flags_setter,
CascadeLevel::XBL,
);
Expand Down

0 comments on commit 100dd18

Please sign in to comment.