Commit graph

22459 commits

Author SHA1 Message Date
bors-servo
58c61d3aed
Auto merge of #24315 - notriddle:GH-4577, r=nox
Add simple implementation of content-security-policy on network requests

This needs a lot more hooks before it'll actually be a good implementation, but for a start it can help get some feedback on if this is the right way to go about it.

Part of servo/servo#4577 but we should probably track the rest of the implementation somewhere.

---
<!-- 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] There are tests for these changes (before merging, this PR should fix at least some of the WPT tests for CSP)

<!-- 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/24315)
<!-- Reviewable:end -->
2019-10-17 10:44:00 -04:00
bors-servo
9b59a11b7c
Auto merge of #24408 - servo:jdm-patch-31, r=Manishearth
Synchronize WebGL layer creation with underlying GL APIs

I believe the underlying cause of #24373 is that the XR callbacks can end up executing before the XR WebGL layer setup has occurred. This was observed in the following symptom:
* a DOM exception would be thrown from inside the renderVR function, which is only called from XR's requestAnimationFrame callback
* following this, the webgl thread would panic with a GL error when executing the GL operations invoked from XRWebGLLayer::Constructor

This indicates that _somehow_ the XR rAF callback that raised an exception would have been operating on GL state that was not actually the state intended.

<!-- 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/24408)
<!-- Reviewable:end -->
2019-10-17 02:22:31 -04:00
bors-servo
14240bee81
Auto merge of #24452 - Manishearth:raf-lifecycle, r=asajeffrey
Always request new XR frames

Currently we only request XR frames when there is a rAF callback queued up.

This is incorrect, see https://immersive-web.github.io/webxr/#xr-animation-frame

With this change we always request updated frame state regardless of whether or not the user has queued up callbacks.

In addition to being spec-correct, this means that we can reliably listen for events in the OpenXR backend in the rAF loop itself, instead of having to set up a second spinning loop for when the rAF is inactive. This lets us implement visibility states for openxr without having to worry about the user never receiving the wakeup call because the rAF loop isn't pumping.

See also: https://github.com/immersive-web/webxr/issues/877

r? @asajeffrey
2019-10-16 20:02:10 -04:00
Michael Howell
b8f3e8bb2e Add simple implementation of content-security-policy on scripts / styles
This needs a lot more hooks before it'll actually be a good
implementation, but for a start it can help get some feedback on if this
is the right way to go about it.

Part of servo/servo#4577
2019-10-16 19:46:45 +00:00
bors-servo
bcd8c5e597
Auto merge of #24422 - pylbrecht:raqote, r=jdm
Use raqote for 2D canvas rendering

<!-- 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
- [X] These changes fix #23431

<!-- Either: -->

<!-- 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/24422)
<!-- Reviewable:end -->
2019-10-16 09:12:17 -04:00
Manish Goregaokar
24bfca9b71 Always request new XR frames 2019-10-15 11:21:17 -07:00
Manish Goregaokar
5e098e3a2a Unconditionally set up rAF loop on initialization 2019-10-15 11:21:17 -07:00
bors-servo
aa916ad20e
Auto merge of #24429 - saschanaz:getpropertykeys, r=jdm
Return false when GetPropertyKeys fails

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

As stated in https://github.com/servo/servo/pull/24377#discussion_r333844560.

---
<!-- 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
- [ ] 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. -->
2019-10-15 11:59:09 -04:00
bors-servo
c5d6bb604d
Auto merge of #24377 - saschanaz:record-support, r=nox
Support WebIDL `record<>`

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

Rebased @taki-zaro's work (#20318).

---
<!-- 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 #15012 and closes #20318. Possibly also closes #21463.

<!-- Either: -->
- [x] There are tests for these changes

