aboutsummaryrefslogtreecommitdiffstats
path: root/components
Commit message (Collapse)AuthorAgeFilesLines
* Auto merge of #29708 - Loirooriol:outline-serialization, r=mrobinsonbors-servo2023-05-051-1/+22
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Improve serialization of the outline shorthand This is a backport of https://phabricator.services.mozilla.com/D155569, by Connor Pearson. Test: /css/css-ui/parsing/outline-valid-mandatory.html <!-- 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 #29697 (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. -->
| * Improve serialization of the outline shorthandOriol Brufau2023-05-031-1/+22
| | | | | | | | | | | | | | This is a backport of https://phabricator.services.mozilla.com/D155569, by Connor Pearson. Test: /css/css-ui/parsing/outline-valid-mandatory.html
* | Fix an assertion failure in Layout 2020Martin Robinson2023-05-051-4/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The recent changes to containing blocks, exposed an issue in the StyleExt trait: - When deciding whether an element creates a reference frame, whether or not it is a non-replaced inline is taken into account when determining if it has a transform. - When deciding whether an element creates a stacking context for all descendants, whether or not it is a non-replaced inline is *not* taken into account when determining if it has a transform. In both cases, elements that are inline should not be considered to have transforms. This commit fixes that issue as well as making it so that inlines cannot be transformed. Note that is also breaks transforms on replaced elements, but that functionality was fairly half-baked due to the inconsistent determination of transforms.
* | Auto merge of #29699 - mrobinson:add-html-body-tag, r=mukilanbors-servo2023-05-0425-277/+486
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Detect body elements during layout During layout it is often useful, for various specification reasons, to know if an element is the `<body>` element of an `<html>` element root. There are a couple places where a brittle heuristic is used to detect `<body>` elements. This information is going to be even more important to properly handle `<html>` elements that inherit their overflow property from their `<body>` children. Implementing this properly requires updating the DOM wrapper interface. This check does reach up to the parent of thread-safe nodes, but this is essentially the same kind of operation that `parent_style()` does, so is ostensibly safe. This change should not change any behavior and is just a preparation step for properly handle `<body>` overflow. <!-- 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 do not require tests because it does not change behavior. <!-- 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. -->
| * Detect body elements during layoutMartin Robinson2023-05-0425-277/+486
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During layout it is often useful, for various specification reasons, to know if an element is the `<body>` element of an `<html>` element root. There are a couple places where a brittle heuristic is used to detect `<body>` elements. This information is going to be even more important to properly handle `<html>` elements that inherit their overflow property from their `<body>` children. Implementing this properly requires updating the DOM wrapper interface. This check does reach up to the parent of thread-safe nodes, but this is essentially the same kind of operation that `parent_style()` does, so is ostensibly safe. This change should not change any behavior and is just a preparation step for properly handle `<body>` overflow.
* | Auto merge of #29702 - Loirooriol:outline-offset, r=mrobinsonbors-servo2023-05-032-18/+33
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement outline-offset in layout-2020 Tests that are now passing: - /_mozilla/css/outline_offset_a.htm - /css/css-ui/outline-010.html - /css/css-ui/outline-012.html - /css/css-ui/outline-013.html - /css/css-ui/outline-017.html - /css/css-ui/outline-negative-offset-composited-scroll.html - /css/css-ui/outline-offset-001.html - /css/css-ui/outline-offset-table-001.html - /css/css-ui/outline-offset.html - /css/css-ui/parsing/outline-offset-computed.html - /css/css-ui/parsing/outline-offset-valid.html Also improvements in: - /_mozilla/mozilla/calc.html - /css/css-ui/animation/outline-offset-interpolation.html - /css/css-ui/inheritance.html <!-- 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 #29701 <!-- 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. -->
| * | Implement outline-offset in layout-2020Oriol Brufau2023-05-022-18/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Tests that are now passing: - /_mozilla/css/outline_offset_a.htm - /css/css-ui/outline-010.html - /css/css-ui/outline-012.html - /css/css-ui/outline-013.html - /css/css-ui/outline-017.html - /css/css-ui/outline-negative-offset-composited-scroll.html - /css/css-ui/outline-offset-001.html - /css/css-ui/outline-offset-table-001.html - /css/css-ui/outline-offset.html - /css/css-ui/parsing/outline-offset-computed.html - /css/css-ui/parsing/outline-offset-valid.html Also improvements in: - /_mozilla/mozilla/calc.html - /css/css-ui/animation/outline-offset-interpolation.html - /css/css-ui/inheritance.html
* | | Auto merge of #29692 - atbrakhi:move_loggers_from_constellation, r=mrobinsonbors-servo2023-05-033-113/+129
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move `FromScriptLogger` and `FromCompositorLogger` to seperate file <!-- Please describe your changes on the following line: --> This PR is an attempt to refactor the `constellation.rs` file in order to make it more readable. Starting the initiative with moving `FromScriptLogger` and `FromCompositorLogger` to a separate`logger.rs` file as they don't have any major dependency to be in the `constellation.rs` file itself. Also noticed a broken link in `docs/HACKING_QUICKSTART.md` file. Adding the correct url. --- <!-- 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 ___ <!-- 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. -->
| * | Move logers into seperate logger filesRakhi Sharma2023-05-023-113/+129
| | | | | | | | | | | | | | | | | | | | | Constellation seems to have lots of code that could be moved into seperate files. `FromScriptLogger` and `FromCompositorLogger` seem to qualify for that. Moved FromScriptLogger and FromScriptLogger to logger file.
* | | Auto merge of #29660 - mrobinson:revamp-stacking-context-tree, r=delanbors-servo2023-05-036-314/+370
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rework CB management during stacking context tree construction Manage containing blocks and WebRender `SpaceAndClip` during stacking context tree construction using the `ContainingBlockInfo` data structure. This will allow us to reuse this data structure whenever we traverse the fragment tree. In addition, `StackingContextBuilder` is no longer necessary at all. This change also fixes some bugs where fixed position fragments were not placed in the correct spatial node. Unfortunately, these fixes are difficult to test because of #29659. <!-- 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] There are tests for these changes.
| * | | Rework CB management during stacking context tree constructionMartin Robinson2023-05-036-314/+370
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | Manage containing blocks and WebRender SpaceAndClip during stacking context tree constuction using the ContainingBlockInfo data structure. This will allow us to reuse this data structure whenever we traverse the fragment tree. In addition, StackingContextBuilder is no longer necessary at all. This change also fixes some bugs where fixed position fragments were not placed in the correct spatial node. Unfortunately, these fixes are difficult to test because of #29659.
* | | Auto merge of #29693 - mrobinson:cleanup-options, r=mukilanbors-servo2023-05-0315-548/+220
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up how command-line options are passed around <!-- 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 #29678 - [x] These changes do not require tests because they do not change behavior.
| * | Clean up arguments passed to ScriptThreadMartin Robinson2023-05-013-61/+14
| | |
| * | Clean up arguments passed to and stored in LayoutThreadMartin Robinson2023-05-014-191/+46
| | |
| * | Clean up debug optionsMartin Robinson2023-05-0110-307/+171
| | |
* | | Auto merge of #29695 - Loirooriol:outline, r=mrobinsonbors-servo2023-05-024-28/+101
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement outlines in layout-2020 <!-- Please describe your changes on the following line: --> This only covers the CSS2 properties: 'outline-width', 'outline-style', 'outline-color', and the shorthand 'outline'. CSS UI 3 introduced 'outline-offset', which is left for a follow-up. 'outline-color: invert' isn't included either, but note CSS UI says that conformant UAs may ignore the 'invert' value on platforms that do not support color inversion of the pixels on the screen. Tests that are now passing: - /_mozilla/css/input_insertion_point_empty_a.html - /_mozilla/css/outlines_simple_a.html - /_mozilla/css/stacking_context_overflow_relative_outline_a.html - /_mozilla/mozilla/getPropertyPriority.html - /css/CSS2/ui/outline-color-001.xht - /css/CSS2/ui/outline-color-002.xht - /css/CSS2/ui/outline-color-007.xht - /css/CSS2/ui/outline-color-008.xht - /css/CSS2/ui/outline-color-013.xht - /css/CSS2/ui/outline-color-018.xht - /css/CSS2/ui/outline-color-023.xht - /css/CSS2/ui/outline-color-024.xht - /css/CSS2/ui/outline-color-025.xht - /css/CSS2/ui/outline-color-031.xht - /css/CSS2/ui/outline-color-036.xht - /css/CSS2/ui/outline-color-041.xht - /css/CSS2/ui/outline-color-046.xht - /css/CSS2/ui/outline-color-047.xht - /css/CSS2/ui/outline-color-048.xht - /css/CSS2/ui/outline-color-049.xht - /css/CSS2/ui/outline-color-050.xht - /css/CSS2/ui/outline-color-051.xht - /css/CSS2/ui/outline-color-052.xht - /css/CSS2/ui/outline-color-053.xht - /css/CSS2/ui/outline-color-054.xht - /css/CSS2/ui/outline-color-058.xht - /css/CSS2/ui/outline-color-059.xht - /css/CSS2/ui/outline-color-061.xht - /css/CSS2/ui/outline-color-062.xht - /css/CSS2/ui/outline-color-069.xht - /css/CSS2/ui/outline-color-070.xht - /css/CSS2/ui/outline-color-071.xht - /css/CSS2/ui/outline-color-072.xht - /css/CSS2/ui/outline-color-073.xht - /css/CSS2/ui/outline-color-074.xht - /css/CSS2/ui/outline-color-075.xht - /css/CSS2/ui/outline-color-079.xht - /css/CSS2/ui/outline-color-081.xht - /css/CSS2/ui/outline-color-082.xht - /css/CSS2/ui/outline-color-089.xht - /css/CSS2/ui/outline-color-090.xht - /css/CSS2/ui/outline-color-091.xht - /css/CSS2/ui/outline-color-092.xht - /css/CSS2/ui/outline-color-093.xht - /css/CSS2/ui/outline-color-094.xht - /css/CSS2/ui/outline-color-095.xht - /css/CSS2/ui/outline-color-099.xht - /css/CSS2/ui/outline-color-101.xht - /css/CSS2/ui/outline-color-102.xht - /css/CSS2/ui/outline-color-109.xht - /css/CSS2/ui/outline-color-110.xht - /css/CSS2/ui/outline-color-111.xht - /css/CSS2/ui/outline-color-112.xht - /css/CSS2/ui/outline-color-113.xht - /css/CSS2/ui/outline-color-114.xht - /css/CSS2/ui/outline-color-115.xht - /css/CSS2/ui/outline-color-119.xht - /css/CSS2/ui/outline-color-121.xht - /css/CSS2/ui/outline-color-122.xht - /css/CSS2/ui/outline-color-130.xht - /css/css-ui/outline-001.html - /css/css-ui/outline-002.html - /css/css-ui/outline-004.html - /css/css-ui/outline-007.html - /css/css-ui/outline-008.html - /css/css-ui/outline-016.html - /css/css-ui/outline-018.html - /css/css-ui/outline-021.html - /css/css-ui/outline-022.html - /css/css-ui/outline-color-001.html - /css/css-ui/outline-style-011.html - /css/css-ui/outline-style-012.html - /css/css-ui/outline-style-013.html - /css/css-ui/outline-style-014.html - /css/css-ui/parsing/outline-color-computed.html - /css/css-ui/parsing/outline-color-valid-mandatory.html - /css/css-ui/parsing/outline-shorthand.html - /css/css-ui/parsing/outline-style-computed.html - /css/css-ui/parsing/outline-style-valid.html - /css/css-ui/parsing/outline-width-valid.html - /css/css-ui/translucent-outline.html Also improvements in: - /_mozilla/mozilla/calc.html - /css/css-ui/animation/outline-color-interpolation.html - /css/css-ui/animation/outline-width-interpolation.html - /css/css-ui/inheritance.html - /css/css-ui/outline-017.html - /css/css-ui/parsing/outline-valid-mandatory.html - /css/css-ui/parsing/outline-width-computed.html - /css/cssom/cssom-setProperty-shorthand.html - /css/cssom/getComputedStyle-resolved-colors.html - /css/cssom/serialize-values.html - /css/cssom/shorthand-values.html New failures: - /css/CSS2/ui/outline-applies-to-005.xht - /css/CSS2/ui/outline-applies-to-006.xht - /css/CSS2/ui/outline-color-applies-to-005.xht - /css/CSS2/ui/outline-color-applies-to-006.xht - /css/CSS2/ui/outline-style-applies-to-005.xht - /css/CSS2/ui/outline-style-applies-to-006.xht - /css/CSS2/ui/outline-width-applies-to-005.xht - /css/CSS2/ui/outline-width-applies-to-006.xht Al of these fail because tables are not implemented yet. - /css/css-ui/outline-offset.html Fails because outline-offset is not implemented yet. - /css/css-ui/outline-with-padding-001.html Fails because the outline doesn't include overflowing contents. I don't think this is required by the spec, Firefox fails too. --- <!-- 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 #29694 (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. -->
| * | | Implement outlines in layout-2020Oriol Brufau2023-05-024-28/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This only covers the CSS2 properties: 'outline-width', 'outline-style', 'outline-color', and the shorthand 'outline'. CSS UI 3 introduced 'outline-offset', which is left for a follow-up. 'outline-color: invert' isn't included either, but note CSS UI says that conformant UAs may ignore the 'invert' value on platforms that do not support color inversion of the pixels on the screen. Tests that are now passing: - /_mozilla/css/input_insertion_point_empty_a.html - /_mozilla/css/outlines_simple_a.html - /_mozilla/css/stacking_context_overflow_relative_outline_a.html - /_mozilla/mozilla/getPropertyPriority.html - /css/CSS2/ui/outline-color-001.xht - /css/CSS2/ui/outline-color-002.xht - /css/CSS2/ui/outline-color-007.xht - /css/CSS2/ui/outline-color-008.xht - /css/CSS2/ui/outline-color-013.xht - /css/CSS2/ui/outline-color-018.xht - /css/CSS2/ui/outline-color-023.xht - /css/CSS2/ui/outline-color-024.xht - /css/CSS2/ui/outline-color-025.xht - /css/CSS2/ui/outline-color-031.xht - /css/CSS2/ui/outline-color-036.xht - /css/CSS2/ui/outline-color-041.xht - /css/CSS2/ui/outline-color-046.xht - /css/CSS2/ui/outline-color-047.xht - /css/CSS2/ui/outline-color-048.xht - /css/CSS2/ui/outline-color-049.xht - /css/CSS2/ui/outline-color-050.xht - /css/CSS2/ui/outline-color-051.xht - /css/CSS2/ui/outline-color-052.xht - /css/CSS2/ui/outline-color-053.xht - /css/CSS2/ui/outline-color-054.xht - /css/CSS2/ui/outline-color-058.xht - /css/CSS2/ui/outline-color-059.xht - /css/CSS2/ui/outline-color-061.xht - /css/CSS2/ui/outline-color-062.xht - /css/CSS2/ui/outline-color-069.xht - /css/CSS2/ui/outline-color-070.xht - /css/CSS2/ui/outline-color-071.xht - /css/CSS2/ui/outline-color-072.xht - /css/CSS2/ui/outline-color-073.xht - /css/CSS2/ui/outline-color-074.xht - /css/CSS2/ui/outline-color-075.xht - /css/CSS2/ui/outline-color-079.xht - /css/CSS2/ui/outline-color-081.xht - /css/CSS2/ui/outline-color-082.xht - /css/CSS2/ui/outline-color-089.xht - /css/CSS2/ui/outline-color-090.xht - /css/CSS2/ui/outline-color-091.xht - /css/CSS2/ui/outline-color-092.xht - /css/CSS2/ui/outline-color-093.xht - /css/CSS2/ui/outline-color-094.xht - /css/CSS2/ui/outline-color-095.xht - /css/CSS2/ui/outline-color-099.xht - /css/CSS2/ui/outline-color-101.xht - /css/CSS2/ui/outline-color-102.xht - /css/CSS2/ui/outline-color-109.xht - /css/CSS2/ui/outline-color-110.xht - /css/CSS2/ui/outline-color-111.xht - /css/CSS2/ui/outline-color-112.xht - /css/CSS2/ui/outline-color-113.xht - /css/CSS2/ui/outline-color-114.xht - /css/CSS2/ui/outline-color-115.xht - /css/CSS2/ui/outline-color-119.xht - /css/CSS2/ui/outline-color-121.xht - /css/CSS2/ui/outline-color-122.xht - /css/CSS2/ui/outline-color-130.xht - /css/css-ui/outline-001.html - /css/css-ui/outline-002.html - /css/css-ui/outline-004.html - /css/css-ui/outline-007.html - /css/css-ui/outline-008.html - /css/css-ui/outline-016.html - /css/css-ui/outline-018.html - /css/css-ui/outline-021.html - /css/css-ui/outline-022.html - /css/css-ui/outline-color-001.html - /css/css-ui/outline-style-011.html - /css/css-ui/outline-style-012.html - /css/css-ui/outline-style-013.html - /css/css-ui/outline-style-014.html - /css/css-ui/parsing/outline-color-computed.html - /css/css-ui/parsing/outline-color-valid-mandatory.html - /css/css-ui/parsing/outline-shorthand.html - /css/css-ui/parsing/outline-style-computed.html - /css/css-ui/parsing/outline-style-valid.html - /css/css-ui/parsing/outline-width-valid.html - /css/css-ui/translucent-outline.html Also improvements in: - /_mozilla/mozilla/calc.html - /css/css-ui/animation/outline-color-interpolation.html - /css/css-ui/animation/outline-width-interpolation.html - /css/css-ui/inheritance.html - /css/css-ui/outline-017.html - /css/css-ui/parsing/outline-valid-mandatory.html - /css/css-ui/parsing/outline-width-computed.html - /css/cssom/cssom-setProperty-shorthand.html - /css/cssom/getComputedStyle-resolved-colors.html - /css/cssom/serialize-values.html - /css/cssom/shorthand-values.html New failures: - /css/CSS2/ui/outline-applies-to-005.xht - /css/CSS2/ui/outline-applies-to-006.xht - /css/CSS2/ui/outline-color-applies-to-005.xht - /css/CSS2/ui/outline-color-applies-to-006.xht - /css/CSS2/ui/outline-style-applies-to-005.xht - /css/CSS2/ui/outline-style-applies-to-006.xht - /css/CSS2/ui/outline-width-applies-to-005.xht - /css/CSS2/ui/outline-width-applies-to-006.xht Al of these fail because tables are not implemented yet. - /css/css-ui/outline-offset.html Fails because outline-offset is not implemented yet. - /css/css-ui/outline-with-padding-001.html Fails because the outline doesn't include overflowing contents. I don't think this is required by the spec, Firefox fails too.
* | | | Fix flakiness in animation testsMartin Robinson2023-05-023-7/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. When updating the animation timeline, ensure that nodes that are animating are marked dirty, if necessary, so any style queries will force an layout flush. 2. Disable the problematic transition test suites, as they are in Gecko. These suites often fail when Servo is so overloaded that it cannot deliver frames fast enough to get more than two samples during the animation lifecycle. Fixes #28334. Fixes #26435. Fixes #21486.
* | | | Auto merge of #29698 - sagudev:phil-bump-mozangle, r=jdmbors-servo2023-05-022-2/+2
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bump mozangle to 0.3.3. Rebased https://github.com/servo/servo/pull/28462. --- <!-- 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. -->
| * | | Bump mozangle to 0.3.3.Philip Lamb2023-05-012-2/+2
| | | |
* | | | Normalize corner radii that add up to > 100%Oriol Brufau2023-05-011-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | WebRender already seems to be doing this normalization, but this is needed by inner_radii in order to properly compute the reduced radii when background-clip is content-box or padding-box. This will also be needed for expanding the radii for box-shadow or outline. Test: css/css-backgrounds/background-rounded-image-clip-002.html
* | | | Auto merge of #29684 - Loirooriol:corner-clipping-typos, r=mrobinsonbors-servo2023-04-291-3/+3
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix corner clipping typos in layout-2020 <!-- Please describe your changes on the following line: --> inner_radii() had a minus sign that shouldn't be there. And padding_edge_clip() and content_edge_clip() clearly need to to use the padding_rect() and content_rect() instead of border_rect. Tests: - css/css-backgrounds/background-clip-padding-box-with-border-radius.html - css/css-backgrounds/background-rounded-image-clip.html --- <!-- 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 #29683 (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. -->
| * | | Fix corner clipping typos in layout-2020Oriol Brufau2023-04-291-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | inner_radii() had a minus sign that shouldn't be there. And padding_edge_clip() and content_edge_clip() clearly need to to use the padding_rect() and content_rect() instead of border_rect. Tests: - css/css-backgrounds/background-clip-padding-box-with-border-radius.html - css/css-backgrounds/background-rounded-image-clip.html
* | | | Auto merge of #29640 - CYBAI:fix-response-empty-init, r=mrobinsonbors-servo2023-04-281-0/+5
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reset to in-memory stream with empty byte sequence for None init body Because the response body stream is initialized with FetchResponse, it cannot be processed with in-memory empty sequence. Thus, instead of using the FetchResponse stream, we'll reset it to Memory body stream with empty byte sequence if there's no init body. With this PR, we can fix the TIMEOUT in `/fetch/content-type/response.window.html` so I think it should fix #22304. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #22304 - [x] There are tests for these changes
| * | | Reset to in-memory stream with empty byte sequence for None init bodycybai2023-04-271-0/+5
| |/ / | | | | | | | | | | | | | | | | | | Because the response body stream is initialized with FetchResponse, it cannot be processed with in-memory empty sequence. Thus, instead of using the FetchResponse stream, we'll reset it to Memory body stream with empty byte sequence if there's no init body.
* / / Round text decoration thickness to >= 1 device pixelsOriol Brufau2023-04-272-6/+23
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the thickness coming from font metrics could be something like 0.7px, so with 1dppx it would be painted as either 1 or 0 device pixels. Enforcing at least 1 device pixel ensures that the decoration will be visible, and rounding to an integral amount of device pixels ensures that the thickness won't vary depending on the position. The specification requires this behavior when text-decoration-thickness is set to a length or percentage. It's not clear if it should also happen by default, but this seems to match other browsers (except for WebKit rounding up instead of to the nearest integer). The test text-decoration-thickness-from-zero-sized-font.html is now failing because of #29675.
* | Fix text-decoration for block containers in layout-2020Oriol Brufau2023-04-262-4/+7
| | | | | | | | | | | | It was only applied to the 1st inline formatting context of a block container. Other IFCs were created with the Default trait, implying TextDecorationLine::NONE.
* | Fix flakiness in hit testingMartin Robinson2023-04-261-0/+12
| | | | | | | | We need to make sure that hit testing from script reflects the latest display list we have sent from the compositor.
* | Auto merge of #29650 - Loirooriol:text-indent, r=mrobinsonbors-servo2023-04-263-4/+25
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Support text-indent in layout-2020 Existing WPT now passing: - _mozilla/css/text_indent_a.html - css/CSS2/css1/c71-fwd-parsing-002.xht - css/CSS2/css1/c71-fwd-parsing-004.xht - css/CSS2/floats-clear/floats-138.xht - css/CSS2/text/text-indent-007.xht - css/CSS2/text/text-indent-008.xht - css/CSS2/text/text-indent-010.xht - css/CSS2/text/text-indent-019.xht - css/CSS2/text/text-indent-020.xht - css/CSS2/text/text-indent-031.xht - css/CSS2/text/text-indent-032.xht - css/CSS2/text/text-indent-043.xht - css/CSS2/text/text-indent-044.xht - css/CSS2/text/text-indent-055.xht - css/CSS2/text/text-indent-056.xht - css/CSS2/text/text-indent-067.xht - css/CSS2/text/text-indent-068.xht - css/CSS2/text/text-indent-079.xht - css/CSS2/text/text-indent-080.xht - css/CSS2/text/text-indent-091.xht - css/CSS2/text/text-indent-092.xht - css/CSS2/text/text-indent-103.xht - css/CSS2/text/text-indent-104.xht - css/CSS2/text/text-indent-112.xht - css/CSS2/text/text-indent-113.xht - css/CSS2/text/text-indent-115.xht - css/CSS2/text/text-indent-applies-to-002.xht - css/CSS2/text/text-indent-applies-to-003.xht - css/CSS2/text/text-indent-applies-to-005.xht - css/CSS2/text/text-indent-applies-to-006.xht - css/CSS2/text/text-indent-applies-to-007.xht - css/CSS2/text/text-indent-applies-to-008.xht - css/CSS2/text/text-indent-applies-to-009.xht - css/CSS2/text/text-indent-applies-to-010.xht - css/CSS2/text/text-indent-applies-to-011.xht - css/CSS2/text/text-indent-applies-to-014.xht - css/CSS2/text/text-indent-applies-to-015.xht - css/CSS2/text/text-indent-inherited-001.xht - css/CSS2/text/text-indent-overflow-001.xht - css/CSS2/text/text-indent-overflow-002.xht - css/CSS2/text/text-indent-overflow-003.xht - css/CSS2/text/text-indent-overflow-004.xht - css/CSS2/text/text-indent-wrap-001.xht - css/css-text-decor/text-shadow/textindent.html - css/css-text/text-indent/text-indent-percentage-001.xht - css/css-text/text-indent/text-indent-percentage-002.html - css/css-text/text-indent/text-indent-percentage-003.html - css/css-text/text-indent/text-indent-percentage-004.html - css/css-values/minmax-length-percent-serialize.html - css/css-values/minmax-length-serialize.html Also improvements in: - _mozilla/mozilla/calc.html - css/css-text/animations/text-indent-interpolation.html - css/css-text/inheritance.html - css/css-text/parsing/text-indent-computed.html - css/css-text/parsing/text-indent-valid.html - css/css-transitions/properties-value-implicit-001.html - css/css-values/animations/calc-interpolation.html - css/css-values/minmax-percentage-serialize.html - css/css-values/viewport-units-css2-001.html - css/css-variables/variable-substitution-basic.html - css/cssom/serialize-values.html Existing WPT now failing, due to lack of direction, outside list markers, flex and grid: - css/CSS2/text/text-indent-rtl-001.xht - css/CSS2/text/text-indent-rtl-002.xht - css/css-pseudo/marker-content-023.html - css/css-text/text-indent/anonymous-flex-item-001.html - css/css-text/text-indent/anonymous-grid-item-001.html New WPT tests: - css/css-text/text-indent/text-indent-length-001.html - css/css-text/text-indent/text-indent-length-002.html This one fails in layout-2013. <!-- 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 #29649 (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. -->
| * | Support text-indent in layout-2020Oriol Brufau2023-04-253-4/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Existing WPT now passing: - _mozilla/css/text_indent_a.html - css/CSS2/css1/c71-fwd-parsing-002.xht - css/CSS2/css1/c71-fwd-parsing-004.xht - css/CSS2/floats-clear/floats-138.xht - css/CSS2/text/text-indent-007.xht - css/CSS2/text/text-indent-008.xht - css/CSS2/text/text-indent-010.xht - css/CSS2/text/text-indent-019.xht - css/CSS2/text/text-indent-020.xht - css/CSS2/text/text-indent-031.xht - css/CSS2/text/text-indent-032.xht - css/CSS2/text/text-indent-043.xht - css/CSS2/text/text-indent-044.xht - css/CSS2/text/text-indent-055.xht - css/CSS2/text/text-indent-056.xht - css/CSS2/text/text-indent-067.xht - css/CSS2/text/text-indent-068.xht - css/CSS2/text/text-indent-079.xht - css/CSS2/text/text-indent-080.xht - css/CSS2/text/text-indent-091.xht - css/CSS2/text/text-indent-092.xht - css/CSS2/text/text-indent-103.xht - css/CSS2/text/text-indent-104.xht - css/CSS2/text/text-indent-112.xht - css/CSS2/text/text-indent-113.xht - css/CSS2/text/text-indent-115.xht - css/CSS2/text/text-indent-applies-to-002.xht - css/CSS2/text/text-indent-applies-to-003.xht - css/CSS2/text/text-indent-applies-to-005.xht - css/CSS2/text/text-indent-applies-to-006.xht - css/CSS2/text/text-indent-applies-to-007.xht - css/CSS2/text/text-indent-applies-to-008.xht - css/CSS2/text/text-indent-applies-to-009.xht - css/CSS2/text/text-indent-applies-to-010.xht - css/CSS2/text/text-indent-applies-to-011.xht - css/CSS2/text/text-indent-applies-to-014.xht - css/CSS2/text/text-indent-applies-to-015.xht - css/CSS2/text/text-indent-inherited-001.xht - css/CSS2/text/text-indent-overflow-001.xht - css/CSS2/text/text-indent-overflow-002.xht - css/CSS2/text/text-indent-overflow-003.xht - css/CSS2/text/text-indent-overflow-004.xht - css/CSS2/text/text-indent-wrap-001.xht - css/css-text-decor/text-shadow/textindent.html - css/css-text/text-indent/text-indent-percentage-001.xht - css/css-text/text-indent/text-indent-percentage-002.html - css/css-text/text-indent/text-indent-percentage-003.html - css/css-text/text-indent/text-indent-percentage-004.html - css/css-values/minmax-length-percent-serialize.html - css/css-values/minmax-length-serialize.html Also improvements in: - _mozilla/mozilla/calc.html - css/css-text/animations/text-indent-interpolation.html - css/css-text/inheritance.html - css/css-text/parsing/text-indent-computed.html - css/css-text/parsing/text-indent-valid.html - css/css-transitions/properties-value-implicit-001.html - css/css-values/animations/calc-interpolation.html - css/css-values/minmax-percentage-serialize.html - css/css-values/viewport-units-css2-001.html - css/css-variables/variable-substitution-basic.html - css/cssom/serialize-values.html Existing WPT now failing, due to lack of direction, outside list markers, flex and grid: - css/CSS2/text/text-indent-rtl-001.xht - css/CSS2/text/text-indent-rtl-002.xht - css/css-pseudo/marker-content-023.html - css/css-text/text-indent/anonymous-flex-item-001.html - css/css-text/text-indent/anonymous-grid-item-001.html New WPT tests: - css/css-text/text-indent/text-indent-length-001.html - css/css-text/text-indent/text-indent-length-002.html This one fails in layout-2013.
* | | Fix scrolling from script in Layout 2020Martin Robinson2023-04-253-3/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | Script will only scroll if it detects that an element has a scrolling box, so this change adds an implementation of the scroll area query to Layout 2020. This allows some scrolling tests to start passing. This change also updates all expected results in css-backgrounds and cssom-view.
* | | Allow script to scroll `overflow: scroll` elementsMartin Robinson2023-04-252-48/+58
| | | | | | | | | | | | | | | | | | Before the code was only allowing `overflow: hidden` elements to scroll. This fixes that issue and also clean up the code that deals with detecting whether the body is a "potentially scrollable" in quirks mode.
* | | Scroll from script should trigger a reflowMartin Robinson2023-04-255-62/+66
|/ / | | | | | | | | | | | | | | | | Scrolling from script should flow layout and send a display list to WebRender. This allows all of the scroll nodes to exist in WebRender before asking it to move the node. See https://gist.github.com/paulirish/5d52fb081b3570c81e3a. Fixes #29659.
* | Auto merge of #29646 - CYBAI:fix-classname-filter, r=jdmbors-servo2023-04-241-0/+6
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix checking for empty set in getElementsByClassName Because empty set with `.all(predicate)` will always return `true`, it will result in always filtering wrong elements when the classes is empty set. Thus, we return earlier with `always_empty` HTMLCollection in the empty classes case so that we can avoid filtering on empty sets. With adding the checking, we can fix the failures in `/dom/nodes/getElementsByClassName-empty-set.html`. --- - [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) - [x] There are tests for these changes
| * Fix checking for empty set for getElementsByClassNamecybai2023-04-211-0/+6
| | | | | | | | | | | | | | | | | | Because empty set with `.all(predicate)` will always return `true`, it will result in always filtering wrong elements when the classes is empty set. Thus, we return earlier with `always_empty` HTMLCollection in the mpety classes case so that we can avoid filtering on empty sets.
* | Auto merge of #29644 - mrobinson:rename-establishes-containing-block, r=delanbors-servo2023-04-233-6/+17
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename `ComputedValuesExt::establishes_containing_block` This renames the helper method to be a bit more accurate. For elements with static, relative, and sticky positioning, their containing block is always formed by their nearest block container ancestor. This method is really dealing with style that means an element will establish a containing block for absolutely positioned descendants. <!-- 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 do not require tests because they do not change behavior. <!-- 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. -->
| * | Rename `ComputedValuesExt::establishes_containing_block`Martin Robinson2023-04-203-6/+17
| |/ | | | | | | | | | | | | | | This renames the helper method to be a bit more accurate. For elements with static, relative, and sticky positioning, their containing block is always formed by their nearest block container ancestor. This method is really dealing with style that means an element will establish a containing block for absolutely positioned descendants.
* / Throw HierarchyRequest error for Attr in pre-insert and replacechildcybai2023-04-211-5/+7
|/
* Auto merge of #29631 - mrobinson:correct-positioned-block-axis-calculation, ↵bors-servo2023-04-141-2/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r=mrego Fix calculation of block axis for abspos elements in Layout 2020 The calculation of the block axis positioning of absolutely positioned elements was using the inline size of the containing block instead of the block size. <!-- 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] 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. -->
| * Fix calculation of block axis for abspos elementsMartin Robinson2023-04-141-2/+1
| | | | | | | | | | | | The calculation of the block axis positioning of absolutely positioned elements was using the inline size of the containing block instead of the block size.
* | Auto merge of #29627 - CYBAI:respect-headers-ct, r=mukilanbors-servo2023-04-143-109/+85
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Respect MIME type from headers instead of caching it Based on the spec, > A [Request](https://fetch.spec.whatwg.org/#request) object’s [MIME type](https://fetch.spec.whatwg.org/#concept-body-mime-type) is to return the result of [extracting a MIME type](https://fetch.spec.whatwg.org/#concept-header-extract-mime-type) from its [request](https://fetch.spec.whatwg.org/#concept-request-request)’s [header list](https://fetch.spec.whatwg.org/#concept-request-header-list). request and response should always return the MIME type from their header list. As we're currently caching the mime type directly, this PR will help to remove the caching field and always retrieve from headers instead. --- - [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) - [x] There are tests for these changes
| * Update steps comment to match latest (2023-04-14) speccybai2023-04-143-97/+81
| |
| * Respect MIME type from headers instead of caching itcybai2023-04-132-12/+4
| |
* | Handle min/max sizes in non-replaced positioned boxesDelan Azabani2023-04-121-61/+142
|/
* Remove unnecessary steps from "multipart/form-data encoding algorithm"Yutaro Ohno2023-04-071-9/+3
| | | | | | | | | | | | | | | The specifications for the "multipart/form-data encoding algorithm" has changed [1], and the "_charset_" is not now handled here. Remove no longer necessary steps from the "multipart/form-data encoding algorithm". Similar to the "text/plain encoding algorithm" case fixed by f0818aa3 (Remove unnecessary steps from "text/plain encoding algorithm"). [1]: https://github.com/whatwg/html/pull/3645 Signed-off-by: Yutaro Ohno <yutaro.ono.418@gmail.com>
* Remove unnecessary steps from "text/plain encoding algorithm"Yutaro Ohno2023-04-051-12/+7
| | | | | | | | | | | | | | | | | For "text/plain encoding algorithm", the specification [1] has changed [2] and "_charset_" is not now handled here. It's supposed to be handled in "construct the form data set" algorithm, and we've already implemented that [3]. So we now have extra steps for "text/plain encoding" algorithm. Remove no longer necessary steps from text/plain encoding algorithm so that it meets the specification. [1]: https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#text/plain-encoding-algorithm [2]: https://github.com/whatwg/html/pull/3645 [3]: https://github.com/servo/servo/pull/25217 Signed-off-by: Yutaro Ohno <yutaro.ono.418@gmail.com>
* Add support for <iframe> elements for Layout 2020Martin Robinson2023-04-0414-115/+280
| | | | | | This change adds support for the <iframe> element to Layout 2020. In addition, certain aspects of the implementation are made the same between both layout systems.
* Implement URL.canParseYutaro Ohno2023-04-022-0/+24
| | | | | | | | | Add an implementation of `URL.canParse` as a static method. See [here][1] for the specification. [1]: https://url.spec.whatwg.org/#dom-url-canparse Signed-off-by: Yutaro Ohno <yutaro.ono.418@gmail.com>
* Update user agent stringsAlex Touchet2023-03-301-7/+7
|
* Auto merge of #29396 - delan:window-getter, r=jdmbors-servo2023-03-289-225/+646
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | HTML #named-access-on-the-window-object This patch implements [named access on the window object](https://html.spec.whatwg.org/#named-access-on-the-window-object) based on @pylbrecht’s and @yvt’s previous work (see also #27952, #25562, #21869, #19904). That work makes 130 tests pass, and I’ve made some additional changes to make [the test for the feature itself](https://wpt.live/webidl/ecmascript-binding/window-named-properties-object.html) pass too, but I haven’t worked with mozjs before, so I have no idea if I’ve gone about my changes the Right Way. In particular, this patch: * [x] applies @pylbrecht’s patch (#27952) * [x] resolves conflicts related to #29079 and #28546 (5ae0ca48f8a74e4bae04f8bc9e50252a05e4c1e1) * [x] applies @yvt’s patch to the segfault in getPrototypeIfOrdinary (1e24ffdec6e91784b76a8f02bda26e8de0420c94) * [x] reverts the change introducing Untransplantable (76dc35a2b4ddd39f588b6c0b4e9bd46346888606), since #28534 was abandoned in favour of #28536 * [x] triages the unexpected WPT results, updating expectations as needed (see below) * [x] fixes the failures in /webidl/ecmascript-binding/window-named-properties-object.html (3844f69ea9b591b766fee3537f640e7aae05bb11) * [x] fixes the failures in the [[GetOwnProperty]] subtest (75c24e9c134c531f8fc893a185683ea2e609a47e) * [x] fixes the failures in the [[DefineOwnProperty]] subtest (e4e7a14e514db75c3d6694fb1aaeb24d04c9ae81) * [x] fixes the failures in the [[HasProperty]] subtest (75c24e9c134c531f8fc893a185683ea2e609a47e) * [x] fixes the failures in the [[Get]] subtest (4bafb273d0d1d57589cede88ba2696b0e42920a9) * [x] fixes the failures in the [[Set]] (direct) subtest (e4e7a14e514db75c3d6694fb1aaeb24d04c9ae81) * [x] fixes the failures in the [[Delete]] subtest (4bafb273d0d1d57589cede88ba2696b0e42920a9) * [x] fixes the failures in the [[OwnPropertyKeys]] subtest (afcd24a2973557509438833b8fe06a24377710f1) * [x] resolves the todos and fixmes * [x] Document: handle exposed objects ×3 (ed3e37bb22276031e0423dfa8005bc79ab673913) * [x] Window::NamedGetter: document.get_elements_with_id() (618ef5744645bb14405d95177bf49aa3b98439dc) * [x] get_own_property_descriptor: check for interactions with indexed access (b906faee59aa15f716662c223fc61758c4053299) * [x] create trap: pass proper classp (618ef5744645bb14405d95177bf49aa3b98439dc) <details><summary>131× tests that now pass</summary> * **/webidl/ecmascript-binding/window-named-properties-object.html** *directly relevant to this patch* * **/FileAPI/Blob-methods-from-detached-frame.html** done #29450 #29451 * **/cors/script-304.html** * **/css/CSS2/abspos/adjacent-to-relpos-inline-in-inline-that-had-block.html** * **/css/CSS2/abspos/adjacent-to-relpos-inline-that-had-block.html** * **/css/CSS2/floats-clear/remove-block-before-self-collapsing-sibling-with-clearance.html** * **/css/CSS2/floats/computed-float-position-absolute.html** * **/css/CSS2/normal-flow/block-in-inline-hittest-float-001.html** * **/css/CSS2/normal-flow/block-in-inline-insert-018.html** * **/css/CSS2/normal-flow/margin-collapse-through-percentage-padding.html** * **/css/CSS2/positioning/abspos-change-in-inline-block.html** * **/css/CSS2/positioning/abspos-width-change-inline-container-001.html** * **/css/CSS2/positioning/detach-abspos-before-layout.html** * **/css/CSS2/positioning/relpos-percentage-left-in-scrollable-2.html** * **/css/CSS2/positioning/relpos-percentage-left-in-scrollable.html** * **/css/CSS2/stacking-context/composite-change-after-scroll-preserves-stacking-order.html** * **/css/CSS2/stacking-context/opacity-change-parent-stacking-context.html** * **/css/CSS2/stacking-context/opacity-change-twice-stacking-context.html** * **/css/CSS2/stacking-context/opacity-transition-change-parent-stacking-context.html** * **/css/css-animations/animation-base-response-002.html** * **/css/css-animations/style-animation-parsing.html** * **/css/css-backgrounds/background-clip-color-repaint.html** * **/css/css-backgrounds/background-image-gradient-currentcolor-conic-repaint.html** * **/css/css-backgrounds/background-image-gradient-currentcolor-linear-repaint.html** * **/css/css-backgrounds/background-image-gradient-currentcolor-radial-repaint.html** * **/css/css-backgrounds/background-image-none-gradient-repaint.html** * **/css/css-backgrounds/border-radius-dynamic-from-no-radius.html** * **/css/css-backgrounds/child-move-reveals-parent-background.html** * **/css/css-color/filters-under-will-change-opacity.html** * **/css/css-flexbox/anonymous-flex-item-001.html** * **/css/css-flexbox/anonymous-flex-item-003.html** * **/css/css-flexbox/dynamic-bsize-change.html** * **/css/css-flexbox/flex-aspect-ratio-img-row-016.html** * **/css/cssom/at-namespace.html** * **/css/cssom/computed-style-002.html** * **/css/cssom/getComputedStyle-display-none-002.html** * **/css/cssom/getComputedStyle-display-none-003.html** * **/css/cssom/preferred-stylesheet-reversed-order.html** * **/css/cssom-view/HTMLImageElement-x-and-y-ignore-transforms.html** * **/css/cssom-view/pt-to-px-width.html** * **/css/cssom-view/scroll-back-to-initial-position.html** * **/css/css-text-decor/text-decoration-color-recalc-002.html** * **/css/css-text-decor/text-decoration-line-grammar-error-color-dynamic-001.optional.html** * **/css/css-text-decor/text-decoration-line-spelling-error-color-dynamic-001.optional.html** * **/css/css-text/text-indent/percentage-value-intrinsic-size.html** * **/css/css-text/white-space/display-contents-remove-whitespace-change.html** * **/css/css-text/white-space/white-space-empty-text-sibling.html** * **/css/css-transforms/change-perspective-property.html** * **/css/css-transforms/change-scale-wide-range.html** * **/css/css-transforms/change-transform-origin-property.html** * **/css/css-transforms/dynamic-fixed-pos-cb-change.html** * **/css/css-transforms/individual-transform/change-rotate-property.html** * **/css/css-transforms/individual-transform/change-scale-property.html** * **/css/css-transforms/paint-order-with-transform-change.html** * **/css/css-transforms/size-change-under-backface-visibility-hidden.html** * **/css/css-transforms/subpixel-transform-changes-001.html** * **/css/css-transforms/subpixel-transform-changes-002.html** * **/css/css-transforms/subpixel-transform-changes-003.html** * **/css/css-transforms/subpixel-transform-changes-004.html** * **/css/css-transitions/transition-reparented.html** * **/css/css-ui/historical/moz-user-modify-01.html** * **/css/css-ui/historical/user-modify-01.html** * **/css/css-ui/historical/webkit-user-modify-01.html** * **/css/css-ui/resize-change-margin.html** * **/css/css-ui/text-overflow-change-color.html** * **/css/css-ui/text-overflow-ellipsis-width-001.html** * **/css/css-values/animations/line-height-lh-transition.html** * **/css/css-values/calc-nesting.html** * **/css/css-values/update-subpixel-rem-unit.html** * **/css/css-values/viewport-units-modify.html** * **/css/css-variables/css-variable-change-style-001.html** * **/css/css-variables/css-variable-change-style-002.html** * **/css/css-variables/variable-cycles.html** * **/css/selectors/attribute-selectors/style-attribute-selector.html** * **/css/selectors/i18n/lang-pseudo-class-disconnected.html** * **/css/selectors/invalidation/attribute.html** * **/css/selectors/invalidation/class-id-attr.html** * **/css/selectors/invalidation/defined.html** * **/css/selectors/invalidation/sheet-going-away-001.html** * **/css/selectors/invalidation/sibling.html** * **/css/selectors/missing-right-token.html** * **/css/selectors/not-complex.html** * **/css/selectors/not-specificity.html** * **/css/selectors/nth-of-type-namespace.html** * **/css/selectors/selectors-case-sensitive-001.html** * **/css/selectors/visited-inheritance.html** * **/custom-elements/CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html** * **/dom/events/event-global-is-still-set-when-coercing-beforeunload-result.html** * **/dom/nodes/remove-and-adopt-thcrash.html** * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigate-parent-while-child-loading.html** * **/html/browsers/history/the-history-interface/history_back_cross_realm_method.html** * **/html/browsers/history/the-history-interface/history_forward_cross_realm_method.html** * **/html/browsers/history/the-history-interface/history_go_cross_realm_method.html** * **/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html** * **/html/dom/elements/images/bypass-cache-revalidation.html** * **/html/rendering/non-replaced-elements/tables/table-ua-stylesheet.html** * **/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-alt-crash-001.html** * **/html/rendering/replaced-elements/embedded-content/change-src-while-not-displayed.html** * **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe-in-multicol.sub.html** * **/html/rendering/replaced-elements/embedded-content/cross-domain-iframe.sub.html** * **/html/rendering/replaced-elements/embedded-content/tall-cross-domain-iframe-in-scrolled.sub.html** * **/html/rendering/widgets/the-select-element/select-invalidation.html** * **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation.html** * **/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment.html** * **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html** * **/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html** * **/html/semantics/embedded-content/the-iframe-element/iframe-network-error.sub.html** * **/html/semantics/embedded-content/the-iframe-element/srcdoc-anchor.html** * **/html/semantics/embedded-content/the-iframe-element/srcdoc-attribute-reset.html** * **/html/semantics/embedded-content/the-img-element/image-compositing-change.html** * **/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html** * **/html/semantics/embedded-content/the-img-element/image-loading-lazy-clip-path.html** * **/html/semantics/embedded-content/the-img-element/image-loading-lazy-zero-intersection-area.html** * **/html/semantics/embedded-content/the-img-element/image-loading-subpixel-clip.html** * **/html/semantics/forms/form-submission-0/form-double-submit-to-different-origin-frame.html** * **/html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html** * **/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html** * **/html/semantics/forms/the-button-element/button-willvalidate-readonly-attribute.html** * **/html/semantics/forms/the-input-element/datetime-local-trailing-zeros.html** * **/html/semantics/forms/the-input-element/radio-morphed.html** * **/html/semantics/forms/the-progress-element/progress.html** * **/html/semantics/forms/the-select-element/select-willvalidate-readonly-attribute.html** * **/html/semantics/selectors/pseudo-classes/placeholder-shown-type-change.html** * **/html/syntax/serializing-html-fragments/initial-linefeed-pre.html** * **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-errorevent.html** * **/html/webappapis/scripting/events/event-handler-processing-algorithm-error/frameset-element-synthetic-event.html** * **/quirks/unitless-length/excluded-properties-001.html** * **/quirks/unitless-length/excluded-properties-003.html** * **/selection/caret/empty-elements.html** * **/selection/contenteditable/cefalse-on-boundaries.html** * **/selection/textcontrols/onselectionchange-content-attribute.html** </details> <details><summary>94× tests that improve but still fail in a way that’s clearly the subject of the test</summary> * **/css/css-animations/animation-base-response-001.html** * **/css/css-backgrounds/background-image-gradient-currentcolor-visited.html** * **/css/css-backgrounds/inheritance.sub.html** * **/css/css-backgrounds/local-attachment-content-box-scroll.html** * **/css/css-color/canvas-change-opacity.html** * **/css/css-color/color-initial-canvastext.html** * **/css/css-flexbox/flex-aspect-ratio-img-column-010.html** * **/css/css-flexbox/flex-aspect-ratio-img-row-004.html** * **/css/css-fonts/parsing/font-face-src-format.html** getter works but insertRule does nothing * **/css/css-fonts/parsing/font-face-src-list.html** as above * **/css/css-fonts/parsing/font-face-src-local.html** as above, but also delayed length change? * **/css/css-fonts/parsing/font-face-src-tech.html** as above * **/css/css-text/white-space/trailing-space-before-br-001.html** * **/css/css-transforms/3d-rendering-context-behavior.html** failures are subject of test, but also blank page? * **/css/css-transforms/individual-transform/change-translate-property.html** * **/css/css-transforms/preserve-3d-flat-grouping-properties.html** * **/css/css-transforms/transforms-support-calc.html** * **/css/css-transitions/inherit-height-transition.html** * **/css/css-ui/inheritance.html** * **/css/css-ui/parsing/outline-width-computed.html** failures are subject of test; https://drafts.csswg.org/css-values-4/#snap-a-length-as-a-border-width * **/css/css-values/lh-unit-003.html** * **/css/css-values/viewport-units-compute.html** * **/css/css-values/viewport-units-keyframes.html** * **/css/css-values/viewport-units-media-queries.html** * **/css/css-values/viewport-units-writing-mode.html** * **/css/cssom-view/elementsFromPoint-table.html** * **/css/cssom-view/scroll-behavior-default-css.html** * **/css/cssom-view/scroll-behavior-element.html** * **/css/cssom-view/scroll-behavior-main-frame-root.html** * **/css/cssom-view/scroll-behavior-main-frame-window.html** * **/css/cssom-view/scroll-behavior-smooth-navigation.html** * **/css/cssom-view/scroll-behavior-subframe-root.html** * **/css/cssom/computed-style-003.html** * **/css/cssom/computed-style-004.html** * **/css/cssom/font-variant-shorthand-serialization.html** * **/css/selectors/dir-selector-auto.html** * **/css/selectors/has-argument-with-explicit-scope.html** * **/css/selectors/has-basic.html** * **/css/selectors/has-relative-argument.html** * **/css/selectors/invalidation/attribute-or-elemental-selectors-in-has.html** * **/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html** * **/css/selectors/invalidation/dir-pseudo-class-in-has.html** * **/css/selectors/invalidation/empty-pseudo-in-has.html** * **/css/selectors/invalidation/has-in-adjacent-position.html** * **/css/selectors/invalidation/has-in-ancestor-position.html** * **/css/selectors/invalidation/has-in-parent-position.html** * **/css/selectors/invalidation/has-in-sibling-position.html** * **/css/selectors/invalidation/has-invalidation-after-removing-non-first-element.html** * **/css/selectors/invalidation/has-invalidation-for-wiping-an-element.html** * **/css/selectors/invalidation/has-sibling.html** * **/css/selectors/invalidation/has-with-not.html** * **/css/selectors/invalidation/has-with-pseudo-class.html** * **/css/selectors/invalidation/input-pseudo-classes-in-has.html** * **/css/selectors/invalidation/is-pseudo-containing-complex-in-has.html** * **/css/selectors/invalidation/lang-pseudo-class-in-has.html** * **/css/selectors/invalidation/not-pseudo-containing-complex-in-has.html** * **/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html** * **/css/selectors/is-where-basic.html** * **/css/selectors/is-where-not.html** * **/html/rendering/non-replaced-elements/tables/form-in-tables.html** * /html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update- * **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-attribute-changes.html** * **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-normal-descendant-change.html** * **/html/semantics/document-metadata/the-meta-element/color-scheme/meta-color-scheme-remove.html** * **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow-aspect-ratio.html** * **/html/semantics/embedded-content/the-img-element/image-loading-lazy-slow.html** * **/html/semantics/interactive-elements/the-dialog-element/inertness-with-modal-dialogs-and-iframes.html** * **/html/semantics/popovers/popover-stacking.html** * **/referrer-policy/generic/inheritance/popup-inheritance-form-submission.html** * **/resource-timing/resource-reload-TAO.html** * **/selection/bidi/modify.tentative.html** * **/selection/contenteditable/modify.tentative.html** * **/selection/textcontrols/selectionchange.html** * **/css/CSS2/normal-flow/block-in-inline-client-rects-001.html** * **/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html** * **/css/css-animations/computed-style-animation-parsing.html** * **/css/css-variables/variables-substitute-guaranteed-invalid.html** * **/css/cssom-view/elementsFromPoint-simple.html** * **/css/cssom/CSSStyleSheet-modify-after-removal.html** * **/css/cssom/getComputedStyle-display-none-001.html** * **/css/selectors/focus-visible-script-focus-001.html** * **/css/selectors/has-specificity.html** * **/css/selectors/invalidation/is.html** * **/css/selectors/invalidation/not-002.html** * **/dom/events/EventListener-handleEvent-cross-realm.html** * **/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html** * **/html/browsers/the-window-object/window-properties.https.html** * **/html/browsers/the-window-object/window-prototype-chain.html** * **/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html** * **/html/dom/aria-element-reflection.html** * **/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-update-with-border-object-fit.html** * **/html/semantics/forms/form-submission-0/form-double-submit-multiple-targets.html** * **/html/semantics/forms/the-input-element/show-picker-cross-origin-iframe.html** * **/html/webappapis/scripting/events/compile-event-handler-lexical-scopes-form-owner.html** * **/quirks/unitless-length/excluded-properties-002.html** </details> <details><summary>22× tests with failures that looked interesting</summary> * 1× CRASH [expected ...] * **/css/css-fonts/crash-large-grapheme-cluster.html** crash is subject of test * 6× FAIL [expected PASS] /... (reftest) * **/css/css-flexbox/anonymous-flex-item-005.html** old pass was spurious * **/css/css-flexbox/anonymous-flex-item-006.html** old pass was spurious * **/css/css-text-decor/text-decoration-line-recalc.html** old pass was spurious; ‘text-decoration’ shorthand unimplemented * **/css/css-ui/appearance-auto-non-html-namespace-001.html** old pass was spurious * **/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html** old pass was spurious * **/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html** old pass was spurious * 13× TIMEOUT [expected ...] * **/css/css-fonts/font-size-monospace-adjust.html** timeout is subject of test; reftest runner bug with 1e10s transition? * **/css/cssom-view/background-change-during-smooth-scroll.html** timeout is subject of test * **/css/selectors/invalidation/has-complexity.html** timeout is subject of test * **/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html** timeout is subject of test; :has() unimplemented * **/fetch/stale-while-revalidate/stale-image.html** timeout is subject of test * **/html/browsers/browsing-the-web/history-traversal/history-traversal-navigates-multiple-frames.html** timeout is subject of test * **/html/rendering/widgets/appearance/appearance-animation-001.html** timeout is subject of test; reftest runner bug with 1e10s animation? * **/html/rendering/widgets/appearance/appearance-animation-002.html** timeout is subject of test; reftest runner bug with 1e10s animation? * **/html/rendering/widgets/appearance/appearance-transition-001.html** timeout is subject of test; reftest runner bug with 1e10s transition? * **/html/rendering/widgets/appearance/appearance-transition-002.html** timeout is subject of test; reftest runner bug with 1e10s transition? * **/html/rendering/widgets/appearance/appearance-transition-003.html** timeout is subject of test; reftest runner bug with 1e10s transition? * **/resource-timing/opaque-origin.html** timeout is subject of test * **/selection/textcontrols/selectionchange-bubble.html** timeout is subject of test * **/webidl/ecmascript-binding/invalid-this-value-cross-realm.html** ‘HTMLDocument’ unimplemented </details> --- <!-- 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 #27949 (GitHub issue number if applicable) <!-- Either: --> - [x] There are tests for these changes (including but not limited to web-platform-tests/wpt#39211) OR - [ ] These changes do not require tests because ___