Commit graph

6749 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
d65b29da27
style: Add CssPropFlags::SerializedByServo and use it on some simple properties.
The idea is to turn the simple properties into a blacklist instead really soon,
and fix the offending ones soon after, so that only shorthands and properties
with layout dependence (and maybe the scrollbar properties, because the poke at
LookAndFeel) are not serialized by Servo.

Bug: 1467536
Reviewed-by: xidorn
MozReview-Commit-ID: JTLNnmXzny8
2018-06-12 12:15:16 -07:00
Emilio Cobos Álvarez
011cad2534
style: Add a Servo API to get the serialized style of a property.
This is intended to be used by GetComputedStyle when there's no layout
dependency.

Bug: 1467536
Reviewed-by: xidorn
MozReview-Commit-ID: 3GAbjo1uQ34
2018-06-12 12:15:16 -07:00
Dan Glastonbury
5f74a15f38
style: Extract {animated,computed}::Color common parts.
Extract the common parts of `animated::Color` and `computed::Color` out
into `generics::color::Color<T>` that is generic over the type of
RGBA color.

Bug: 1465307
Reviewed-by: xidorn
MozReview-Commit-ID: EymSr7aqnAP
2018-06-12 12:15:15 -07:00
Dan Glastonbury
314b14d46e
style: Fix nsStyleBorder::mBorderColor for GCC.
GCC doesn't like StyleComplexColor with constructor in an anonymous
struct in an anonymous union.  Replace the use of a union to access
`mBorder[..]Color` fields as an array with an accessor methods.

Bug: 1465307
Reviewed-by: xidorn
MozReview-Commit-ID: 1Wulh1qKYCZ
2018-06-12 12:15:15 -07:00
Emilio Cobos Álvarez
cdbc409759
style: Trivially simplify a condition.
Bug: 1466963
Reviewed-by: xidorn
MozReview-Commit-ID: L9LzpPt4js4
2018-06-12 12:15:15 -07:00
Emilio Cobos Álvarez
3c7fb2a217
style: Add a before-change callback to remove_property.
Bug: 1466963
Reviewed-by: xidorn
MozReview-Commit-ID: 4vyN9iLT7e3
2018-06-12 12:15:14 -07:00
Emilio Cobos Álvarez
6ca324f8b5
style: Remove unused PropertyDeclarationBlock::set_importance.
Bug: 1466963
Reviewed-by: xidorn
MozReview-Commit-ID: 1YrlOvktag9
2018-06-12 12:15:14 -07:00
Emilio Cobos Álvarez
e052666153
style: Fix a typo.
Nobody looks at the result from parsing, but this is the right thing to return.

Bug: 1466963
Reviewed-by: xidorn
MozReview-Commit-ID: 9P5VARiPIAk
2018-06-12 12:15:13 -07:00
Emilio Cobos Álvarez
9c51d31b05
style: Inline some trivial bits.
Bug: 1466963
Reviewed-by: xidorn
MozReview-Commit-ID: A219QehiMqZ
2018-06-12 12:15:13 -07:00
Dan Glastonbury
255fe05d40
style: Extend StyleComplexColor to support additive blending.
Refactored StyleComplexColor to support "complex" blending between
background (numeric) color and foreground color (currentColor).
Made explicit the distinction between numeric, currentColor and a
complex blend in Gecko and Stylo.

This is to support SMIL animation, for example, of the form:

     <animate from="rgb(10,20,30)" by="currentColor" ... />

Bug: 1465307
Reviewed-by: hiro,xidorn
MozReview-Commit-ID: IUAK8P07gtm
2018-06-12 12:15:13 -07:00
Boris Zbarsky
3816143a1d
style: Use Atomic<bool> for the staticpref version of layout.css.font-variations.enabled.
Atomic<bool> is implemented in terms of AtomicBase<uint32_t>, because that way
you don't need to depend on atomic 1-byte operations.  That means that the rust
bindgen sees it as a u32, not a bool.

