Commit graph

7387 commits

Author SHA1 Message Date
bors-servo
d461347adf Auto merge of #18484 - emilio:per-origin-sheets, r=SimonSapin
style: Store stylesheets per origin

This is the first step that will allow us to cache UA sheets across documents.

<!-- 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/18484)
<!-- Reviewable:end -->
2017-09-13 14:59:16 -05:00
Emilio Cobos Álvarez
d7a3bec6d7
style: Add a comment about why the raw pointer is ok. 2017-09-13 19:52:49 +02:00
Emilio Cobos Álvarez
31079e2e3d
style: Disable "removed" assertion in Gecko. 2017-09-13 19:12:49 +02:00
bors-servo
e50341d4a9 Auto merge of #18352 - jdm:serialize-fun, r=emilio
Make serialization match Gecko in a few corner cases

This addresses the testcases from https://bugzilla.mozilla.org/show_bug.cgi?id=1345218. Gecko differs from the specification by doing the following:
* reusing longhands that have previously been serialized in order to serialize shorthands
* immediately breaking out of the shorthand loop for the current property as soon as a shorthand is successfully serialized

https://github.com/w3c/csswg-drafts/issues/1774 is filed to track ways that the standard could be made more clear on these points.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix [bug 1345218](https://bugzilla.mozilla.org/show_bug.cgi?id=1345218).
- [X] There are tests for these changes

<!-- 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/18352)
<!-- Reviewable:end -->
2017-09-13 10:51:00 -05:00
Josh Matthews
5b83beaceb Consider serializing shorthands based on previously-serialized longhands. 2017-09-13 10:58:50 -04:00
Emilio Cobos Álvarez
02d1264047
style: Store stylesheets per origin.
This will allow us to cache UA sheets across documents.

MozReview-Commit-ID: 5rYIKTmC6iw
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-09-13 16:01:35 +02:00
Emilio Cobos Álvarez
a373ed3f9d
style: Expose and make Clone OriginSetIterator.
MozReview-Commit-ID: AEQLfYy4gDz
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-09-13 15:52:14 +02:00
bors-servo
8ee055fdc1 Auto merge of #18474 - nnethercote:malloc_size_of-tweaks, r=jdm
malloc_size_of tweaks

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

A couple of tweaks.
---
<!-- 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 #18473 (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because they are tested in Gecko.

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

<!-- 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/18474)
<!-- Reviewable:end -->
2017-09-13 08:02:45 -05:00
Boris Chiou
ce9f1ed143 Fix extremely small pixel value for transform on Servo.
Sometimes, we want to use extremely small pixel value in transform, e.g.
translate(calc(0.001px)), which should be rendered correctly together
with scale(100000). This patch only fixes this case for Servo because
Stylo still uses Au on the Gecko side, even if we pass pixel value into
FFI directly in the previous patch.
2017-09-13 18:10:47 +08:00
Boris Chiou
b89286e8e7 Use CSSPixelLength in LengthOrPercentage{*}.
Replace Au with CSSPixelLength in LengthOrPercentage,
LengthOrPercentageOrAuto, and LengthOrPercentageOrNone.
2017-09-13 18:10:46 +08:00
Boris Chiou
535c1e3c6f Replace Au with CSSPixelLength in CalcLengthOrPercentage.
We replace Au with CSSPixelLength for the length part of
computed::CalcLengthOrPercentage. Therefore, it would be easier to use
CSSPixelLength for all other LengthOrPercentage{*} types.
2017-09-13 18:10:39 +08:00
Boris Chiou
a949e2a057 Introduce CSSPixelLength and update NonNegativeLength.
First, we define computed::CSSPixelLength which contains a CSSFloat, a
pixel value, and then we replace computed::Length with CSSPixelLength.
Therefore, the |ComputedValue| of NoCalcLength, AbsoluteLength,
FontRelativeLength, ViewportPercentageLength, CharacterWidth, and
PhysicalLength is CSSPixelLength.

