Commit graph

155 commits

Author SHA1 Message Date
FranklinDM
edc45f6849 Issue #1593 - Follow-up: Fix :host selector matching
Previously, we would match `:host` if:
(a) we don't have any arguments and our parent is the shadow root, or;
(b) if any of the arguments match, then reject if we don't have a containing shadow

Revised, we would match `:host` if:
(Preconditions) The element must have a shadow root, the selector must not have any feature selectors, and it is not blocked from matching `:host` (e.g. .matches outside of the shadow root context)
(a) The selector does not have any arguments, or;
(b) It matches any of its arguments in the functional part of the pseudo-class

With this, we now pass these tests that were previously failing:
http://wpt.live/css/css-scoping/css-scoping-shadow-host-rule.html
http://wpt.live/css/css-scoping/host-descendant-002.html
http://wpt.live/css/css-scoping/host-multiple-001.html
Improved (1 less red box):
http://wpt.live/css/css-scoping/css-scoping-shadow-host-namespace.html
2023-02-27 11:03:50 +08:00
FranklinDM
439c671b26 Issue #2078 - Follow-up: Propagate combinator restriction to :is()/:where()
Based on spec discussion: https://github.com/w3c/csswg-drafts/issues/5093
2023-02-23 21:15:40 +08:00
FranklinDM
83484a34f5 Issue #2078 - Follow-up: aPreventComplexSelectors should be passed 2023-02-23 21:15:12 +08:00
FranklinDM
53f5905381 Issue #2078 - Follow-up: Move isForgiving check to ParsePseudoClassWithSelectorListArg 2023-02-23 21:14:58 +08:00
FranklinDM
03a3385702 No issue - Move Has* function definition out of the header file for consistency 2023-02-23 21:14:41 +08:00
FranklinDM
9037d5662d Issue #1593 - Follow-up: Accept only a single selector in the argument of :host/:host-context
Current spec says these two pseudo-classes accept only a single compound selector:
:host( <compound-selector> )
:host-context( <compound-selector> )
2023-02-22 07:07:39 +08:00
FranklinDM
0391e8ab09 Issue #1593 - Follow-up: Copy mIsRelevantLink value over rather than calling IsLink
Calling IsLink ignores whatever state we have for aTreeMatchContext and will trigger an assertion if aTreeMatchContext.mForStyling is false. This also adds a comment about what that line effectively does.
2023-02-22 07:07:21 +08:00
FranklinDM
9bebb3a61a Issue #1593 - Follow-up: :host() should not automatically match if we have a non-empty selector list 2023-02-22 07:07:01 +08:00
FranklinDM
ba7e29a052 Issue #1823 - Ensure :host() and :host-context() are given proper weights 2023-02-22 07:06:43 +08:00
FranklinDM
6d77f755da Issue #2078 - Part 6: Replace empty list head with the next non-empty list for forgiving selector lists
What happens here if aListHead is an empty selector list:
(1) next selector group is parsed and continues to the next iteration if it's empty or invalid
(2) if we're a forgiving selector list and aListHead is empty, replace it with the selector group that we've just parsed
(3) step 1 ignores invalid/empty, so we assert that step 2 should never have an empty selector list
2023-02-22 07:06:24 +08:00
FranklinDM
4ece7873e0 Issue #2078 - Part 5: Ensure :is() and :where() are given proper weights 2023-02-22 07:06:05 +08:00
FranklinDM
1c1473166f Issue #2078 - Part 4: Unify selector list matching
This should allow pseudo-classes that accept selector lists to properly handle complex selectors. `:visited` is also matched inside selector lists.
A previous iteration of this commit had incorrect matching behavior when called from `RestrictedSelectorListMatches`.
2023-02-22 07:05:44 +08:00
FranklinDM
14e8922dca Issue #2078 - Part 3: Rename nsCSSRuleProcessor::SelectorListMatches to RestrictedSelectorListMatches
This is in preparation for merging the logic of RestrictedSelectorListMatches and AnySelectorInArgListMatches.
2023-02-22 07:05:25 +08:00
FranklinDM
0648ec64bb Issue #2078 - Part 2: Rename nsPseudoClassList->u.mSelectors to mSelectorList
This makes it clear that we're accessing a selector list (nsCSSSelectorList), which is different from the selectors (nsCSSSelector) contained inside a selector list. Previously, both were confusingly referred to as mSelectors.
2023-02-22 07:05:08 +08:00
FranklinDM
453b715ef6 Issue #2078 - Part 1: Update CSS rule processor to handle :is() and :where() CSS pseudo-classes
This modifies selector list parsing to accommodate being "forgiving". Aliases for the :is selector's former names were also included. Note that the older and prefixed variant `-moz-any` remains unforgiving.
2023-02-22 07:04:49 +08:00
FranklinDM
6d3500bb48 Issue #2111 - Implement CSSStyleRule.selectorText setter
Unlike the original patch, this copies Chrome behavior: ignores invalid values of selectorText without any console log.