It's a bit concerning that the rust code seems to be doing an unsynchronized
read here, but given this is a RelaxedAtomic, that's probably ok.

Bug: 1467134
Reviewed-by: emilio
2018-06-12 12:15:12 -07:00
Emilio Cobos Álvarez
915c8725ae
style: Remove PropertyId::name.
It's only used for the error path in property parsing, so most of the time is
not useful.

Use the just-introduced NonCustomPropertyId::name to preserve the alias name,
which we were doing by passing the name around.

Bug: 1466645
Reviewed-by: xidorn
MozReview-Commit-ID: 46xxZKCoeBB
2018-06-12 12:15:12 -07:00
Emilio Cobos Álvarez
7529788375
style: Make getting a property name explicitly an indexing operation.
The six milliseconds spent in Olli's profile make me thing this is not getting
optimized and we expected.

Also move it to NonCustomPropertyId, so it works for aliases properly too.

Bug: 1466645
Reviewed-by: xidorn
MozReview-Commit-ID: 4d76Z55ZBEH
2018-06-12 12:15:12 -07:00
Emilio Cobos Álvarez
c6e43c0329
style: Avoid useless allocations in custom property name serialization.
And make transition-property more correct by serializing --0 unescaped instead
of escaped.

Bug: 1466645
Reviewed-by: xidorn
MozReview-Commit-ID: CCBSe5Frd0d
2018-06-12 12:15:11 -07:00
Emilio Cobos Álvarez
63ca2a803d
style: Make clearing atoms slightly more ergonomic.
I prefer to do it this way because Atom has inline paths for static atoms and
such.

Bug: 1466609
Reviewed-by: xidorn
MozReview-Commit-ID: CFsBHl80KDY
2018-06-12 12:15:11 -07:00
Emilio Cobos Álvarez
d461a7ddbe
style: Make the threadsafe refcounting macros more reusable.
Bug: 1466609
Reviewed-by: xidorn
MozReview-Commit-ID: IanxqRksGqE
2018-06-12 12:15:10 -07:00
Emilio Cobos Álvarez
2c0a19e517
style: Move some parsing-only attributes to use #[parse(..)] instead of #[css(..)].
I need to admit I'm ambivalent about this one :).

Bug: 1466609
Reviewed-by: xidorn
MozReview-Commit-ID: F1jlfnQKXwo
2018-06-12 12:15:10 -07:00
Emilio Cobos Álvarez
8821ad72f4
style: Make pseudo-elements work with :host.
Imported WebKit's test as a WPT.

Bug: 1465291
Reviewed-by: xidorn
MozReview-Commit-ID: 19ZThuoqKLW
2018-06-12 12:15:10 -07:00
Emilio Cobos Álvarez
8d069d127a
style: Work around a bindgen bug on Android.
Bug: 1466406
Reviewed-by: xidorn
MozReview-Commit-ID: 2lltjH7IoZu
2018-06-12 12:15:09 -07:00
Emilio Cobos Álvarez
f829300751
style: Don't look at the rule type from value parsing.
This would cause properties to change the value semantics between, e.g.,
@keyframes and non-@keyframes, which would be observable.

It happens not to be observable since the animation-* and transition-*
properties are not allowed in @keyframes, nor have bits in `contain`, and none
of the two properties are allowed in @page. But I think it's the right thing to
do.

This still causes a quirk like a property value in chrome / user origins being
potentially different if the value is specified via CSS var functions. But I
think that is fine.

Bug: 1466136
Reviewed-by: hiro
MozReview-Commit-ID: GhoPt0I34oO
2018-06-12 12:15:09 -07:00
Emilio Cobos Álvarez
710184b670
style: Sprinkle some #[inline] on methods that have inline fast-paths.
MozReview-Commit-ID: 5kOmctLTAX0
2018-06-12 12:15:09 -07:00
Emilio Cobos Álvarez
2baa794de6
style: Sprinkle some inline in methods that are just pointer-chasing or function calls.
MozReview-Commit-ID: 8G2NQPBVuXn
2018-06-12 12:15:08 -07:00
Emilio Cobos Álvarez
4b10b2a7f2
style: Update smallbitvec to v2.1.1.
Actual code changes reviewed upstream in:

  https://github.com/servo/smallbitvec/pull/12

