aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
Commit message (Collapse)AuthorAgeFilesLines
* Auto merge of #14083 - rnestler:fix_14018, r=jdmbors-servo2016-11-091-0/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add redirect_mode to RequestInit This adds support for non-follow redirect modes for `RequestInit`. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #14018 (github issue number if applicable). - [x] There are tests for these changes <!-- 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/14083) <!-- Reviewable:end -->
| * Add redirect_mode to RequestInitRaphael Nestler2016-11-081-0/+1
| |
* | Auto merge of #13802 - jeenalee:request-headers, r=jdmbors-servo2016-11-091-11/+32
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow Request's Headers to be created with various objects <!-- Please describe your changes on the following line: --> While Headers could be constructed correctly with an array or object (open ended dictionary/MozMap), Request's Headers failed to be created with non-Headers object (such as array or open ended dictionary/MozMap). Before, Request's Headers could be filled with only a Headers object in Step 28. This has been expanded to accommodate array and open ended dictionary. Step 29 empties the Request's Headers list after it had been filled in Step 28, thus resulting in an empty Headers object when it shouldn't be. This step has been removed with a comment in this commit. If a RequestInit Headers is _not_ given, but a RequestInfo Headers is given, RequestInfo Headers should be used to construct Request Headers. That step has been added after Step 31. Corresponding wpt result is updated in this commit. --- <!-- 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 #13758 (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/13802) <!-- Reviewable:end -->
| * | Fill r's headers with headers_copy when HeadersInit::Headers is givenJeena Lee2016-11-071-1/+2
| | | | | | | | | | | | | | | | | | | | | Instead of filling request's headers whenever a `HeadersInit` is given, this patch fills request's headers only when `HeadersInit` with a type of `Headers` is given. Previously, the constructor tried to fill request's headers with itself, causing Servo to crash.
| * | Remove unused use statementJeena Lee2016-10-271-1/+0
| | |
| * | Address review commentsJeena Lee2016-10-271-15/+20
| | |
| * | Allow Request's Headers to be created with various objectsJeena Lee2016-10-171-11/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While Headers could be constructed correctly with an array or object (open ended dictionary/MozMap), Request's Headers failed to be created with non-Headers object (such as array or open ended dictionary/MozMap). Before, Request's Headers could be filled with only a Headers object in Step 28. This has been expanded to accommodate array and open ended dictionary. Step 29 empties the Request's Headers list after it had been filled in Step 28, thus resulting in an empty Headers object when it shouldn't be. This step has been removed with a comment in this commit. If a RequestInit Headers is *not* given, but a RequestInfo Headers is given, RequestInfo Headers should be used to construct Request Headers. That step has been added after Step 31. Corresponding wpt result is updated in this commit.
* | | Auto merge of #14081 - anholt:webgl-readpix-negative-width, r=emiliobors-servo2016-11-094-23/+212
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | webgl: out-of-bounds readPixels() fixes <!-- Please describe your changes on the following line: --> Fix crashes in two WebGL readPixels() tests by adding framebuffer size validation. --- <!-- 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 #13901 <!-- 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/14081) <!-- Reviewable:end -->
| * | | webgl: Only update FBO status once in framebufferTexture2D().Eric Anholt2016-11-051-1/+0
| | | | | | | | | | | | | | | | | | | | We update it below after we send the actual FramebufferTexture2D command to the GL.
| * | | webgl: Fix out-of-bounds readpixels handling.Eric Anholt2016-11-052-6/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes the crash in read-pixels-pack-alignment (which was trying to read out of bounds). Fixes #13901
| * | | webgl: Throw an error on readPixels(width < 0 || height < 0)Eric Anholt2016-11-051-0/+4
| | | | | | | | | | | | | | | | | | | | Otherwise gleam will try to allocate a negative size area for the result, and we'll panic with oom.
| * | | webgl: Validate that framebuffer attachment sizes match.Eric Anholt2016-11-052-5/+36
| | | | | | | | | | | | | | | | | | | | This is required by the WebGL spec, and we need to figure out the FB size like this for validating ReadPixels.
| * | | webgl: Update FBO status when textures or RBs are reallocated.Eric Anholt2016-11-052-8/+45
| | | | | | | | | | | | | | | | | | | | | | | | FBO status is supposed to depend on the size of the attachments all matching, so we need to re-check when it changes. We don't ensure matching yet, but this will prevent regressions when we do.
| * | | webgl: Don't forget to update FBO status after detaching a texture.Eric Anholt2016-11-051-0/+1
| | | | | | | | | | | | | | | | | | | | We had this in the renderbuffer detach process, but missed it in this one.
| * | | webgl: Don't update texture attachment state if we throw an error.Eric Anholt2016-11-051-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | If we're going to return from this function without updating the underlying GL state because of a WebGLError, we shouldn't have updated our shadow of the GL state.
| * | | webgl: Track the level with texture attachments.Eric Anholt2016-11-051-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We need this to be able to get the size of the attached texture for completeness validation. Signed-off-by: Eric Anholt <eric@anholt.net>
| * | | webgl: Add an interface for getting the size of renderbuffers.Eric Anholt2016-11-051-0/+8
| | | | | | | | | | | | | | | | We need this for framebuffer status checking.
* | | | Script thread lifetime is now managed by the constellation.Alan Jeffrey2016-11-091-15/+24
| | | |
* | | | Auto merge of #14013 - asajeffrey:script-thread-no-root-document, r=jdmbors-servo2016-11-087-667/+489
|\ \ \ \ | |_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Script thread with no root document <!-- Please describe your changes on the following line: --> This PR removes the single root document from the script thread, and replaces it by a lookup table from `PipelineId`s to `Document`s. This is needed if we're going to share script threads, as per #633. The last commit is the one that matters, the ones before are #13646. cc @jdm @Ms2ger @ConnorGBrewster --- <!-- 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 do not require tests because refactoring <!-- 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/14013) <!-- Reviewable:end -->
| * | | Replace script thread root browsing context by a collection of documents.Alan Jeffrey2016-11-087-667/+489
| | | |
* | | | Auto merge of #13909 - dati91:promise-queue, r=jdmbors-servo2016-11-089-566/+596
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Webbluetooth Async behaviour <!-- Please describe your changes on the following line: --> Note: depends on https://github.com/servo/servo/pull/13612 The current WBT communication is synchronous. With this, it should work properly (except the disconnect function, which will need some more work, because the current implementation differ from the spec). <!-- 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 <!-- Either: --> - [X] There are tests for these changes <!-- 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/13909) <!-- Reviewable:end -->
| * | | | Webbluetooth Async behaviourAttila Dusnoki2016-11-089-566/+596
| | | | |
* | | | | Auto merge of #14129 - nox:anchor-origin, r=SimonSapinbors-servo2016-11-082-1/+18
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement HTMLAnchorElement.origin <!-- 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/14129) <!-- Reviewable:end -->
| * | | | | Implement HTMLAnchorElement.originAnthony Ramine2016-11-082-1/+18
| | | | | |
* | | | | | Rename media_queries::MediaQueryList to MediaListXidorn Quan2016-11-083-11/+8
| |/ / / / |/| | | |
* | | | | Stop using associated types for the concrete TRestyleDamage implementation.Bobby Holley2016-11-071-3/+1
| | | | | | | | | | | | | | | | | | | | MozReview-Commit-ID: LfaZFCVlIb1
* | | | | Stop using associated types for the concrete ElementSnapshot implementation.Bobby Holley2016-11-073-10/+10
|/ / / / | | | | | | | | | | | | MozReview-Commit-ID: LS23s2RbMBg
* | | | Auto merge of #14099 - emilio:canvas-data, r=noxbors-servo2016-11-071-8/+9
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | canvas: Cleanup CanvasData and layout and script messages. <!-- 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 <!-- Either: --> - [x] These changes do not require tests because refactoring. <!-- 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/14099) <!-- Reviewable:end -->
| * | | | canvas: Cleanup CanvasData and layout and script messages.Emilio Cobos Álvarez2016-11-071-8/+9
| | | | |
* | | | | Auto merge of #13918 - szeged:wpt-error-fixes, r=jdmbors-servo2016-11-079-208/+238
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | WebBluetooth fixes for the wpt tests <!-- Please describe your changes on the following line: --> Note: depends on #13612 WebBluetooth fixes for the failing wpt tests, excluding the `disconnect-during` tests cases, due to the lack of the event handling in the current implementation. --- <!-- 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 OR <!-- 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/13918) <!-- Reviewable:end -->
| * | | | | Return the same JS object for the same Bluetooth item.zakorgyula2016-11-045-65/+190
| | | | | |
| * | | | | Blacklisted items are removed when calling ↵fokinv2016-11-047-130/+5
| | | | | | | | | | | | | | | | | | | | | | | | getServices/Characteristics/Descriptors.
| * | | | | Update the value of the Characteristic/Descriptor when calling writeValue.zakorgyula2016-11-042-4/+4
| | | | | |
| * | | | | Return with NotFoundError when the requested deviceName/deviceNamePrefix is ↵fokinv2016-11-041-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | longer than 29 bytes.
| * | | | | Accepting empty deviceName, when requesting a BluetoothDevice.zakorgyula2016-11-041-2/+2
| | | | | |
| * | | | | Removing uuids field from BluetoothDevice with the related test cases.zakorgyula2016-11-041-1/+5
| | | | | |
| * | | | | Check if the BluetoothDevice is connected, when calling getGATT functions.zakorgyula2016-11-043-2/+28
| | | | | |
| * | | | | Return with InvalidStateError if a Bluetooth id is not cached.zakorgyula2016-11-041-0/+1
| | |/ / / | |/| | |
* | | | | Auto merge of #14059 - mrnayak:refPolicy, r=noxbors-servo2016-11-074-1/+15
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Network Security : Implement StrictOrigin and StrictOriginWhenCrossOr… This pull request contains commit implementing initial steps for Improving Network Security project. As part of initial steps referer policy enums for strict-origin and strict-origin-when-cross-origin have been added to [hyper](https://github.com/hyperium/hyper/pull/943). Unit tests and additional logic has been added to handle these policies. Since enum changes are available on hyper version 0.9.11. We had to update hyper version to 0.9.11. Hyper 0.9.11 depends on num_cpus 1.1.0. To avoid different version of num_cpus. We have updated rayon version from 0.4.0 to 0.4.3. Cargo.toml of util, style, geckolib, stylo component has been updated to use num_cpus version 1.1.0 instead of 0.2.2. --- <!-- 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 _____ <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> …igin Referer policy strict-origin and strict-origin-when-cross-origin changes have been implemented. Relevant unit test cases have been added. Enum for RefererPolicy has been added to hyper codebase and v 0.9.11 of hyper contains these changes. This commit also contains changes related to upgrade of hyper from v0.9.10 to v0.9.11. Other dependencies changed are rayon, utils, num_cpus. <!-- 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/14059) <!-- Reviewable:end -->
| * | | | Code review comments and upstream merge conflictsRaghav2016-11-0436-149/+288
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | Incorporated code review comments in components/net/http_loader.rs Resolved merge conflicts in cargo.lock file. Updated ReferrerPolicy in lib.rs
| * | | | Network Security : Implement StrictOrigin and StrictOriginWhenCrossOriginRaghav2016-11-044-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Referer policy strict-origin and strict-origin-when-cross-origin changes have been implemented. Relevant unit test cases have been added. Enum for RefererPolicy has been added to hyper codebase and v 0.9.11 of hyper contains these changes. This commit also contains changes related to upgrade of hyper from v0.9.10 to v0.9.11. Other dependencies changed are rayon, utils, num_cpus.
* | | | | Auto merge of #14089 - Wafflespeanut:tocss, r=SimonSapinbors-servo2016-11-062-3/+2
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make use of Servo-specific ToCss everywhere! <!-- Please describe your changes on the following line: --> This will allow types to be generic over our local `ToCss` --- <!-- 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 <!-- Either: --> - [x] These changes do not require tests because it's a 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/14089) <!-- Reviewable:end -->
| * | | | | Prefer Servo-specific ToCss for all typesRavi Shankar2016-11-072-3/+2
| | | | | |
* | | | | | Add more event names to atom list; use more `atom` macros.Corey Farwell2016-11-063-6/+3
|/ / / / /
* | | | | Auto merge of #14066 - rjgoldsborough:remove-extra-clones-14062, r=frewsxcvbors-servo2016-11-051-2/+2
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | remove extra clones from dom event script <!-- Please describe your changes on the following line: --> fixes #14062 by removing extra clone calls --- <!-- 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 #14062 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [X] These changes do not require tests because elements are already copies <!-- 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/14066) <!-- Reviewable:end -->
| * | | | | remove extra clones from dom event scriptJake Goldsborough2016-11-051-2/+2
| | |_|/ / | |/| | |
* | | | | Auto merge of #14082 - dns2utf8:cleanup_14065, r=jdmbors-servo2016-11-051-2/+0
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove unneeded #allow(unsafe_code) I did #14065 --- <!-- 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 #14065 <!-- Either: --> - [ ] There are tests for these changes OR - [X] 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/14082) <!-- Reviewable:end -->
| * | | | | Remove unneeded #allow(unsafe_code)Stefan Schindler2016-11-051-2/+0
| |/ / / /
* / / / / Concurrent rule tree, v1Emilio Cobos Álvarez2016-11-051-8/+2
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch introduces infrastructure for the rule tree, and constructs it. We don't use it yet, nor have good heuristics for GC'ing it, but this should not happen anymore once we store the rule node reference in the node. I haven't messed up with memory orders because I want to do a try run with it, then mess with them. Take down the ApplicableDeclarationsCache, use the rule tree for doing the cascade.
* | | | Auto merge of #14047 - mskrzypkows:getElementsByTagName, r=noxbors-servo2016-11-044-37/+44
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fix getElementsByTagName() <!-- Please describe your changes on the following line: --> Improved implementation of getElementsByTagName() in Document, properly pass 3 cases of https://dom.spec.whatwg.org/#concept-getelementsbytagname --- <!-- 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 #11596 (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/14047) <!-- Reviewable:end -->