Partially based on https://bugzilla.mozilla.org/show_bug.cgi?id=37468
2023-02-21 08:20:21 +08:00
FranklinDM
56e636d8ec Issue #2084 - Part 2: Simplify logic in CSSParserImpl::LookupKeywordPrefixAware
Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1259348
2023-01-10 07:41:39 +08:00
FranklinDM
db3ce13f28 Issue #2084 - Part 1: Remove CSSUnprefixingService.js and associated code
It's effectively dead code since it's been supplanted by built-in webkit-prefixed-CSS support (landed before fork point in Firefox 49).

Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1259348
2023-01-10 07:37:30 +08:00
Moonchild
e38f362d44 Issue #2075 - Part 5: Allow logical aliases in the property database. 2023-01-06 20:36:35 +08:00
Moonchild
1b22ef40f9 Issue #2075 - Part 4: Update tests
* Update reftests to use inset-*
* Update property database
* Update logical properties test
2023-01-06 20:36:22 +08:00
Moonchild
07af4123d1 Issue #2075 - Part 2: Update devtools for inset-* 2023-01-06 20:35:53 +08:00
Moonchild
0c37c0db8f Issue #2075 - Part 1: Rename offset-* logical properties to inset-*
This adds aliases behind a pref with the old offset-* names
2023-01-06 20:35:40 +08:00
Martok
3f073056de Issue #2030 - Pref-gate default button event dispatch logic 2022-12-02 23:56:21 +08:00
Moonchild
fa8bc1e81c Issue #1992 - Part 1: Un-prefix -moz-{min|max}-content keywords. 2022-09-23 11:03:34 +08:00
Moonchild
b27475f6a9 Issue #80 - Re-unify most of the layout engine 2022-09-09 10:12:59 +08:00
Moonchild
bbbfa54ee4 Issue #1970 - Part 5: Move combobox/select padding to the select rule.
This doesn't change behavior by default but allows authors to remove the padding
previously enforced to align with focus ring padding, if they wish to.
2022-08-04 14:24:57 +08:00
Moonchild
e54e8f61bb Issue #1970 - Part 2: Remove the extra padding on buttons
Extra padding was created for a prospective -moz-focus-inner ring.
We now just size that ring the same as the content frame, inflated by its CSS
padding.
2022-08-04 14:24:10 +08:00
Moonchild
afbfbcb1e1 Issue #1914 - Implement white-space: break-spaces
This also simplifies GetCSSWhitespaceToCompressionMode (FFS with the function
names, Mozilla!) to be less fragile.
2022-06-13 09:10:57 +08:00
FranklinDM
d81a856374 Fix property alias indentation 2022-05-04 10:11:06 +08:00
FranklinDM
317b7dec08 Issue #1853 - Follow-up: Add missing end of array marker to scrollbar width keyword table
This prevents the parser from accepting values outside the keyword table.
2022-05-04 10:10:58 +08:00
Brian Smith
13fcc4a046 Issue #1829 - Revert "Issue #1751" 2022-05-04 09:40:24 +08:00
FranklinDM
8a7587b401 Issue #21 - Remove use counters telemetry
This reverts Bug 968923 - Implement some equivalent of Chrome's use counters (on top of telemetry?)

For reference: https://bugzilla.mozilla.org/show_bug.cgi?id=968923
2022-04-28 10:43:09 +08:00
Moonchild
8d800b1cb0 Issue #21 - Remove Telemetry plumbing and fix build.
Note this won't give working applications. Requires FE changes and
additional js module changes (next part).
2022-04-28 10:25:48 +08:00
roytam1
92a1cc3139 Revert "Issue #21 - Remove use counters telemetry"
This reverts commit 8ca9db6b65.
2022-04-27 16:25:00 +08:00
FranklinDM
8ca9db6b65 Issue #21 - Remove use counters telemetry
This reverts Bug 968923 - Implement some equivalent of Chrome's use counters (on top of telemetry?)