Bug: 1466647
MozReview-Commit-ID: 3vKVPMovBj
2018-06-12 12:15:08 -07:00
Emilio Cobos Álvarez
0f1b79327f
style: Minor indentation cleanup.
MozReview-Commit-ID: JmilaCX3rNy
2018-06-12 12:15:07 -07:00
Emilio Cobos Álvarez
618eef77eb
style: Don't hide -moz-box / -moz-inline-box yet.
I'd really prefer to not land this patch, but...

Bug: 1288572
Reviewed-by: mats
MozReview-Commit-ID: HzmvhTd32gz
2018-06-12 12:15:07 -07:00
Emilio Cobos Álvarez
cf7b10a32d
style: Hide -moz- display values from content behind a pref.
Bug: 1288572
Reviewed-by: xidorn
MozReview-Commit-ID: HDQPub043H1
2018-06-12 12:15:07 -07:00
Emilio Cobos Álvarez
1da798e65b
style: Introduce css(parse_condition).
This will allow us to add a pref for this, and to parse it only on chrome easily.

Bug: 1288572
Reviewed-by: xidorn
MozReview-Commit-ID: L1rsyc2A2hu
2018-06-12 12:15:06 -07:00
Emilio Cobos Álvarez
ce5a85d6a1
style: Use custom_properties::Name in TransitionProperty.
Bug: 1419695
Reviewed-by: xidorn
MozReview-Commit-ID: BUSWrcA5hkw
2018-06-12 12:15:06 -07:00
Emilio Cobos Álvarez
90ef5607e4
style: Move TransitionProperty where it belongs.
Bug: 1419695
Reviewed-by: xidorn
MozReview-Commit-ID: 9PN6VfbDbLA
2018-06-12 12:15:05 -07:00
Emilio Cobos Álvarez
f6f421f5aa
style: Hide multiple -moz-window-* properties from content.
Bug: 1419695
Reviewed-by: xidorn
MozReview-Commit-ID: Jsqt3kqjPiq
2018-06-12 12:15:05 -07:00
Emilio Cobos Álvarez
6940787916
style: Make the transition-property code make more sense.
We were working around the lack of alias support during parsing in
TransitionProperty by doing a Gecko lookup. That's a hack and is now gone.

Bug: 1419695
Reviewed-by: xidorn
MozReview-Commit-ID: EptUvJNTrZr
2018-06-12 12:15:04 -07:00
Emilio Cobos Álvarez
35a1a30f6b
style: Remove invalid assertion.
We can look at stale styles while trying to figure out if we need any
invalidation, and that's ok.

Bug: 1449243
MozReview-Commit-ID: 4mBIFNm9qJv
2018-06-12 12:15:04 -07:00
Yusuf Sermet
ea5417b29c
style: Make contain:paint trigger clipping independent of the overflow property.
Bug: 1465250
Reviewed-by: mattwoodrow
MozReview-Commit-ID: 2QbfZD1jnWX
2018-06-12 12:15:03 -07:00
Matt Brubeck
f6404f0ec2 Update dependencies to use new_debug_unrechable
Because reem/rust-debug-unreachable#6 makes `debug_unreachable` enable debug checks even in release builds since Rust 1.0.
2018-06-06 08:54:51 -07:00
Emilio Cobos Álvarez
8777c4ee63
style: followup: set the rule type in the custom properties code, since we use it.
Though I think it may be slightly fishy if used in, e.g., a @keyframes block.

For our purposes right now it doesn't make a difference, I think.

