Commit graph

25173 commits

Author SHA1 Message Date
Martin Robinson
d150cc9f95 Eliminate ScrollRootId
Just use WebRender's ClipId directly. This will allow us to create and
use ReferenceFrames in the future, if we need to do that. It will also
make it easier to have Servo responsible for creating the root
scrolling area, which will allow removing some old hacks in the future.
2017-04-20 08:51:38 +02:00
bors-servo
7919e591a4 Auto merge of #16539 - Manishearth:stylo-scriptminsize, r=heycam
stylo: Properly support -moz-script-size-multiplier, -moz-script-level, and -moz-script-min-size

r=heycam https://bugzilla.mozilla.org/show_bug.cgi?id=1355427

(copying over the relevant commit message so that it doesn't get lost in the vcssync)

scriptlevel is a property that affects how font-size is inherited. If scriptlevel is
+1, for example, it will inherit as the script size multiplier times
the parent font. This does not affect cases where the font-size is
explicitly set.

However, this transformation is not allowed to reduce the size below
scriptminsize. If this inheritance will reduce it to below
scriptminsize, it will be set to scriptminsize or the parent size,
whichever is smaller (the parent size could be smaller than the min size
because it was explicitly specified).

Now, within a node that has inherited a font-size which was
crossing scriptminsize once the scriptlevel was applied, a negative
scriptlevel may be used to increase the size again.

This should work, however if we have already been capped by the
scriptminsize multiple times, this can lead to a jump in the size.

For example, if we have text of the form:

huge large medium small tiny reallytiny tiny small medium huge

which is represented by progressive nesting and scriptlevel values of
+1 till the center after which the scriptlevel is -1, the "tiny"s should
be the same size, as should be the "small"s and "medium"s, etc.

However, if scriptminsize kicked it at around "medium", then
medium/tiny/reallytiny will all be the same size (the min size).
A -1 scriptlevel change after this will increase the min size by the
multiplier, making the second tiny larger than medium.

Instead, we wish for the second "tiny" to still be capped by the script
level, and when we reach the second "large", it should be the same size
as the original one.

We do this by cascading two separate font sizes. The font size (mSize)
is the actual displayed font size. The unconstrained font size
(mScriptUnconstrainedSize) is the font size in the situation where
scriptminsize never applied.

We calculate the proposed inherited font size based on scriptlevel and
the parent unconstrained size, instead of using the parent font size.
This is stored in the node's unconstrained size and will also be stored
in the font size provided that it is above the min size.

All of this only applies when inheriting. When the font size is
manually set, scriptminsize does not apply, and both the real and
unconstrained size are set to the explicit value. However, if the font
size is manually set to an em or percent unit, the unconstrained size
will be set to the value of that unit computed against the parent
unconstrained size, whereas the font size will be set computing against
the parent font size.

<!-- 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/16539)
<!-- Reviewable:end -->
2017-04-20 00:20:41 -05:00
Manish Goregaokar
3162babada stylo: Support scriptlevel computation and scriptminsize
scriptlevel is a property that affects how font-size is inherited. If scriptlevel is
+1, for example, it will inherit as the script size multiplier times
the parent font. This does not affect cases where the font-size is
explicitly set.

However, this transformation is not allowed to reduce the size below
scriptminsize. If this inheritance will reduce it to below
scriptminsize, it will be set to scriptminsize or the parent size,
whichever is smaller (the parent size could be smaller than the min size
because it was explicitly specified).

Now, within a node that has inherited a font-size which was
crossing scriptminsize once the scriptlevel was applied, a negative
scriptlevel may be used to increase the size again.

This should work, however if we have already been capped by the
scriptminsize multiple times, this can lead to a jump in the size.

For example, if we have text of the form:

huge large medium small tiny reallytiny tiny small medium huge

which is represented by progressive nesting and scriptlevel values of
+1 till the center after which the scriptlevel is -1, the "tiny"s should
be the same size, as should be the "small"s and "medium"s, etc.

However, if scriptminsize kicked it at around "medium", then
medium/tiny/reallytiny will all be the same size (the min size).
A -1 scriptlevel change after this will increase the min size by the
multiplier, making the second tiny larger than medium.

Instead, we wish for the second "tiny" to still be capped by the script
level, and when we reach the second "large", it should be the same size
as the original one.

We do this by cascading two separate font sizes. The font size (mSize)
is the actual displayed font size. The unconstrained font size
(mScriptUnconstrainedSize) is the font size in the situation where
scriptminsize never applied.