For reference: https://bugzilla.mozilla.org/show_bug.cgi?id=968923
2022-04-27 16:15:31 +08:00
Moonchild
7c93047283 Issue #1885 - Allow unitless rootMargin entries for IntersectionObserver.
I could have done this through a CSSLoader to allow all CSS unit quirks but
I wasn't planning to start passing around document and element references
everywhere, so instead just did it manually by accepting numbers/floats in
addition to pixel and percent.
2022-04-25 20:52:00 +08:00
FranklinDM
37753e32a8 Issue #1881 - Interpret empty or whitespace root margin string as zero length
This attempts to get the first non-whitespace token, which if exists, continues with previous behavior of parsing the margin string. Otherwise, if the specified margin string is empty or consists only of whitespace characters, is interpreted as zero length.

IntersectionObserver is the only consumer of the `ParseMarginString` method, as far as I can tell, so this should not affect anything else.

Note: For some reason, Firefox and Chrome treat the unitless zero length as invalid, while with this change, we do not change existing behavior in that regard and continue to accept that value.
2022-04-25 20:51:48 +08:00
Jeremy Andrews
9bf01d6708 Issue #1593 - Part 4: Make :host pass DOM parsing test and basic specificity tests. 2022-04-21 21:52:56 +08:00
Jeremy Andrews
c373707516 Issue #1593 - Part 3: Add selector logic for :host and :host-context. 2022-04-21 21:52:52 +08:00
Jeremy Andrews
7472bc02be Issue #1593 - Part 1: Import William Chen's patches w/o selector implementation, fixed up. 2022-04-21 21:52:40 +08:00
roytam1
ecdf4bfb29 Revert "Issue #3024 - First pass support for :host and :host-context"
This reverts commit 4cc56c2cb6.
2022-04-21 21:51:52 +08:00
FranklinDM
e16a340a33 Issue #1838 - Follow-up: Prevent grid shorthand from resetting gutter properties
This also fixes crashing when using the grid shorthand property.
2022-04-19 22:05:56 +08:00
FranklinDM
3c6a52a0a6 Issue #1370 - Part 6: Update tests 2022-04-19 21:58:08 +08:00
FranklinDM
9dc59c43f1 Issue #1370 - Part 3: Implement content keyword for flex-basis property
Partially based on https://bugzilla.mozilla.org/show_bug.cgi?id=1105111
2022-04-19 21:56:35 +08:00
FranklinDM
870fee82e6 Issue #1838 - Part 7: Update tests 2022-04-19 21:56:17 +08:00
FranklinDM
b4f2c83687 Issue #1838 - Part 2: Remove grid- prefix from grid-(column|row)-gap properties
This removes the `grid` prefix from the gap-related properties of grid since they are now part of the box alignment specification. Former grid-gap* properties were aliased to the unprefixed properties to maintain compatibility.

The previously multi-column layout only `column-gap` property has been modified to apply to the Grid layout (and Flexbox in a following commit), moving the `mColumnGap` member variable from `nsStyleColumn` to `nsStylePosition`.

Notes:
* Bug 1398537 - support for percent values in column-gap for multi-column layout landed as part of Issue #1230. However, it was incomplete because it did not update `nsRuleNode` to allow transformation of percentage values for `column-gap`. This was consequently fixed as part of this commit.
* Bug 1456166 - this might not apply because we don't have that devtools test in UXP
* `nsRuleNode`, `nsCSSParser`, `Declaration`, and other related classes were merged into Stylo. These should be taken into consideration when porting patches from Mozilla.

Partially based on https://bugzilla.mozilla.org/show_bug.cgi?id=1398482
2022-04-19 21:55:52 +08:00
FranklinDM
4f059d2c8b Issue #1838 - Part 1: Remove CSS grid preference
Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1398492
2022-04-19 21:55:49 +08:00
Matt A. Tobin
4cc56c2cb6 Issue #3024 - First pass support for :host and :host-context 2022-03-22 22:57:05 +08:00
Moonchild
a05b76ff1a Issue #1781 - Follow-up: fix debug assert in MergeMultiplicativeR() 2021-07-28 10:10:09 +08:00
athenian200
efc6048941 Issue #1784 - Add -moz-dark-theme media query and allow prefers-color-scheme to follow it. 2021-06-24 11:10:22 +08:00