<!-- 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/24377)
<!-- Reviewable:end -->
2019-10-15 08:33:46 -04:00
Kagami Sascha Rosylight
b697621b05 Support WebIDL record<> 2019-10-15 17:14:00 +09:00
Kagami Sascha Rosylight
764f1a3724 Return false when GetPropertyKeys fails 2019-10-12 18:57:05 +09:00
bors-servo
a84d4ab755
Auto merge of #24427 - Manishearth:various-xr, r=jdm
Various XR fixes

Mostly making sure we expose the correct things on the XRSession interface.

No backend currently supports visibility state changes, and it's tricky to do this for Hololens because currently we must pump the event loop to notice these events, and only rAF pumps the event loop right now, which means that applications which choose to stop running rAF when blurred will have a problem.

r? @jdm
2019-10-11 22:16:00 -04:00
Manish Goregaokar
49a8ed0e9e Expose onvisibilitychange 2019-10-11 16:12:37 -07:00
Manish Goregaokar
d90317cfe4 Fire visibilitychange event appropriately 2019-10-11 16:02:30 -07:00
Manish Goregaokar
75c763120f Expose XRSession.visibilityState 2019-10-11 16:01:12 -07:00
bors-servo
641f5e66e6
Auto merge of #24420 - servo:inline-block-lies, r=SimonSapin
Handle inline-block as block for now in layout 2020

<!-- 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/24420)
<!-- Reviewable:end -->
2019-10-11 16:15:18 -04:00
Manish Goregaokar
26b2f02210 Report correct environmentblendmode 2019-10-11 13:09:13 -07:00
Manish Goregaokar
66fea73289 Remove XRSession.mode 2019-10-11 12:42:49 -07:00
pylbrecht
fa2de68919 Implement DrawTarget::snapshot() 2019-10-11 20:07:36 +02:00
pylbrecht
772f2bc2ee Implement Path::transformed_copy_to_builder() 2019-10-11 20:07:35 +02:00
pylbrecht
f88c6efd63 Show warn! for shadow drawing operations 2019-10-11 20:06:48 +02:00
bors-servo
723df4abcf
Auto merge of #24379 - PeaceRebel:dom_response_check_opaque_filter, r=jdm
Dom response check opaque filter

<!-- Please describe your changes on the following line: -->
Added setters for url_list, status, and body in `Response`. Response members are set for [Network Error](https://fetch.spec.whatwg.org/#concept-network-error), [Opaque](https://fetch.spec.whatwg.org/#concept-filtered-response-opaque) and [Opaque-redirect](https://fetch.spec.whatwg.org/#concept-filtered-response-opaque-redirect) responses.

---
<!-- 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 #24372 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes

<!-- 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/24379)
<!-- Reviewable:end -->
2019-10-11 10:45:58 -04:00
Anthony Ramine
6345e353d4 Handle inline-block as block for now in layout 2020
That makes Servo not panic when loading servo.org.
2019-10-11 16:43:52 +02:00
peacerebel
0f1ddc6fea Set DOM response members as per the spec for opaque, opaque-redirect and error responses
Signed-off-by: Bipin <peacerebel@protonmail.com>
2019-10-11 10:06:29 +00:00
bors-servo
d28d9fe273
Auto merge of #23990 - tomasdivito:add-secure-connection-start, r=jdm
Add secure connection start

Implementing `secure_connection_start` as well as we can, this is related to #21268

We are setting the value as well as we can since we don't have a way to know if we are currently using a secure transport or where the handshake before the connection is done as the spec says on the step 15 [https://w3c.github.io/resource-timing/#sec-process](https://w3c.github.io/resource-timing/#sec-process)

Regarding the Timing Allow Check, that's being done on another PR by another person which will take care of setting the rest of the values on `PerformaceResourceTiming` to Zero and prevent them to set them any other way.

I'm currently setting the `secure_connection_time` using `precise_time_ms()` as the `connection_start` and `connection_end` are set that way... but other attributes inside `PerformanceResourceTiming` are set using `precise_time

