Currently, NAC always inherits from the closest non-NAC ancestor element,
regardless of whether it is for an element-backed pseudo or not.
This patch changes the inheritance so that for element-backed pseudos, we
inherit from the closest native anonymous root's parent, and for other NAC we
inherit from the parent.
This prevents the following two issues and allows us to remove the
NODE_IS_NATIVE_ANONYMOUS flag:
* Avoiding inheriting from the non-NAC ancestor in XBL bindings bound to NAC.
- This is no longer a problem since we apply the rule only if we're a
pseudo-element, and all pseudo-elements are in native anonymous subtrees.
- This also allows to remove the hack that propagates the
NODE_IS_NATIVE_ANONYMOUS flag from the ::cue pseudo-element from
BindToTree.
* Inheriting from the wrong thing if we're a nested NAC subtree.
- We no longer look past our NAC subtree, with the exception of
::-moz-number-text's pseudo-elements, for which we do want to propagate
::placeholder to.
A few rules from forms.css have been modified because they're useless or needed
to propagate stuff to the anonymous form control in input[type="number"] which
previously inherited from the input itself.
MozReview-Commit-ID: IDKYt3EJtSH
Just leaving enough for style and tests to compile. Otherwise it's really
confusing, specially when looking for webidl stuff, and can confuse contributors
too.
I prefer to keep the rest as is, since the rest I do sync (semi) manually.
Reviewers: xidorn,heycam
Bug #: 1464834
Differential Revision: https://phabricator.services.mozilla.com/D1434
MozReview-Commit-ID: HtxzJ29Pjkp
Corresponding to this spec change;
32812668df
The expected value in test_transitions_per_property.html can be calculated;
'start' + ('end' - 'start') * 0.25
MozReview-Commit-ID: NI9gOUuPnG
--HG--
extra : rebase_source : 2eff1fee211a7f4a9be0593b3fae6816f91a3831
Pretty much the same setup we have for document.
We have the awkwardness of having to check containing shadow manually for
ShadowRoot because it's not available in TNode (and making it available added a
bit more complexity that wasn't worth it IMO).
MozReview-Commit-ID: CqOh0sLHf6o
The skew resetting of temp I think fixes a bug in presence of skew in every
direction, but again haven't double-checked.
MozReview-Commit-ID: Bn93CoaG8Bu
Per bug 1322189 we really should. I've copied the setup we have already for
translate / scale, but we should really clean this up a bit more I'd think.
In any case, probably skew should be matched as well...
MozReview-Commit-ID: Jky5k8HVfuH
This patch:
* Makes StyleStructID an enum class, and moves it to the mozilla namespaces.
* Introduces StyleStructConstants with some constants scattered through the
codebase.
* Makes the computed style bits an enum class, and splits mPseudoType and mBits
into their own members, since we were using a uint64_t when we have only a
couple flags and CSSPseudoElementType is a byte. We statically assert that
the number of style structs is less or equal to 32.
* Makes mPseudoTag, mPseudoType and mBits const, since we don't want them to be
mutated from C++, and we still need a few more refactorings (mostly getting
rid of FinishStyle) to avoid mutating ComputedStyle instead.
MozReview-Commit-ID: 7qsTtASGcYB
Pretty much the same setup we have for document.
We have the awkwardness of having to check containing shadow manually for
ShadowRoot because it's not available in TNode (and making it available added a
bit more complexity that wasn't worth it IMO).
MozReview-Commit-ID: CqOh0sLHf6o
Also call them "resolve" since it's the general term for computing something
more specific than what you have.
Though I don't feel strongly about that, feel free to push back.
MozReview-Commit-ID: KtqjzlppZLp
--HG--
extra : rebase_source : bc98820991f8858486f7bbaab929bc60d4d39b0c
And also remove ComputedImageUrl::from_url_value_data.
MozReview-Commit-ID: 5zifQlU7tOz
--HG--
extra : rebase_source : 23631ad2e9144cf30951a3d07421a8e5ae0ba8ec
All callsites already assert, so moving the assertion into the method
should be fine. It is not expected to handle a null image value anyway.
MozReview-Commit-ID: J8CA8m22eSv
--HG--
extra : rebase_source : e4d524263363393d3d0388ede8efcae096917546
There were a check in CssUrl::parse_from_string for extra data, which
was removed as part of servo/servo#16241, so it never fails now.
CssUrl::from_url_value_data doesn't seem to need Result from the very
beginning. It is unclear why it was made that way.
MozReview-Commit-ID: LXzKlZ6wPYW
--HG--
extra : rebase_source : baa4eb68b7c6b0042bd01108d3e6631c3cdf01a8
For now just return sans-serif, though as the FIXME comment indicates we should
probably just carry around the font-name instead.
MozReview-Commit-ID: CIPbV3R5Ul
--HG--
extra : rebase_source : ce8666e747341d203d655e937501806c1646331b
This is needed to serialize computed URLs correctly from getComputedStyle.
MozReview-Commit-ID: 9wakhqNrszb
--HG--
extra : rebase_source : 7d120ac0917a5e13de4e52b7dfa0d784495fd8f7
This removes some dubious font-family code too.
It ensures that vector longhands have a proper clone implementation
auto-generating it using `collect()`.
MozReview-Commit-ID: FkdnbTkeF6E
--HG--
extra : rebase_source : 8574eda5b65be614fc2daea8b2ded4c09f0a186e
Our implementation is totally not what the spec says, but totally what other
UAs do, see https://github.com/w3c/csswg-drafts/issues/2474.
So given this is causing webcompat pain, I think we should be pragmatic and just
unprefix this.
We could keep serialization and getComputedStyle with ::selection working with a
bit more effort, like we do for :-moz-placeholder, but I'd prefer not doing at
least the serialization bit, and just alias in nsCSSPseudoElements
:-moz-selection to selection too.
MozReview-Commit-ID: 6lxctozRDqv
It seems that the result of hash algorithm used in bloom filter depends
on the pointer length. On 64bit platforms, there are 135 false positives
in the first part of that test, and 8 in the second part. However, on
32bit platforms, the numbers become 157 and 16 correspondingly.
16 is still less than 20% in the second part, so all fine, but 157 is
slightly larger than 15% in the test assertion. Given it is what we are
shipping, we probably should just accept this and loosen the assertion.
MozReview-Commit-ID: 9kFXBzLFAzE
--HG--
extra : rebase_source : 41fa45dc3c59b2f44d33bdbe86b3eb2e29a31319
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
It's not sound to insert random matrices in random positions in the transform
operation list.
I cannot make any sense of what the old code was trying to do.
MozReview-Commit-ID: 5BtCiueEPlR
This also changes their ToCss impl to use SequenceWriter instead of
checking has_value manually.
SpecifiedValueInfo for those types are also implemented in this patch.
MozReview-Commit-ID: 23h2VWS417H
--HG--
extra : source : f2c10917b105912bbe5fa06a986bbce08ebceac4
This will be used in the next patch for font-variant bitflag types.
MozReview-Commit-ID: 2IvcsnYBNqA
--HG--
extra : source : a4cd0a8db99c2a46af183d44807dffb2a1a88e3f
This is the basic structure of the stuff. Following patches will fill
the gap between Gecko and Servo on value generating, and finally hook
it into InspectorUtils.
MozReview-Commit-ID: KNLAfFBiY6e
--HG--
extra : source : e9e5d72857746710ead3cd42481b805efc771389
System font keywords are not a valid value for those properties.
The newly-added #[css(skip)] would be reused by deriving algorithm of
SpecifiedValueInfo to skip them as well.
MozReview-Commit-ID: EmnhkaA9RR5
--HG--
extra : source : d2fc92ed32f497ff6826228181b19787c1b48cc4
Shipped since Firefox 48, other browsers have similar impls, and the related
spec has been in CR since a while ago.
The syntax of this property as implemented should be considered to be pretty
stable, so we can remove this pref.
MozReview-Commit-ID: H7lDsdbUamD
--HG--
extra : rebase_source : fda63805d9dea49a55d57153c841426508a882f6
The only difference in the final result is "all" shorthand, for which
the original result is wrong because "all" shorthand doesn't accept any
value other than the CSS-wide keywords.
MozReview-Commit-ID: BmT7kGwC0ZQ
--HG--
extra : rebase_source : 094d764007359cb928f4c31a3818448f254a4043
extra : source : 10d25cf7b4ff2b5615a638031f98dc6163708545
Most of types just derive it using proc_macro directly. Some of value
types need manual impl.
In my current plan, this new trait will be used in bug 1434130 to expose
values as well.
MozReview-Commit-ID: LI7fy45VkRw
--HG--
extra : rebase_source : a765e43b0c615e5f47bddb90ba6fa24bfc06959e
extra : source : 60812c1b190d90602bc6d49477fe1f558a53cd51
I didn't bother not shifting there. We need to load the whole thing and shift
for at least one of cascade level / shadow cascade order.
Callers of level() other than for_rule_tree are non-existent in release builds,
so we'd be doing the shift anyway. I can implement the same thing for
shadow_cascade_order too, but I don't think that optimization is measurable in
any way, either, the compiler should make the decision.
And just in case, the simpler version actually generated less instructions in:
https://play.rust-lang.org/?gist=ceadb0d3cbce4eeca76e4d9ab9a1c744&version=nightly
with the simple thing.
MozReview-Commit-ID: 8xPBJmlcyKh
If I had to write that again I would've killed myself :).
This is still not perfect, and the system font code is still quite a mess, but
well, little steps.
MozReview-Commit-ID: BmrZlCSejo7
This patch is meant to be squashed with the following two. This is an initial
strawman implementation that I wrote to unblock jwatt, cleanups and fixes
follow.
Note that this is style pretty much untested until jwatt's patches are ready,
since Gecko doesn't understand the angle at all, but I expect the fixes to be
minor.
MozReview-Commit-ID: 1Nq5DyCjaZe