Besides, we drop NonNegativeAu, and replace computed::NonNegativeLength
with NonNegative<computed::Length>. (i.e. NonNegative<CSSPixelLength>)
2017-09-13 18:05:14 +08:00
Nicholas Nethercote
f83099f62a Make MallocSizeOf::malloc_{,enclosing_}size_of unsafe.
This fixes #18473.
2017-09-13 15:59:54 +10:00
Josh Matthews
191201de6c Serialize shorthands in preferred order. 2017-09-12 18:31:21 -04:00
bors-servo
b856f11388 Auto merge of #18459 - servo:kill-cvas, r=emilio
Kill ComputedValueAsSpecified 🔫

<!-- 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/18459)
<!-- Reviewable:end -->
2017-09-12 14:14:33 -05:00
Bobby Holley
50cee3e133 Eliminate RestyleData entirely.
Without this change, the previous commit increases the size of ElementData.

MozReview-Commit-ID: 87BZuXINiT9
2017-09-12 10:33:51 -07:00
Bobby Holley
61cad869d9 Hoist flags out of RestyleData.
MozReview-Commit-ID: 8emE83lykh3
2017-09-12 10:22:50 -07:00
bors-servo
7746896bc4 Auto merge of #18449 - tromey:remove-get_location_with_offset, r=jdm
Remove get_location_with_offset

Now that rust-cssparser reports 1-based locations, bump the required
cssparser version and remove get_location_with_offset.  Previously,
some code paths were not calling get_location_with_offset; see
https://bugzilla.mozilla.org/show_bug.cgi?id=1398869 for some
background.

---
<!-- 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 https://bugzilla.mozilla.org/show_bug.cgi?id=1398869 (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because tests are in rust-cssparser and/or M-C

<!-- 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/18449)
<!-- Reviewable:end -->
2017-09-12 09:44:53 -05:00
bors-servo
bffe158fa4 Auto merge of #18455 - nnethercote:measure-Arc-Locked-properly, r=jdm
Measure Arc<Locked<T>> fields properly.

Currently when we measure various Arc<Locked<T>> fields we don't measure the T
itself, but only the descendants of the T. This patch fixes this.

This fix requires introducing a new trait, MallocUnconditionalShallowSizeOf,
which is implemented for servo_arc::Arc. A similar trait,
MallocConditionalShallowSizeOf, is also introduced, though it has no uses as
yet.

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

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because they are tested in Gecko.

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

<!-- 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/18455)
<!-- Reviewable:end -->
2017-09-12 08:40:56 -05:00
Tom Tromey
4768597b13 Remove get_location_with_offset
Now that rust-cssparser reports 1-based locations, bump the required
cssparser version and remove get_location_with_offset.  Previously,
some code paths were not calling get_location_with_offset; see
https://bugzilla.mozilla.org/show_bug.cgi?id=1398869 for some
background.
2017-09-12 07:35:55 -06:00
Anthony Ramine
95f2d93960 Derive ToComputedValue for Image<..> 2017-09-12 14:34:17 +02:00
Anthony Ramine
7c31202dda Implement ToComputedValue for Box<T> 2017-09-12 14:34:16 +02:00
Anthony Ramine
4e64ccde60 Kill ComputedValueAsSpecified 🔫 2017-09-12 14:34:15 +02:00
Anthony Ramine
891789109b Do not use CVAS for the list-style-image property 2017-09-12 14:34:11 +02:00
Anthony Ramine
bf034a83e8 Do not use CVAS for FontSettings<T> 2017-09-12 13:39:55 +02:00
bors-servo
61fac2c10d Auto merge of #18456 - emilio:dead-code, r=upsuper
style: Remove an unused function.

Nobody will miss it.

<!-- 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/18456)
<!-- Reviewable:end -->
2017-09-12 06:11:58 -05:00
bors-servo
af077a7222 Auto merge of #18420 - servo:toml, r=nox,emilio
Get rustc commit hash from channel manifest