Bug: 1466008
MozReview-Commit-ID: A7VCTOqaIuB
2018-06-02 12:08:58 +02:00
Emilio Cobos Álvarez
600f19540e
style: Make PropertyId::parse less of a footgun.
Bug: 1466095
Reviewed-by: xidorn
MozReview-Commit-ID: 2BmtSDPmHj9
2018-06-02 12:08:40 +02:00
Emilio Cobos Álvarez
5db1387f39
style: Make will-change honor prefs properly, and clean it up while at it.
Bug: 1466008
Reviewed-by: xidorn
MozReview-Commit-ID: JyzwaRgf5Ct
2018-06-02 12:08:25 +02:00
Nazım Can Altınova
93472bcdea
style: Merge ServoDeclarationBlock and DeclarationBlock.
Bug: 1464496
Reviewed-by: emilio
MozReview-Commit-ID: By9fV70Oq0K
2018-06-02 12:08:06 +02:00
Dan Glastonbury
4108b1b278
style: Change nscolor to StyleComplexColor in SVG properties.
Change mStopColor, mFloodColor, and mLightingColor in nsStyleSVGReset.

Bug: 1457353
Reviewed-by: xidorn
MozReview-Commit-ID: KMRMtHk1jNK
2018-06-02 12:07:42 +02:00
Morgan Rae Reschenberg
0bfd1dc5c0
style: Add contain:size and contain:content parsing functionality.
Bug: 1463589
Reviewed-by: emilio
MozReview-Commit-ID: 4fOqln3oOpC
2018-06-02 12:07:28 +02:00
Emilio Cobos Álvarez
5507d53611
style: Make element-backed pseudos inherit from NAC subtree roots and other NAC inherit from their parents.
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.

Bug: 1460382
Reviewed-by: heycam
MozReview-Commit-ID: IDKYt3EJtSH
2018-06-02 12:07:07 +02:00
Emilio Cobos Álvarez
92e2adf45f
style: Cleanup transform animation.
Reviewed-by: hiro
But: 1465066
MozReview-Commit-ID: D9rq8CZIgf5
2018-06-02 12:06:22 +02:00
Emilio Cobos Álvarez
d5e19a146e
style: Some trivial cleanup.
Bug: 1464865
Reviewed-by: xidorn
MozReview-Commit-ID: 8ClaBR9ooGb
2018-06-02 12:06:05 +02:00
Emilio Cobos Álvarez
142c9eca4b
style: Don't let @namespace rules that aren't going to be inserted affect the namespace map.
Bug: 1464865
Reviewed-by: xidorn
MozReview-Commit-ID: 9bjlEBExqsr
2018-06-02 12:05:47 +02:00
Emilio Cobos Álvarez
e77a28d543
style: trivial TopLevelRuleParser construction cleanup.
MozReview-Commit-ID: 5CdOdQPZzyb
2018-06-02 12:05:41 +02:00
Hiroyuki Ikezoe
378fcc2b6a
style: Implement the smarter interporation for transform.
Corresponding to this spec change;
32812668df

The expected value in test_transitions_per_property.html can be calculated;

  'start' + ('end' - 'start') * 0.25

Bug: 1464647
Reviewed-by: birtles, emilio
MozReview-Commit-ID: NI9gOUuPnG
2018-06-02 12:05:11 +02:00
Yusuf Sermet
f0fbcf204e
style: Create a stacking context for contain:paint.
Bug: 1463599
Reviewed-by: mattwoodrow
MozReview-Commit-ID: Ln72MOlHXwi
2018-06-02 12:04:48 +02:00
Emilio Cobos Álvarez
f4cff20649
style: Appease tidy. 2018-05-28 16:02:31 +02:00
Emilio Cobos Álvarez
38cbada278
style: Optimize QuerySelector in shadow trees.
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).

Bug: 1464428
Reviewed-by: xidorn
MozReview-Commit-ID: CqOh0sLHf6o
2018-05-28 16:02:31 +02:00
Emilio Cobos Álvarez
82e97b8ec5
style: The fix: scale and translate appropriately.
Loops are hard. This hasn't been the funniest Saturday evening.

Bug: 1459403
Reviewed-by: hiro
MozReview-Commit-ID: I8rfuIRIsrY
2018-05-28 16:02:31 +02:00