Commit graph

86 commits

Author SHA1 Message Date
Manish Goregaokar
603c9439bb
Fix some warnings 2016-09-09 13:27:33 +08:00
UK992
93a103ba73 Reorder use statements 2016-09-09 04:55:19 +02:00
Simon Sapin
3ce64fd269 Rename DeclarationBlock to ApplicableDeclarationBlock
Make it more different from PropertyDeclarationBlock
2016-09-06 14:17:26 +08:00
Manish Goregaokar
f72cd7ffbc
Review fixes and bindings resync 2016-09-02 08:58:41 +05:30
Manish Goregaokar
0d4c5674ec
Handle RawGeckoElement and friends, add support for types which are used in both maybe-null and non-null forms 2016-09-02 08:56:51 +05:30
Manish Goregaokar
de90f5fce8
Add MaybeOwned, and use for ServoNodeData. More docs. 2016-09-02 08:56:49 +05:30
Manish Goregaokar
36c63db5d4
Rename sugar::refptr to sugar::ownership 2016-09-02 08:56:47 +05:30
Manish Goregaokar
9f6b772bbb
Make Arc helpers into methods 2016-09-02 08:56:42 +05:30
bors-servo
bbfe38e35f Auto merge of #13134 - servo:archery, r=emilio
Add lots of Arc’s in style, and prepare for using DOMRefCell

<!-- Please describe your changes on the following line: -->

`DOMRefCell` usage is not there year because of thread-safety questions, but I have this much already that I’d like to land before it bitrots.

r? @emilio

---
<!-- 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
- [ ] These changes fix #__ (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require new tests because refactor

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/13134)
<!-- Reviewable:end -->
2016-08-31 16:30:56 -05:00
Simon Sapin
95033e1c0d Add any_important and any_normal methods to PropertyDeclarationBlock 2016-08-31 13:41:38 +02:00
Simon Sapin
acc38aa8c2 Use Arc<PropertyDeclarationBlock> everwhere it’s appropriate. 2016-08-31 02:34:07 +02:00
Emilio Cobos Álvarez
fd9cd2f103
layout: Keep track of whether we've deferred the painting of the document due to
a script query.

This will, rather unfortunately, mean that we might repaint two times if we've
deferred a paint, then get an out-of-band reflow. Still seemed better than not
suppressing paints at all.

Fixes #13131
2016-08-30 17:01:03 -07:00
Bobby Holley
122df8ca60 Implement GeckoChildrenIterator to traverse anonymous children. 2016-08-26 09:55:39 -07:00
Bobby Holley
1799b0a5df Remove unused children_count method from TNode.
The semantics of this method with respect to anonymous children are unclear.
Thankfully it's unused, so we can remove it.
2016-08-26 09:36:53 -07:00
Bobby Holley
b56297f2a5 Make ChildrenIterator concrete.
This will allow us to specialize ChildrenIterator in the Gecko case to do
something more interesting in some cases.
2016-08-26 09:36:53 -07:00
Xidorn Quan
2f4d6b5ce1 Make GeckoDeclarationBlock refcounted. 2016-08-23 09:42:12 +10:00
Simon Sapin
16bbc2f26e Merge normal and important declarations in style rules.
Have a single Vec instead of two. Fix #3426
2016-08-21 03:40:35 +02:00
Simon Sapin
4062899fd8 Import SelectorMap back from the selectors crate.
Nobody else uses it, and I want to make breaking changes to it.
2016-08-21 03:40:30 +02:00
Simon Sapin
bc71e8b65b Add some fmt::Debug implementations 2016-08-21 03:40:28 +02:00
bors-servo
07b217368f Auto merge of #12924 - servo:selectors-ser, r=nox
Update selectors to 0.10, with ToCss serialization.

<!-- Please describe your changes on the following line: -->
r? @emilio

---
<!-- 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
- [ ] These changes fix #__ (github issue number if applicable).

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/12924)
<!-- Reviewable:end -->
2016-08-19 13:01:29 -05:00
Emilio Cobos Álvarez
d85a60e366
stylo: Use the improved version of Gecko_GetStyleContext() 2016-08-18 15:56:03 -07:00
Simon Sapin
d690bd2382 Update selectors to 0.10, with ToCss serialization. 2016-08-18 14:46:24 +02:00
Emilio Cobos Álvarez
3af774bd75
Rewrite the style sharing candidate cache.
The style candidate cache had regressed a few times (see #12534), and my
intuition is that being able to disable all style sharing with a single rule in
the page is really unfortunate.

This commit redesigns the style sharing cache in order to be a optimistic cache,
but then reject candidates if they match different sibling-affecting selectors
in the page, for example.

So far the numbers have improved, but not so much as I'd wanted (~10%/20% of
non-incremental restyling time in general). The current implementation is really
dumb though (we recompute and re-match a lot of stuff), so we should be able to
optimise it quite a bit.

I have different ideas for improving it (that may or may not work), apart of the
low-hanging fruit like don't re-matching candidates all the time but I have to
measure the real impact.