Another thing, the issue talks about setting `redirect_start` but I'm not really sure if it's related, if so I can look up into that too... I might have just read and thought it was all about secure connection start.

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

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

<!-- 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/23990)
<!-- Reviewable:end -->
2019-10-10 22:16:27 -04:00
bors-servo
b3a97f29e8
Auto merge of #24312 - SiddharthaMishra:master, r=jdm
don't send progress event for empty blob

<!-- 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
- [X] These changes fix #24289 (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/24312)
<!-- Reviewable:end -->
2019-10-10 17:50:37 -04:00
Siddhartha Mishra
6735b68a00 don't send progress event for empty blob 2019-10-10 23:27:05 +05:30
Tomas Di Vito
bd0c0b65ba implemented secure_connection_start 2019-10-10 14:30:03 -03:00
bors-servo
ab8d99856e
Auto merge of #24386 - jdm:no-preserve-drawing-buffer, r=nox
webgl: Clear the drawing buffer when preserveDrawingBuffer is false.

This adds an explicit clear operation to a webgl canvas when the preserveDrawingBuffer attribute is false when creating the context. Because we're not using double buffering this may end up making some demos worse (ie. a clear operation at a random time while drawing a frame), but this problem is expected to go away when #24256 is fixed and we move to a multi-buffered frame setup. This change is important at this time because so many babylon.js demos rely on the engine clearing the frame, per the specification.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #21132
- [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/24386)
<!-- Reviewable:end -->
2019-10-10 12:09:32 -04:00
Josh Matthews
c53680b282 webgl: Lazily clear the canvas right before the first webgl command of the next frame. 2019-10-10 09:57:20 -04:00
bors-servo
4ded3038c0
Auto merge of #24339 - servo:sharing-cache-size, r=emilio
Remove obsolete logic for LRUCache size

The LRUCache implementation has been replaced, and no longer requires a backing store larger than its capacity.

<!-- 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/24339)
<!-- Reviewable:end -->
2019-10-10 00:45:14 -04:00
bors-servo
2c280ab6ac
Auto merge of #24404 - emilio:gecko-sync, r=emilio
style: Sync changes from mozilla-central.

See individual commits for details.

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

<!-- 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/24404)
<!-- Reviewable:end -->
2019-10-09 22:34:17 -04:00
bors-servo
dd1c183a2b
Auto merge of #24390 - Manishearth:grip-space, r=jdm
Support grip spaces in WebXR

Requires https://github.com/servo/webxr/pull/67

Uses the support added in https://github.com/servo/webxr/pull/67 to expose an optional grip space.

The per-frame click added there can't yet be consumed because we need to hook up gamepads (see https://github.com/servo/servo/issues/24389)

r? @asajeffrey @jdm

<!-- 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/24390)
<!-- Reviewable:end -->
2019-10-09 19:29:19 -04:00
Manish Goregaokar
c521d8ec01 Support grip spaces in WebXR 2019-10-09 14:00:03 -07:00
bors-servo
b34fc13eee
Auto merge of #24401 - gterzian:ensure_done_chan_is_none_when_revalidating, r=jdm
Fetch: ensure consistency between response, done-chan, and cache state.

This ensures that when a cached response is not used because it requires revalidation, the done chan is set back to `None`(since the cache might have set it to `Some` when constructing the response requiring revalidation).

<!-- 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: -->
- [ ] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [ ] These changes fix #24399 (GitHub issue number if applicable)

<!-- Either: -->
- [ ] 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/24401)
<!-- Reviewable:end -->
2019-10-09 10:53:17 -04:00
Josh Matthews
4d7110aca5 webgl: Clear the drawing buffer when preserveDrawingBuffer is false. 2019-10-09 10:27:47 -04:00
Josh Matthews
6ce5c25b72
xr: Synchronize WebGL layer creation with underlying GL APIs. 2019-10-09 09:42:26 -04:00
bors-servo
3d529b1b88
Auto merge of #24402 - gterzian:remove_thread_spawning_in_ws, r=jdm
Websocket: use ipc router to handle ws dom-action messages

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