… added in https://github.com/rust-lang/rust/pull/44218, instead of using the GitHub API.

Also upgrade to rustc 1.22.0-nightly (d93036a04 2017-09-07).

<!-- 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/18420)
<!-- Reviewable:end -->
2017-09-12 05:01:24 -05:00
Simon Sapin
0d4168034f Un-inline some methods initializing thread_local! …
… in order to limit stack frame sizes after extra inlining from
https://github.com/rust-lang/rust/pull/43931

See https://github.com/servo/servo/pull/18420#issuecomment-328769322
2017-09-12 11:42:04 +02:00
Emilio Cobos Álvarez
4297630a22
style: Remove an unused function.
Nobody will miss it.
2017-09-12 08:54:40 +02:00
Nicholas Nethercote
779fbda81d Measure Arc<Locked<T>> fields properly.
Currently when we measure various Arc<Locked<T>> fields we don't measure the T
itself, but only the descendants of the T. This patch fixes this.

This fix requires introducing a new trait, MallocUnconditionalShallowSizeOf,
which is implemented for servo_arc::Arc. A similar trait,
MallocConditionalShallowSizeOf, is also introduced, though it has no uses as
yet.
2017-09-12 16:36:28 +10:00
Bobby Holley
8268217767 Avoid memmoving ValidationData more than necessary.
MozReview-Commit-ID: 70w3bZ2FU0W
2017-09-11 22:39:35 -07:00
Bobby Holley
74b4f95d71 Encapsulate the sharing cache backend better.
MozReview-Commit-ID: 2x9BIhmwH83
2017-09-11 22:39:34 -07:00
Bobby Holley
c409c2089c Fix an awful bug in LRUCache::touch().
MozReview-Commit-ID: 3l7L0MfdOxh
2017-09-11 22:39:33 -07:00
Bobby Holley
db67cd1759 Shorten the naming around the style sharing cache.
MozReview-Commit-ID: EcVQDLoxwFP
2017-09-11 22:39:31 -07:00
bors-servo
7f4cb1861b Auto merge of #18452 - nnethercote:bug-1398737, r=jdm
Overhaul MallocSizeOf and related things.

This patch makes the MallocSizeOf stuff in Stylo work more like the HeapSizeOf
stuff already in Servo, except better. In particular, it adds deriving support
for MallocSizeOf, which will make it easier to improve coverage.

The patch does the following.

- Combines servo/components/style/stylesheets/memory.rs and the heapsize crate
  into a new crate, malloc_size_of.

- Forks the heapsize_derive crate, calling it malloc_size_of, so that
  MallocSizeOf can be derived.

- Both the new crates have MIT/Apache licenses, like heapsize, in case they are
  incorporated into heapsize in the future.

- Renames the methods within MallocSizeOf and the related traits so they are
  more concise.

- Removes MallocSizeOfWithGuard.

- Adds `derive(MallocSizeOf)` to a lot of types, in some cases replacing an
  equivalent or almost-equivalent hand-written implementation.

- Adds stuff so that Rc/Arc can be handled properly.

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

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because tested on Gecko side.

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

<!-- 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/18452)
<!-- Reviewable:end -->
2017-09-11 22:11:25 -05:00
Nicholas Nethercote
32548e5312 Overhaul MallocSizeOf and related things.
This patch makes the MallocSizeOf stuff in Stylo work more like the HeapSizeOf
stuff already in Servo, except better. In particular, it adds deriving support
for MallocSizeOf, which will make it easier to improve coverage.

The patch does the following.

- Combines servo/components/style/stylesheets/memory.rs and the heapsize crate
  into a new crate, malloc_size_of.

- Forks the heapsize_derive crate, calling it malloc_size_of, so that
  MallocSizeOf can be derived.

- Both the new crates have MIT/Apache licenses, like heapsize, in case they are
  incorporated into heapsize in the future.

