Commit Graph

240 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
4c3da99b96 Bug 1470145: Better debugging for media-query related code and ua-cache. r=xidorn
MozReview-Commit-ID: 3XHAxK2BOTS
2018-06-22 02:33:44 +02:00
Emilio Cobos Álvarez
60d13425a2 Bug 1465291: Make pseudo-elements work with :host. r=xidorn
Imported WebKit's test as a WPT.

MozReview-Commit-ID: 19ZThuoqKLW
2018-06-05 02:51:43 +02:00
Emilio Cobos Álvarez
2d3b844bb7 Bug 1459436: Fix tidy issues. r=emilio
MozReview-Commit-ID: KXInHzAiiD8
2018-05-05 18:07:18 +02:00
Emilio Cobos Álvarez
bb2cac8d63 Bug 1457678: Make the font canvas code not mess with the rule tree. r=xidorn,hiro
Inserting a lot of rules in the root level is super-inefficient. This fixes it
by not doing it.

It gives the root rule node to the style, but that's fine, since it's useless.
All this code-path is already pretty messy.

MozReview-Commit-ID: GoGHI4YJbKr
2018-05-04 05:50:21 +02:00
Emilio Cobos Álvarez
bfbd62eb51 Bug 1018269: Handle Shadow DOM in keyframes lookup. r=heycam
MozReview-Commit-ID: AeUmsOHOUYR
2018-05-01 13:01:23 +02:00
Bobby Holley
45c1a1e06d Bug 1455784 - Update StyleSource to use ArcUnion. r=Manishearth
MozReview-Commit-ID: AT4sud9goGV
2018-04-25 09:23:01 -07:00
Emilio Cobos Álvarez
44967dd158 Bug 1454162: Fix cascade order of !important in Shadow DOM. r=heycam
No cleaner ideas right now that carrying that counter around... Maybe a custom
type may be cleaner?

This makes ApplicableDeclarationBlock a bit bigger. I could probably try to make
the counter a 4 / 5-bit number or something and pack the counter there in the
SourceOrderAndCascadeLevel somehow...

But doesn't seem really worth the churn, and can be done as a followup in any
case. Let me know if you want to block on that.

MozReview-Commit-ID: 1LdW9S4xA6f
2018-04-18 18:27:03 +02:00
Bobby Holley
196912c9bf servo: Merge #20603 - Run rustfmt on selectors, servo_arc, and style (from bholley:rustfmt_style); r=Manishearth
Now that rustfmt is getting close to stable, and work on the style system has died down a bit, it seemed like an opportune time to auto-format the style crates.

The first commit disables import reordering, since tidy and rustfmt don't currently agree on the correct ordering. The second commit does a bunch of manual fixups such that the output of rustfmt passes tidy. The third commit runs rustfmt on the three aforementioned crate.

There are a few dozen warnings in the style crate about lines longer than 100 characters. It would be good to fix these, but I don't have time for that now.

Source-Repo: https://github.com/servo/servo
Source-Revision: 9a900ef019cd643bff961d7b20db6da69f3edb29
2018-04-10 21:00:11 -04:00
Emilio Cobos Álvarez
45343981af servo: Merge #20606 - style: Implement the functional :host(..) selector (from emilio:host); r=xidorn
We could invalidate in a slightly more fine-grained way, but I don't think it's
worth the churn vs. keeping the special-cases minimal.

Bug: 1452640
Reviewed-by: xidorn
MozReview-Commit-ID: 5DkQrgwg9GW
Source-Repo: https://github.com/servo/servo
Source-Revision: e11c2d97552d192b761b0684c8c6852b9dea0921
2018-04-10 02:16:30 -04:00
Emilio Cobos Álvarez
fd154499a4 servo: Merge #20597 - style: Implement the non-functional :host selector (from emilio:host); r=xidorn
Kinda tricky because :host only matches rules on the shadow root where the rules
come from. So we need to be careful during invalidation and style sharing.

I didn't use the non_ts_pseudo_class_list bits because as soon as we implement
the :host(..) bits we're going to need to special-case it anyway.