We calculate the proposed inherited font size based on scriptlevel and
the parent unconstrained size, instead of using the parent font size.
This is stored in the node's unconstrained size and will also be stored
in the font size provided that it is above the min size.

All of this only applies when inheriting. When the font size is
manually set, scriptminsize does not apply, and both the real and
unconstrained size are set to the explicit value. However, if the font
size is manually set to an em or percent unit, the unconstrained size
will be set to the value of that unit computed against the parent
unconstrained size, whereas the font size will be set computing against
the parent font size.

MozReview-Commit-ID: 820BIWqno3L
2017-04-19 22:19:55 -07:00
Manish Goregaokar
1b8458598e stylo: Support computing font-size against an arbitrary base size
MozReview-Commit-ID: 4jWcugvXR65
2017-04-19 22:10:43 -07:00
bors-servo
f74f1fb592 Auto merge of #16537 - KuoE0:add-inline-axis-and-block-axis-for-moz-box-orient, r=KuoE0
Add `inline-axis` and `block-axis` aliases for `-moz-box-orient`.

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

This issue is reported at https://bugzilla.mozilla.org/show_bug.cgi?id=1355005.

spec: https://developer.mozilla.org/en-US/docs/Web/CSS/box-orient

---
<!-- 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 [Bug 1355005](https://bugzilla.mozilla.org/show_bug.cgi?id=1355005)

<!-- Either: -->
- [X] These changes do not require tests 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/16537)
<!-- Reviewable:end -->
2017-04-19 23:19:48 -05:00
KuoE0
d43e151499 Add inline-axis and block-axis aliases for -moz-box-orient.
Ref: Bug 1355005 - stylo: Support -moz-box-orient: {block,inline}-axis
2017-04-20 11:55:29 +08:00
bors-servo
ac92bddbf5 Auto merge of #16536 - BorisChiou:stylo/animation/column_count, r=Manishearth
stylo: Change the animation_type of column-count to normal.

According to PR #16494, column-count should be animatable, so we should change the animation_type to "normal".

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix Bug 1355732 and PR #16494.
- [X] These changes do not require tests because we have tests in gecko already.

<!-- 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/16536)
<!-- Reviewable:end -->
2017-04-19 22:44:42 -05:00
Boris Chiou
0dcee472c1 Change the animation_type of column-count to normal. 2017-04-20 11:28:57 +08:00
bors-servo
b8b4ec92df Auto merge of #16231 - canaltinova:moz-transform, r=Manishearth
stylo: Implement -moz-transform property

-moz-transform property is an alias shorthand property. It has transform as sub-property but their parsing is different in some cases(matrix/matrix3d). -moz-transform also accepts LengthOrPercentage in the nondiagonal homogeneous components of matrix and matrix3d.

It looks like length and percentage values are getting computed to number directly. For example 120px converts into 120 and calc(120px + 20%) converts into 140. So I did like this. But we need to check this behavior again to be sure, I guess.

Also I spent half day investigating why matrices are not serializing after this change and found out their ToCss functions is not completely implemented yet 😄 I was going to implement them but there is an easy issue about it(#15194) so I left it that way. Probably all tests won't pass without it.

---
<!-- 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 #16003 and [Bug 1351356](https://bugzilla.mozilla.org/show_bug.cgi?id=1351356)

<!-- 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/16231)
<!-- Reviewable:end -->
2017-04-19 17:37:07 -05:00
bors-servo
2d2c82541a Auto merge of #16529 - mrobinson:root-scroll, r=glennw
Create proper root ClipId when scrolling from script

WebRender currently makes a distinction between an external ClipId with
id equal to 0 and the root scroll ClipId. We need to detect this
situation and properly form the ClipId for the root.

<!-- 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: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- 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/16529)
<!-- Reviewable:end -->
2017-04-19 17:01:58 -05:00
Martin Robinson
6017dc0836 Create proper root ClipId when scrolling from script
WebRender currently makes a distinction between an external ClipId with
id equal to 0 and the root scroll ClipId. We need to detect this
situation and properly form the ClipId for the root.
2017-04-19 23:43:24 +02:00
Nazım Can Altınova
f9225d84aa
Implement moz-transform property 2017-04-19 22:11:54 +03:00
Nazım Can Altınova
67799f9445
Create a generic flag system for properties 2017-04-19 22:08:50 +03:00
bors-servo
355d5f89da Auto merge of #16527 - BorisChiou:stylo/transition/shorthands, r=emilio
stylo: Bug 1353628 - Support shorthand properties for CSS Transition.