Use the ipc router as opposed to spawning a dedicated thread.

---
<!-- 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
- [ ] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [ ] 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/24402)
<!-- Reviewable:end -->
2019-10-09 09:16:12 -04:00
Emilio Cobos Álvarez
031cb05c67 style: Fix servo build. 2019-10-09 13:21:35 +02:00
Emilio Cobos Álvarez
33d39d37a2 style: Rustfmt recent changes. 2019-10-09 13:21:35 +02:00
Brendan Dahl
112a68723e style: Add way to disable XBL in servo.
Adds a feature "moz_xbl" that when disabled causes the XBL code in servo to
be stubbed out.

Differential Revision: https://phabricator.services.mozilla.com/D45614
2019-10-09 13:21:35 +02:00
Brian Birtles
f6b587051d style: Don't make visibility additive.
As per discussion here: https://github.com/web-platform-tests/wpt/pull/19160

This property type does not have a procedure for addition defined so it should
not be additive.

Differential Revision: https://phabricator.services.mozilla.com/D48454
2019-10-09 13:21:35 +02:00
Savo
38e5897353 style: Replace #define NS_STYLE_FLEX_WRAP with enum class.
Differential Revision: https://phabricator.services.mozilla.com/D48166
2019-10-09 13:21:35 +02:00
Morgan Reschenberg
1c1437df59 style: Add readability backplate for all elements containing text when HCM or a11y theme is active.
Differential Revision: https://phabricator.services.mozilla.com/D42979
2019-10-09 13:21:35 +02:00
Emilio Cobos Álvarez
d43632c9f8 style: Don't allow negative radii in radial gradients.
Mostly renaming for clarity, as the gradient parsing code is a bit hairy.

This also changes -webkit- gradients, which is, I think, the right thing to do
(otherwise I need to give up on the type system and sprinkle parse_non_negatives
around, which would be unfortunate).

I filed https://bugs.chromium.org/p/chromium/issues/detail?id=1008112 on
Chromium still accepting negative radii for those, so will wait to submit the
patch for review until they reply there with their intentions.

Differential Revision: https://phabricator.services.mozilla.com/D47141
2019-10-09 13:21:35 +02:00
Boris Chiou
19ddfd57d5 style: Set WillChangeBits::TRANSFORM for individual transform.
We always check StyleWillChangeBits_TRANSFORM bit together with a
transform-like property set, so using WillChangeBits::TRANSFORM bit to
represent all transform-like properties is ok.

However, it seems the new test case works well even if we don't have this
patch. I still add it for individual transform properties to make sure
the test coverage is enough anyway.

Differential Revision: https://phabricator.services.mozilla.com/D47509
2019-10-09 13:21:35 +02:00
Mats Palmgren
4a97d6f4a0 style: Implement 'repeat(auto-fill, <line-names>)' in subgridded axis.
Differential Revision: https://phabricator.services.mozilla.com/D46895
2019-10-09 13:21:35 +02:00
Boris Chiou
4a23556c4b style: Add offset shorthand.
Also, update the serialization by the shorter perference because this is
a new feature and using older syntax doesn't make sense.

Besides, use `cssOffset` for web animation IDL attribute name.

Differential Revision: https://phabricator.services.mozilla.com/D45607
2019-10-09 13:21:35 +02:00
Emilio Cobos Álvarez
3cb18071a2 style: Use fallible allocation for stylesheet invalidation.
If the sets get too big we cannot allocate anything else, we'll just empty them
and invalidate the whole document.

Differential Revision: https://phabricator.services.mozilla.com/D46828
2019-10-09 13:21:35 +02:00
Brian Birtles
c349dbbaa9 style: Make various border-image-* properties interpolable.
Differential Revision: https://phabricator.services.mozilla.com/D46724
2019-10-09 13:21:35 +02:00