The general schema is the following:

 * Rightmost featureless :host selectors are handled inserting them in the
   host_rules hashmap. Note that we only insert featureless stuff there. We
   could insert all of them and just filter during matching, but that's slightly
   annoying.

 * The other selectors, like non-featureless :host or what not, are added to the
   normal cascade data. This is harmless, since the shadow host rules are never
   matched against the host, so we know they'll just never match, and avoids
   adding more special-cases.

 * Featureless :host selectors to the left of a combinator are handled during
   matching, in the special-case of next_element_for_combinator in selectors.
   This prevents this from being more invasive, and keeps the usual fast path
   slim, but it's a bit hard to match the spec and the implementation.

   We could keep a copy of the SelectorIter instead in the matching context to
   make the handling of featureless-ness explicit in match_non_ts_pseudo_class,
   but we'd still need the special-case anyway, so I'm not fond of it.

 * We take advantage of one thing that makes this sound. As you may have
   noticed, if you had `root` element which is a ShadowRoot, and you matched
   something like `div:host` against it, using a MatchingContext with
   current_host == root, we'd incorrectly report a match. But this is impossible
   due to the following constraints:

    * Shadow root rules aren't matched against the host during styling (except
      these featureless selectors).

    * DOM APIs' current_host needs to be the _containing_ host, not the element
      itself if you're a Shadow host.