Also, I need to verify it against try.
2016-08-17 14:16:16 -07:00
Manish Goregaokar
0d4d1b539e Add safer bindings for refcounted types across ffi 2016-08-17 12:30:31 +05:30
Michael Howell
8eb1a701db Stub out missing method in geckolib 2016-08-12 16:54:10 -07:00
Emilio Cobos Álvarez
a36762a9a2
style: Fix pseudo-element restyling. 2016-08-10 18:26:25 -07:00
Emilio Cobos Álvarez
1c322f35a6
Make RestyleDamage::compute take no optional argument, delegate the handling to the caller. 2016-08-10 18:26:24 -07:00
Emilio Cobos Álvarez
544a117911
style: Force to stop computing children if we find the parent has display: none. 2016-08-10 18:26:21 -07:00
Emilio Cobos Álvarez
40df81d537
stylo: Don't return unconditionally true for has_changed 2016-08-09 11:24:18 -07:00
Simon Sapin
cf05cd934d Bring back the Namespace newtype. 2016-08-09 18:18:41 +02:00
Simon Sapin
fdb2071b2d Update to selectors 0.8.2 2016-08-09 18:18:38 +02:00
bors-servo
939e0a5f89 Auto merge of #12725 - bholley:fix_leaks, r=emilio
stylo: fix leaks, and accept null in Servo_InheritComputedValues

This corresponds to changes in:

https://bugzilla.mozilla.org/show_bug.cgi?id=1291885
and
https://bugzilla.mozilla.org/show_bug.cgi?id=1291891

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/12725)
<!-- Reviewable:end -->
2016-08-03 20:20:21 -05:00
Bobby Holley
1e7307601d Properly deallocate PrivateStyleData.
In Servo_DropNodeData, we do Box::<NonOpaqueStyleData>::from_raw, which is off
by one level of indirection with the current types.
2016-08-03 17:20:21 -07:00
Emilio Cobos Álvarez
6d67525172
style: Refactor TRestyleDamage and TNode to accept/provide a "style source"
In the Gecko case, this style source would be the style context. In the servo
case, it will be always the computed values.

We could optimise this further in the case of stylo (from three FFI calls to
one) if we use an API of the form CalcAndStore(node, new_cv). But that would
imply borrowing the data twice from Servo (we also have borrow_data_unchecked
fwiw, but...).
2016-08-03 13:31:11 -07:00
Emilio Cobos Álvarez
1470d5b174
stylo: Allow computing change hints during the traversal. 2016-08-03 13:31:11 -07:00
Emilio Cobos Álvarez
611e611215
style: Rewrite the restyle hints code to allow different kinds of element snapshots, and use it for Gecko.
This is a rewrite for how style interfaces with its consumers in order to allow
different representations for an element snapshot.

This also changes the requirements of an element snapshot, requiring them to
only implement MatchAttr, instead of MatchAttrGeneric. This is important for
stylo since implementing MatchAttrGeneric is way more difficult for us given the
atom limitations. This also allows for more performant implementations in the
Gecko side of things.
2016-07-21 14:24:04 -07:00
Simon Sapin
6d0e48f6cc Remove some type aliases that are now just re-exports. 2016-07-20 08:42:47 +02:00
Simon Sapin
4b7060554b Rename ComputedValuesStruct to ComputedValues.
Doing this in a separate commit avoids mixups
with the ComputedValues trait that the previous commit removed.
2016-07-20 08:42:45 +02:00
Simon Sapin
789807b7b0 Remove the ComputedValue traits and style_struct_traits 2016-07-20 08:42:40 +02:00
Shing Lyu
f754cacbd5 Only restyle viewport-relative nodes on viewport size change 2016-07-18 11:01:42 +08:00
Manish Goregaokar
6a378a81da Resync bindings 2016-07-14 14:22:55 +05:30
Emilio Cobos Álvarez
73ba2c5984
stylo: Remove some unused imports and code 2016-07-08 01:47:28 -07:00
Emilio Cobos Álvarez
3037a59252
stylo: Implement dirtyness tracking for stylo. 2016-07-08 01:47:27 -07:00
Bobby Holley
a57c52c406 Regenerate bindings. 2016-07-07 19:51:48 -07:00
Bobby Holley
187a47d89d Remove get_attr from TElement. \o/ 2016-07-05 18:03:41 -07:00
Bobby Holley
1d8d1cb9d9 Upgrade rust-selectors. 2016-07-05 18:03:40 -07:00
Bobby Holley
364c8e2976 Add attr_equals to TElement.
Same reasons as the previous patch.
2016-07-05 18:03:38 -07:00
Bobby Holley
96af00fbb9 Add has_attr method to TElement.
If this is all the information the caller needs, we can get it from gecko without
worrying about atomization and string conversions.
2016-07-05 18:03:36 -07:00
Bobby Holley
7947afc699 Remove get_attrs from TElement.
This should just be a helper.
2016-07-05 18:03:35 -07:00
Anthony Ramine
a5b524d559 Move util::vec::ForgetfulSink to style::sink and simplify it 2016-07-04 16:48:14 +02:00