These patches add shorthand properties into TransitionProperty, so we can parse the shorthand properties properly and create transitions for them.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix Bug 1353628
- [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/16527)
<!-- Reviewable:end -->
2017-04-19 07:35:09 -05:00
Boris Chiou
8e90a2a287 Bug 1353628 - Part 4: Update metadata for css-transition-1_dev.
1. All tests in events-001.htm are passed.
2. Parsing 'inherit' in transition-property-002.htm is passed.
2017-04-19 20:33:36 +08:00
bors-servo
5062c4b117 Auto merge of #16526 - BorisChiou:stylo/animation/logical_type, r=emilio
stylo: Bug 1357671 - Make animation_type of logical properties be None.

Logical properties will be animatable (with discrete type), but for now, it is still non-animatable, so we assign "None" to the animation_type.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix Bug 1357671
- [X] These changes do not require tests because this is for code gen. If there is any problem, we will get compilation errors.

<!-- 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/16526)
<!-- Reviewable:end -->
2017-04-19 05:29:48 -05:00
bors-servo
0a54d5a025 Auto merge of #16523 - glennw:update-wr-drivers, r=metajack
Update WR (driver workaround, large clip mask fix, font index support).

<!-- 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/16523)
<!-- Reviewable:end -->
2017-04-19 04:53:22 -05:00
Boris Chiou
43f9f8ca95 Bug 1353628 - Part 3: Create PropertyAnimation for shorthands.
Therefore, we can start transitions on shorthand properties properly.

MozReview-Commit-ID: Ev2u2tEalnK
2017-04-19 17:42:44 +08:00
Boris Chiou
3a1421491b Bug 1353628 - Part 2: Add unit tests of parsing transition properties.
MozReview-Commit-ID: K5thA20ORPk
2017-04-19 17:42:42 +08:00
Boris Chiou
a06ce4a6aa Bug 1353628 - Part 1: Add shorthand properties into TransitionProperty.
In order to make TransitionProperty::parse() also work on shorthands, we
should add shorthands into TransitionProperty, and add the arms in other
functions which match TransitionProperty.

MozReview-Commit-ID: KFd26KcQf3N
2017-04-19 17:42:24 +08:00
Boris Chiou
aca0d24f36 Bug 1357671 - Make animation_type of logical properties be None.
Logical properties will be animatable (with discrete type), but for now
it is still non-animatable, so we assign "None" to the animation_type.

MozReview-Commit-ID: HRYwIhKkpoW
2017-04-19 17:24:19 +08:00
bors-servo
83130dcc91 Auto merge of #16519 - emilio:unused-import, r=emilio
dom/medialist: remove unused import.

<!-- 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/16519)
<!-- Reviewable:end -->
2017-04-19 04:17:09 -05:00
bors-servo
5274991545 Auto merge of #16516 - emilio:stylesheet-handling, r=bholley
stylo: Centralize stylesheet handling.

This is needed for both bug 1357461 and bug 1273303, where I plan to add smarter
invalidations than what we have now.

Also, it's cleaner.

Ideally I'll move this onto stylist, though that may require extra work to make
it work fine for Servo, so for now let's just do the obvious thing.

<!-- 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/16516)
<!-- Reviewable:end -->
2017-04-19 03:41:08 -05:00
bors-servo
195100f3ca Auto merge of #16495 - coalman:tidy-brace-alignment, r=emilio
Make tidy check that opening and closing braces that begin a line do …

…so with proper alignment.

---
<!-- 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 #16486 (github issue number if applicable).

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

<!-- 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/16495)
<!-- Reviewable:end -->
2017-04-19 03:06:31 -05:00
Emilio Cobos Álvarez
4651b94ff0
style: Simplify author_style_disabled handling. 2017-04-19 09:41:37 +02:00
Emilio Cobos Álvarez
97235d0bf7
stylo: Centralize stylesheet handling.
This is needed for both bug 1357461 and bug 1273303, where I plan to add smarter
invalidations than what we have now.

Also, it's cleaner.

Ideally I'll move this onto stylist, though that may require extra work to make
it work fine for Servo, so for now let's just do the obvious thing.
2017-04-19 09:41:36 +02:00
bors-servo
b4bea83312 Auto merge of #16521 - bholley:precompute_hashes, r=emilio
Store bloom filter hashes inline in the selector

https://bugzilla.mozilla.org/show_bug.cgi?id=1357304