Bug: 992245
Reviewed-by: xidorn
MozReview-Commit-ID: KayYNfTXb5h
Source-Repo: https://github.com/servo/servo
Source-Revision: cb754b262747e7cab794411df55588f0f0b30b5e
2018-04-09 06:41:59 -04:00
Xidorn Quan
83d4cc8a68 servo: Merge #20541 - Use Servo data to back @counter-style rule in Gecko (from upsuper:counter-style); r=emilio
This is the Servo side changes of [bug 1449068](https://bugzilla.mozilla.org/show_bug.cgi?id=1449068).

Source-Repo: https://github.com/servo/servo
Source-Revision: 8c35be94c2910a50bbb7106449bab4e231697aea
2018-04-04 19:34:06 -04:00
Xidorn Quan
5cd2b45919 servo: Merge #20519 - Use Servo data to back @font-face rule in Gecko (from upsuper:font-face-rule); r=emilio
This is the Servo side change of [bug 1449087](https://bugzilla.mozilla.org/show_bug.cgi?id=1449087).

Source-Repo: https://github.com/servo/servo
Source-Revision: 34b13dac66b48790003ccd069f4636f1def77e7d
2018-04-03 19:33:59 -04:00
Emilio Cobos Álvarez
86438f7ff0 servo: Merge #20339 - style: Remove unsound Atom From implementations (from emilio:atom-from-dead-beef); r=nox
Fixes #20158

Source-Repo: https://github.com/servo/servo
Source-Revision: b47224dbcce2974e6f572b284cba1e2f5393b95d
2018-03-19 06:11:14 -04:00
Emilio Cobos Álvarez
5433e8d3b9 servo: Merge #20229 - style: Separate the XBL and shadow dom styling bits (from emilio:finally); r=xidorn
Bug: 1441022
Reviewed-by: xidorn
MozReview-Commit-ID: 2W0BmZ8wWXg
Source-Repo: https://github.com/servo/servo
Source-Revision: 6272233c50071534ddbab118b64ecdb8fdda7c8a
2018-03-07 10:06:05 -05:00
Emilio Cobos Álvarez
5dec67e627 servo: Merge #20117 - style: Somewhat miscelaneous cleanup (from emilio:misc-cleanup); r=nox
Source-Repo: https://github.com/servo/servo
Source-Revision: bbfca28a4f3770896955375d01f1c489b4632fd3
2018-02-24 17:28:20 -05:00
Xidorn Quan
049dcd421c servo: Merge #20070 - Add sizeof for AuthorStyles (from upsuper:authorstyles-size); r=bholley,njn
This is the Servo side change for [bug 1438497](https://bugzilla.mozilla.org/show_bug.cgi?id=1438497).

Source-Repo: https://github.com/servo/servo
Source-Revision: a98da8ce939e8afe7bac737ac02e3bcb226a1ea9
2018-02-18 23:13:10 -05:00
Emilio Cobos Álvarez
3f59a7620c servo: Merge #20061 - style: Make XBL / Shadow DOM use something more light-weight than a Stylist (from emilio:author-styles); r=xidorn
Introduce AuthorStyles, which is just a struct aggregating stylesheets +
CascadeData, with a quirks_mode parameter because XBL sucks so bad.

Bug: 1436059
Reviewed-by: xidorn
MozReview-Commit-ID: 7q99tSNXo0K
Source-Repo: https://github.com/servo/servo
Source-Revision: 504b901cc82db5c5e02e157cec9753f7c297ac2c
2018-02-16 09:54:06 -05:00
Emilio Cobos Álvarez
a3f09f2a51 servo: Merge #20026 - style: Use more CascadeData and less Stylist for XBL stuff (from emilio:less-stylist-xbl); r=upsuper
Just some more use-cases that can be converted right away.

I'm trying to make XBL not use a whole Stylist, slowly...

Source-Repo: https://github.com/servo/servo
Source-Revision: 63691f01d79874aae4bb84badf86667c863cec9b
2018-02-12 06:03:30 -05:00
Emilio Cobos Álvarez
69adddeec0 servo: Merge #20018 - style: Handle quirks-mode changes correctly (from emilio:quirks-mode-flush); r=xidorn
The reason why bug 1355721 regressed this is because in non-e10s we definitely
flush before parsing the standards quirks-mode. And bug 1355721 introduced an
unconditional UpdateStylistIfNeeded, unless the counter style / font
equivalents.

That means that the stylist wouldn't remain on its initial state after the first
flush, which itself means that when the compat mode changed, the UA and user
rules were already on the stylist with the quirks mode keys. That makes
class-names be keyed in ascii lowercase.

After that no user style changed, so no rebuild happens for the cascade data in
the user origin, so we keep looking at the wrong keys indefinitely.

We should try to avoid the flush there and ensure that by the time we create a
pres shell the quirks mode is already up-to-date...

Bug: 1394233
Reviewed-by: xidorn
MozReview-Commit-ID: 25dD2bca3tN
Source-Repo: https://github.com/servo/servo
Source-Revision: 2ec0b50ebc65f04a49420e15267f564d36d5ada1
2018-02-11 13:19:02 -05:00
Emilio Cobos Álvarez
d8ecdca73b servo: Merge #20010 - style: Cascade pres hints after normal user rules (from emilio:pres-hints-cascade); r=bholley
Per https://drafts.csswg.org/css-cascade/#preshint and
https://html.spec.whatwg.org/#presentational-hints.

This was causing failures in the link color reftests with the preferences sheet
as a User sheet.

Bug: 1436782
Reviewed-by: bholley
MozReview-Commit-ID: 9iwEqPBw4CF
Source-Repo: https://github.com/servo/servo
Source-Revision: 2cc75a783d1a7e2a82ef1e6502ca5a4463a3fb4b
2018-02-10 07:46:38 -05:00
Emilio Cobos Álvarez
4225865957 servo: Merge #20011 - style: Tidy Stylist::compute_for_declarations (from emilio:cleanup-for-declarations-stuff); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: 0098d519030f395f94f3f82fc04b93227fdff4ec
2018-02-10 06:45:52 -05:00
Emilio Cobos Álvarez
656ba0e86e servo: Merge #20004 - style: Add infrastructure to have a standalone author stylesheet collection (from emilio:author-sheet-collection); r=nox
Right now Gecko uses a whole `Stylist` for stuff like XBL / Shadow DOM.

That's not great, because it has tons of unrelated logic, and also eats up a lot of memory. Also, it prevents us to optimize style changes in shadow hosts the same way we do for the document.

These patches mostly rejigger stuff around so that you can define a `DocumentStylesheetSet` and then an `AuthorStylesheetSet`, which would contain just the Shadow DOM sheets / XBL resource sheets.

It still doesn't introduce any use for the later, but that will come later.

There's a patch in this PR that requires Gecko changes, posted in https://bugzilla.mozilla.org/show_bug.cgi?id=1436798.

Source-Repo: https://github.com/servo/servo
Source-Revision: 6b1a74672d6b9d9c55b027b147b0a6eb8f727bfd
2018-02-09 17:18:08 -05:00
Emilio Cobos Álvarez
9bd229db85 servo: Merge #19973 - style: Rework how media feature changes are handled for XBL (from emilio:media-feature-change); r=xidorn
Bug: 1435939
Reviewed-by: xidorn
Source-Repo: https://github.com/servo/servo
Source-Revision: e57319a7345eded057555f55f801e5f2c413f5b9
2018-02-07 08:02:34 -05:00
janczer
365600e115 servo: Merge #19970 - Change debug assertions to specific ones (from janczer:change_debug_assertions); r=emilio
<!-- 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
- [X] These changes fix #19962 (github issue number if applicable).

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

Source-Repo: https://github.com/servo/servo
Source-Revision: 5d209a70ab11cd0ce6c7e086091112570c6e259d
2018-02-07 06:20:36 -05:00
Emilio Cobos Álvarez
9134742fc1 servo: Merge #19877 - style: Look at the snapshots when invalidating due to stylesheet changes (from emilio:remove-sheet-oh-noes); r=bz
Otherwise removal of stylesheets may get out of sync with other DOM changes, and
we may fail to invalidate the style of the affected elements.

Bug: 1432850
Reviewed-by: bz
MozReview-Commit-ID: DrMTgLzQcnk
Source-Repo: https://github.com/servo/servo
Source-Revision: bc7dd644f6f50bd6eb3fba1547808775ee9d7620
2018-01-26 20:18:48 -06:00
Emilio Cobos Álvarez
b74b91ac7e servo: Merge #19842 - style: Cleanup a bit the cascade (from emilio:cascade-cleanup); r=nox,jryans
This makes an element available in StyleAdjuster, and uses it to replace some of our CascadeFlags (the ones that don't represent restrictions on what's actually cascaded, actually).

That fixes handwaviness in the handling of those flags from style reparenting,
and code duplication to handle tricky stuff like :visited.

There are a number of other changes that are worth noticing:

 * skip_root_and_item_based_display_fixup is renamed to skip_item_display_fixup:

   TElement::is_root() already implies being the document element, which by
   definition is not native anonymous and not a pseudo-element.

   Thus, you never get fixed-up if your NAC or a pseudo, which is what the code
   tried to avoid, so the only fixup with a point is the item one, which is
   necessary.

 * The pseudo-element probing code was refactored to return early a
   Option::<CascadeInputs>::None, which is nicer than what it was doing.

 * The visited_links_enabled check has moved to selector-matching time. The rest
   of the checks aren't based on whether the element is a link, or are properly
   guarded by parent_style.visited_style().is_some() or visited_rules.is_some().

   Thus you can transitively infer that no element will end up with a :visited
   style, not even from style reparenting.

Anyway, the underlying reason why I want the element in StyleAdjuster is because
we're going to implement an adjustment in there depending on the tag of the
element (converting display: contents to display: none depending on the tag), so
computing that information eagerly, including a hash lookup, wouldn't be nice.

See each commit for details.

Source-Repo: https://github.com/servo/servo
Source-Revision: 02331617b9bd7a379b05f7daa7ad09a44c27504c
2018-01-23 06:30:51 -06:00
Emilio Cobos Álvarez
85499bae26 servo: Merge #19822 - style: More tiny selector-matching cleanup (from emilio:less-match-public); r=KiChjang
See each commit individually.

Source-Repo: https://github.com/servo/servo
Source-Revision: 6fc71a7644bd7afcccf83f67cfdaf01897e1a3bc
2018-01-19 23:05:18 -06:00
Emilio Cobos Álvarez
9c27e80a90 servo: Merge #19817 - style: Track the visited-handling-mode on the MatchingContext (from emilio:matching-context-visited); r=nox
This fixes bugs where we're not passing the value around correctly, like from
::-moz-any.

This is a fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1431539.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0d7d02fca772a407d4ffa1ebd1e03d60f385eb74
2018-01-19 12:50:00 -06:00
Emilio Cobos Álvarez
66afe9a352 servo: Merge #19790 - style: Work from multiple bugs (from emilio:fix-all-the-bugs); r=heycam,xidorn
Bug: 1429846,1429248,1430608,1409672
Reviewed-by: xidorn,heycam
Source-Repo: https://github.com/servo/servo
Source-Revision: 7d685d4baa0b107e3dd95eeba8076bfb9e07ba0e
2018-01-17 13:55:03 -06:00
Simon Sapin
71e6c25a65 servo: Merge #19751 - Clean up the selectors crate for a new crates.io release (from servo:selectors); r=bholley
Source-Repo: https://github.com/servo/servo
Source-Revision: 6ca651c0c8271ce185448e1db95b893a276eaed9
2018-01-12 16:55:12 -06:00
Emilio Cobos Álvarez
14f0f89c80 servo: Merge #19734 - style: Remove some unneeded indirection (from emilio:less-indirection); r=mbrubeck
All TElement's implement Copy, and are just pointers, so the double indirection
is stupid.

I'm going to try to see if removing this double-indirection fixes some
selector-matching performance, and this is a trivial pre-requisite while I wait
for Talos results.

Source-Repo: https://github.com/servo/servo
Source-Revision: e2c89df8eeb5f2dbac1436335aea52099a622d0d
2018-01-09 23:34:15 -06:00
Emilio Cobos Álvarez
a6af64eefb servo: Merge #19733 - style: Use Option::get_or_insert_with (from emilio:less-unwrap); r=glennw
Less unwraps is better.

Source-Repo: https://github.com/servo/servo
Source-Revision: e5a0bb9b4d26156ee675c33968007c7d0d54fd3b
2018-01-09 20:50:12 -06:00
Emilio Cobos Álvarez
17ac2d9d1e servo: Merge #19721 - style: Support ::slotted better (from emilio:slotted); r=heycam
This allows to selector-match ::slotted, though we still don't parse it.

Bug: 1425834, 1424607, 1425755
Reviewed-by: heycam
MozReview-Commit-ID: ItELHkf2PMl
Source-Repo: https://github.com/servo/servo
Source-Revision: bb34b7f54aa85cde600c6d675360d03714cf1f8b
2018-01-09 07:26:28 -06:00
Emilio Cobos Álvarez
f6d34f8931 servo: Merge #19595 - style: Add a FIXME comment that I need to write a test-case for (from emilio:broken-code-all-around); r=emilio
Source-Repo: https://github.com/servo/servo
Source-Revision: fab8042fa73ff326a0fa5c65863434eac0070ac1
2017-12-18 07:24:13 -06:00
Emilio Cobos Álvarez
1b7c02585a servo: Merge #19564 - style: Slightly simplify push_applicable_declarations (from emilio:push-applicable-simple); r=mbrubeck
Source-Repo: https://github.com/servo/servo
Source-Revision: 90290cfafed0bff88920fd286ea09656fd9e999f
2017-12-15 11:28:16 -06:00
Emilio Cobos Álvarez
578b938067 servo: Merge #19551 - style: Make anon boxes account for :visited (from emilio:anon-box-visited); r=heycam
This should fix one of the test failures of:

  https://bugzilla.mozilla.org/show_bug.cgi?id=616436

Source-Repo: https://github.com/servo/servo
Source-Revision: c258bfb430fabc2ebc55db679a52f09c7df04b58
2017-12-13 22:47:38 -06:00
Matt Brubeck
bd2b1d6b5f servo: Merge #19537 - style: Use the ? operator for Option (from mbrubeck:try); r=nox
This is stable in Rust 1.22 (#19532).

---

- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because it is refactoring only

Source-Repo: https://github.com/servo/servo
Source-Revision: 5f4f355cea4a24992ac9efa97f4a6e1837008e0b
2017-12-09 10:50:55 -06:00
Emilio Cobos Álvarez
49bf5fbc7a servo: Merge #19520 - selectors: Simplify :visited by only using the "is inside link" information (from emilio:simplify-visited); r=jryans
Right now we go through a lot of hoops to see if we ever see a relevant link.

However, that information is not needed: if the element is a link, we'll always
need to compute its visited style because its its own relevant link.

If the element inherits from a link, we need to also compute the visited style
anyway.

So the "has a relevant link been found" is pretty useless when we know what are
we inheriting from.

The branches at the beginning of matches_complex_selector_internal were
affecting performance, and there are no good reasons to keep them.

I've verified that this passes all the visited tests in mozilla central, and
that the test-cases too-flaky to be landed still pass.

Source-Repo: https://github.com/servo/servo
Source-Revision: 7a8733723551201d2c06acde9b0915b4c03938b4
2017-12-08 17:37:32 -06:00
Xidorn Quan
9933752879 servo: Merge #19429 - Don't try to share style on quirks mode whenever two elements have different id (from upsuper:sharing-quirks-id); r=emilio
This fixes [bug 1420946](https://bugzilla.mozilla.org/show_bug.cgi?id=1420946).

Source-Repo: https://github.com/servo/servo
Source-Revision: fce44a2e139478a5fc3524c2fd72fbeea6e3eec1
2017-11-30 08:23:07 -06:00
Matt Brubeck
4d91a6eac8 servo: Merge #19424 - Remove unused generic from push_applicable_declarations (from mbrubeck:veclike); r=emilio
This function is only ever used with one type.

This gets rid of the only use of the `smallvec::VecLike` trait, which we may want to deprecate (servo/rust-smallvec#35).  If we do need to make this function generic in the future, we can do it using standard traits instead.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they are removing unused code

Source-Repo: https://github.com/servo/servo
Source-Revision: dbe3136a055008d2c27c7d96f20e0c9ce4b1cb1c
2017-11-29 11:47:33 -06:00
Bastien Orivel
113ffac80e servo: Merge #18967 - Bump bitflags to 1.0 (from Eijebong:bitflags2.0); r=mbrubeck
See #18809

Still haven't had time to test it but it should fix the tests failures that appeared in m-c

Source-Repo: https://github.com/servo/servo
Source-Revision: fe4139b779b3af749ec1426ddf4e1393c7b85442
2017-10-30 18:25:45 -05:00
Emilio Cobos Álvarez
85f54c56f1 servo: Merge #19059 - style: Make the SelectorMap API slightly nicer (from emilio:selector-map-nicer); r=nox
Source-Repo: https://github.com/servo/servo
Source-Revision: 1b73cf33525afbbe2d077554d1965b74ef9ae5e3
2017-10-30 06:42:14 -05:00
Emilio Cobos Álvarez
c18891ef75 servo: Merge #19048 - style: Make style sharing look at XBL / Shadow DOM rules (from emilio:shadow-style-sharing); r=bzbarsky
Reland of #19045, because it was backed out for an unexpected pass.

Bug: 1412251
Reviewed-by: bz
MozReview-Commit-ID: II6lk6OmSZU
Source-Repo: https://github.com/servo/servo
Source-Revision: 52f962c387456308b68f062bff1ad72947da79b9
2017-10-28 06:06:56 -05:00
Sebastian Hengst
1ded8a1a36 Backed out changeset fc813bf68348 for failing reftest layout/reftests/bugs/272646-1.xul on OS X. r=backout 2017-10-28 10:07:46 +02:00
Emilio Cobos Álvarez
262f1e9825 servo: Merge #19045 - style: Make style sharing look at XBL / Shadow DOM rules (from emilio:shadow-style-sharing); r=bzbarsky
Bug: 1412251
Reviewed-by: bz
MozReview-Commit-ID: II6lk6OmSZU
Source-Repo: https://github.com/servo/servo
Source-Revision: 592c513c28885cbaba4eea2dc1cf77facba14ff4
2017-10-27 19:14:20 -05:00
Manish Goregaokar
7d6677d31a servo: Merge #18995 - Revert all hashmap diagnostics changes (from Manishearth:rm-diagnostics); r=emilio
We don't need them anymore

Source-Repo: https://github.com/servo/servo
Source-Revision: 69b9c221f65243562a5dc54cba45a083d1d046cc
2017-10-23 19:00:24 -05:00
Emilio Cobos Álvarez
726f98d5af servo: Merge #18988 - stylo: querySelector / querySelectorAll machinery (from emilio:qs); r=heycam
Bug: 1410624
Reviewed-by: heycam
Source-Repo: https://github.com/servo/servo
Source-Revision: eaba7ede232c9b556f22d67698eca5dc64ad4075
2017-10-23 08:14:35 -05:00
Xidorn Quan
299a7a9509 servo: Merge #18987 - Remove XBL as a separate cascading level in Stylo (from upsuper:xbl-cascade); r=emilio
In Gecko, we handle XBL rules like author rules everywhere, except that XBL rules are added and sorted in an independent step, behave as if it has a separate level.

It is not clear to me why Stylo chose to add a separate level for XBL rules, but it doesn't seem that there is anything special to do with XBL rules.

This bug happens because we don't handle XBL important rules which are handled as part of author rules in Gecko due to lack of the additional level there. We should just follow what Gecko does here and handle them all the same.

(This is the Servo part of [bug 1408811](https://bugzilla.mozilla.org/show_bug.cgi?id=1408811))

Source-Repo: https://github.com/servo/servo
Source-Revision: 819dff79087d2c45203d97f9837dd0e07513304e
2017-10-23 01:36:07 -05:00
Xidorn Quan
4251860b62 servo: Merge #18962 - Support matching for ::-moz-tree-* pseudo-elements (from upsuper:tree-pseudos); r=emilio
This is the Servo side change of [bug 1397644](https://bugzilla.mozilla.org/show_bug.cgi?id=1397644).

Source-Repo: https://github.com/servo/servo
Source-Revision: b1e6f05ae455748f6091ddf81c1c0488e09546a1
2017-10-20 04:18:53 -05:00
Cameron McCormack
0c7897b655 servo: Merge #18936 - style: Keep track of document state dependencies (from heycam:document-state); r=emilio
Servo half of https://bugzilla.mozilla.org/show_bug.cgi?id=1390694, reviewed there by Emilio.

Source-Repo: https://github.com/servo/servo
Source-Revision: 44eeb1999b2bf1729ff8ae41438c687f6380e33d
2017-10-20 02:56:47 -05:00