- Renames the methods within MallocSizeOf and the related traits so they are
  more concise.

- Removes MallocSizeOfWithGuard.

- Adds `derive(MallocSizeOf)` to a lot of types, in some cases replacing an
  equivalent or almost-equivalent hand-written implementation.

- Adds stuff so that Rc/Arc can be handled properly.
2017-09-12 12:37:51 +10:00
bors-servo
f91ea02bf7 Auto merge of #18451 - Manishearth:stylo-calc-fontsize, r=emilio
stylo: Add support for calcs in base size calculation

This tracks an offset along with the ratio for the keyword font size data.
The offset gets used when a calc is involved whilst inheriting font-size
(it is the computed value of that calc ignoring em/percentage portions,
which go into the ratio). If the family or language changes, the new font
size can be computed by taking the keyword's size in the context of that
family/language, multiplying it by the ratio, and adding the offset.

r=emilio https://bugzilla.mozilla.org/show_bug.cgi?id=1380980

<!-- 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/18451)
<!-- Reviewable:end -->
2017-09-11 21:01:57 -05:00
bors-servo
5cc2b4f705 Auto merge of #18447 - servo:kill-cvas, r=emilio
Remove most uses of ComputedValueAsSpecified

<!-- 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/18447)
<!-- Reviewable:end -->
2017-09-11 20:04:12 -05:00
Manish Goregaokar
2db5fbbe56 stylo: Replace FontComputationData with typedef 2017-09-11 17:29:39 -07:00
bors-servo
24b2d8d9cf Auto merge of #18450 - upsuper:property-is-set, r=Manishearth
Use the LonghandIdSet to check whether a property is set

Servo side change of [bug 1398479](https://bugzilla.mozilla.org/show_bug.cgi?id=1398479).

<!-- 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/18450)
<!-- Reviewable:end -->
2017-09-11 18:50:19 -05:00
Manish Goregaokar
6318969269 stylo: Add support for calcs in base size calculation
This tracks an offset along with the ratio for the keyword font size
data. The offset gets used when a calc is involved whilst inheriting
font-size (it is the computed value of that calc ignoring em/percentage
portions, which go into the ratio). If the family or language changes,
the new font size can be computed by taking the keyword's size in the context
of that family/language, multiplying it by the ratio, and adding the
offset.
2017-09-11 16:05:50 -07:00
Manish Goregaokar
1ad9463558 stylo: Add (unused) absolute offset to FontComputationData 2017-09-11 16:05:37 -07:00
Xidorn Quan
d486def53b Use the LonghandIdSet to check whether a property is set 2017-09-12 08:47:26 +10:00
Manish Goregaokar
265483b439 stylo: Round down when computing viewport units 2017-09-11 13:24:35 -07:00
bors-servo
d2b689cf2e Auto merge of #18444 - ferjm:bug1384221.alias.errors, r=jdm
stylo: Fix error reporting for invalid values in property alias

- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix [bug 1384221](https://bugzilla.mozilla.org/show_bug.cgi?id=1384221)
- [X] There are [tests](https://bug1384221.bmoattachments.org/attachment.cgi?id=8906527) for these changes

<!-- 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/18444)
<!-- Reviewable:end -->
2017-09-11 12:50:11 -05:00
Fernando Jiménez Moreno
3be7ad8b6f stylo: Fix error reporting for invalid values in property alias 2017-09-11 18:47:12 +02:00
Anthony Ramine
3fb52a0ef9 Do not use CVAS for gecko::SpecifiedUrl 2017-09-11 18:41:22 +02:00
Anthony Ramine
b16c2572a9 Do not use CVAS for the -moz-force-broken-image-icon property 2017-09-11 18:41:21 +02:00
Anthony Ramine
4f36b30e34 Do not use CVAS for the text-decoration-line property 2017-09-11 18:41:20 +02:00
Anthony Ramine
6ac5e94f46 Do not use CVAS for the cursor property 2017-09-11 18:41:19 +02:00