<!-- 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/16521)
<!-- Reviewable:end -->
2017-04-19 02:32:18 -05:00
Emilio Cobos Álvarez
3aacbe69c7
dom/medialist: remove unused Default import. 2017-04-19 08:56:45 +02:00
bors-servo
91386e8367 Auto merge of #16524 - heycam:backout-system-fonts, r=heycam
Revert #16517 for Gecko heap write hazard failures.

<!-- 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/16524)
<!-- Reviewable:end -->
2017-04-19 01:56:10 -05:00
Cameron McCormack
408100818d Revert #16517 for Gecko heap write hazard failures. 2017-04-19 16:35:23 +10:00
Glenn Watson
3dccd1ed2c Update WR (driver workaround, large clip mask fix, font index support). 2017-04-19 14:08:06 +10:00
Bobby Holley
69e3870cdd Store bloom filter hashes inline.
MozReview-Commit-ID: F07JkdduLaI
2017-04-18 20:07:55 -07:00
Bobby Holley
9524c5cb57 Introduce SelectorInner and use it for top-level matching.
MozReview-Commit-ID: DxG6USsPIkh
2017-04-18 20:07:53 -07:00
bors-servo
2f8d9013a0 Auto merge of #16517 - Manishearth:stylo-sys, r=xidorn
stylo: Support system fonts

r=xidorn https://bugzilla.mozilla.org/show_bug.cgi?id=1349417

<!-- 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/16517)
<!-- Reviewable:end -->
2017-04-18 20:52:11 -05:00
Manish Goregaokar
14c632408c tidy and test fixes 2017-04-18 18:51:31 -07:00
Bobby Holley
11745fb983 Eliminate the AFFECTED_BY_SIBLINGS StyleRelation.
MozReview-Commit-ID: Lm25v2K21v5
2017-04-18 15:59:14 -07:00
coalman
fc34b9a14d Fix indentation errors in servo rust code that tidy now finds. 2017-04-18 14:56:13 -04:00
coalman
57e74542ee Make tidy check that opening and closing braces that begin a line do so with proper alignment. 2017-04-18 14:56:03 -04:00
Manish Goregaokar
59f16b57e7 Bug 1349417 - Part 8: stylo: Serialize system fonts correctly; r?xidorn
MozReview-Commit-ID: 4q1zZUcw6zF
2017-04-18 10:50:12 -07:00
Manish Goregaokar
681df60191 stylo: System font support for bitflag properties and font-language-override 2017-04-18 09:46:03 -07:00
Manish Goregaokar
f973a9720d stylo: System font support for font-size-adjust 2017-04-18 09:45:56 -07:00
Manish Goregaokar
4a899530be stylo: System font support for font-weight 2017-04-18 09:45:49 -07:00
Manish Goregaokar
5b06a32032 stylo: System font support for keyword font longhands 2017-04-18 09:45:41 -07:00
Manish Goregaokar
2c5ac9fc2d stylo: Add basic system font support, use for font-size and font-family 2017-04-18 09:45:29 -07:00
bors-servo
a754c10e79 Auto merge of #16487 - aneeshusa:automatically-clean-old-nightlies, r=larsbergstrom
Automatically clean old nightlies

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

Automatically clean old rustc and cargo nightlies on our builders up to preserve disk space.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [ ] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #12103 and help with servo/saltfs#321 (github issue number if applicable).

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

<!-- 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/16487)
<!-- Reviewable:end -->
2017-04-18 11:00:27 -05:00
bors-servo
2b353e04f0 Auto merge of #16464 - UK992:upload-nightly, r=larsbergstrom
Upload zipfile of Windows nightly build

- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #16437

<!-- 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/16464)
<!-- Reviewable:end -->
2017-04-18 09:50:23 -05:00
bors-servo
7a7697897d Auto merge of #16514 - nox:pointer-events, r=upsuper
Add extra pointer-events values for Gecko (fixes #16397)

<!-- 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/16514)
<!-- Reviewable:end -->
2017-04-18 08:33:51 -05:00
Aneesh Agrawal
060a813b45 Automatically clean old nightlies
Add a new `-keep` flag to `./mach clean-nightlies` to control how many
nightlies to keep, which keeps the n most recent nightlies found in git.

Use this to clean old nightlies at the start of each build,
currently keeping 3 nightlies at a time.
2017-04-18 09:30:45 -04:00
Aneesh Agrawal
b1824f7a05 Move delete function to util.py
This makes it easier to reuse in other places.
2017-04-18 09:30:41 -04:00
Anthony Ramine
18cfbfdafe Add extra pointer-events values for Gecko (fixes #16397) 2017-04-18 15:21:47 +02:00