Skip to content

script: Add initial implementation of italic command#44432

Merged
TimvdLippe merged 1 commit into
servo:mainfrom
TimvdLippe:initial-italic
Apr 23, 2026
Merged

script: Add initial implementation of italic command#44432
TimvdLippe merged 1 commit into
servo:mainfrom
TimvdLippe:initial-italic

Conversation

@TimvdLippe
Copy link
Copy Markdown
Contributor

@TimvdLippe TimvdLippe commented Apr 22, 2026

While working on this, I realised that the current_state
computation was wrong. Instead, the spec actually clearly
defines what to do, but I hadn't found it yet. The code
now correctly implements state computation and voila, it
also fixes the previous underline issue that I didn't
understand why it would fail.

Part of #25005

Testing: WPT

@TimvdLippe TimvdLippe requested a review from gterzian as a code owner April 22, 2026 09:27
@TimvdLippe TimvdLippe added the T-linux-wpt Do a try run of the WPT label Apr 22, 2026
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Apr 22, 2026
@github-actions github-actions Bot removed the T-linux-wpt Do a try run of the WPT label Apr 22, 2026
@github-actions
Copy link
Copy Markdown

🔨 Triggering try run (#24770867262) for Linux (WPT)

@github-actions
Copy link
Copy Markdown

Test results for linux-wpt from try job (#24770867262):

Flaky unexpected result (32)
  • TIMEOUT /FileAPI/url/url-in-tags-revoke.window.html (#19978)
    • TIMEOUT [expected PASS] subtest: Fetching a blob URL immediately before revoking it works in <script> tags.

      Test timed out
      

  • OK /IndexedDB/transaction-create_in_versionchange.any.html (#44200)
    • FAIL [expected PASS] subtest: Attempt to create new transactions inside a versionchange transaction

      assert_array_equals: events expected property 4 to be "open_rq.success: [object IDBDatabase]" but got "complete_count.success: 2" (expected array ["versionchange_add.success: 1", "versionchange_count.success: 0", "versionchange_add2.success: 2", "versionchange_txn.complete", "open_rq.success: [object IDBDatabase]", "complete_count.success: 2", "complete2_get.success: 1"] got ["versionchange_add.success: 1", "versionchange_count.success: 0", "versionchange_add2.success: 2", "versionchange_txn.complete", "complete_count.success: 2", "open_rq.success: [object IDBDatabase]", "complete2_get.success: 1"])
      

  • ERROR [expected OK] /_mozilla/mozilla/img-load-more-than-cache.html
  • FAIL [expected PASS] /css/css-backgrounds/background-size-041.html
  • FAIL [expected PASS] /css/css-backgrounds/border-image-repeat-space-9.html
  • OK /css/css-cascade/layer-font-face-override.html (#35935)
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 1
    • PASS [expected FAIL] subtest: @font-face override update with appended sheet 2
  • CRASH [expected OK] /fetch/api/policies/referrer-origin-worker.html
  • CRASH [expected OK] /fetch/api/redirect/redirect-to-dataurl.any.worker.html
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/accumulated-oversized-payload.https.window.html (#41705)
  • ERROR [expected OK] /fetch/fetch-later/quota/same-origin-iframe/sandboxed-iframe.https.window.html (#41704)
  • CRASH [expected OK] /html/anonymous-iframe/local-storage-initial-empty-document.tentative.https.window.html
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • PASS [expected FAIL] subtest: Cross-origin navigation started from unload handler must be ignored
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • PASS [expected FAIL] subtest: Same-origin navigation started from unload handler must be ignored
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-submit.html (#44028)
  • OK /html/browsers/history/the-history-interface/traverse_the_history_2.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

      assert_array_equals: Pages opened during history navigation expected property 1 to be 5 but got 3 (expected array [6, 5] got [6, 3])
      

  • ERROR [expected OK] /html/canvas/offscreen/text/2d.text.measure.getActualBoundingBox.tentative.html (#43710)
  • OK /html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html (#39694)
    • FAIL [expected PASS] subtest: Meta refresh is blocked by the allow-scripts sandbox flag at its creation time, not when refresh comes due

      uncaught exception: Error: assert_unreached: The iframe from which the meta came from must not refresh Reached unreachable code
      

  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigate_other_frame_popup.sub.html (#39702)
    • TIMEOUT [expected FAIL] subtest: Sandboxed iframe can not navigate other frame's popup

      Test timed out
      

  • OK /html/semantics/forms/form-submission-0/jsurl-form-submit.tentative.html (#36489)
    • PASS [expected FAIL] subtest: Verifies that form submissions scheduled inside javascript: urls take precedence over the javascript: url's return value.
  • CRASH [expected ERROR] /html/semantics/forms/the-select-element/customizable-select/select-appearance-button-after-span.html
  • OK /html/semantics/scripting-1/the-script-element/module/choice-of-error-1.html (#44058)
    • PASS [expected FAIL] subtest: Parse errors in different files should be reported depending on different roots
  • CRASH [expected OK] /html/webappapis/scripting/reporterror.any.worker.html
  • PASS [expected FAIL] /png/apng/fcTL-dispose-none.html (#41817)
  • TIMEOUT [expected OK] /pointerevents/compat/pointerevent_touch-action_two-finger_interaction.html
    • NOTRUN [expected PASS] subtest: touch two-finger pan on 'touch-action: pan-x pan-y'
    • NOTRUN [expected FAIL] subtest: touch two-finger pan on 'touch-action: pinch-zoom'
  • OK /resource-timing/test_resource_timing.https.html (#25216)
    • PASS [expected FAIL] subtest: PerformanceEntry has correct name, initiatorType, startTime, and duration (img)
  • OK [expected TIMEOUT] /trusted-types/trusted-types-navigation.html?06-10 (#37920)
    • PASS [expected TIMEOUT] subtest: Navigate a frame via anchor with javascript:-urls w/ default policy in report-only mode.
    • FAIL [expected NOTRUN] subtest: Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in enforcing mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

    • FAIL [expected NOTRUN] subtest: Navigate a window via anchor with javascript:-urls w/ a default policy throwing an exception in report-only mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

  • TIMEOUT /trusted-types/trusted-types-navigation.html?31-35 (#38034)
    • TIMEOUT [expected PASS] subtest: Navigate a frame via form-submission with javascript:-urls in report-only mode.

      Test timed out
      

    • NOTRUN [expected TIMEOUT] subtest: Navigate a frame via form-submission with javascript:-urls w/ default policy in report-only mode.
  • OK /trusted-types/trusted-types-reporting.html (#43737)
    • PASS [expected FAIL] subtest: Trusted Type violation report: creating a forbidden-but-not-reported policy.
    • PASS [expected FAIL] subtest: Trusted Type violation report: sample for SVGScriptElement href assignment by setAttribute
    • PASS [expected FAIL] subtest: Trusted Type violation report: Worker constructor
  • CRASH [expected OK] /webaudio/the-audio-api/the-mediastreamaudiodestinationnode-interface/closed-audiocontext-construction.html
  • OK [expected TIMEOUT] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.html (#29053)
    • FAIL [expected TIMEOUT] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe

      assert_true: about:blank window opened by 3P iframe does not inherit 3P iframe's StorageKey expected true got false
      

  • ERROR [expected OK] /workers/baseurl/alpha/sharedworker-in-worker.html (#21315)
Stable unexpected results that are known to be intermittent (20)
  • OK /IndexedDB/idbdatabase_deleteObjectStore.any.worker.html (#43776)
    • PASS [expected FAIL] subtest: Deleted object store's name should be removed from database's list. Attempting to use a deleted IDBObjectStore should throw an InvalidStateError
  • TIMEOUT [expected OK] /_mozilla/mozilla/window-resize-event.html (#36741)
    • TIMEOUT [expected PASS] subtest: Popup onresize event fires after resizeTo

      Test timed out
      

  • OK /_webgl/conformance/textures/misc/texture-upload-size.html (#21770)
    • FAIL [expected PASS] subtest: WebGL test #45

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #47

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #49

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #51

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • PASS [expected FAIL] subtest: WebGL test #53
    • PASS [expected FAIL] subtest: WebGL test #55
    • PASS [expected FAIL] subtest: WebGL test #57
    • PASS [expected FAIL] subtest: WebGL test #59
    • FAIL [expected PASS] subtest: WebGL test #61

      assert_true: Texture was smaller than the expected size 2x2 expected true got false
      

    • FAIL [expected PASS] subtest: WebGL test #63

      assert_true: getError expected: INVALID_VALUE. Was NO_ERROR : when calling texSubImage2D with the same texture upload with offset 1, 1 expected true got false
      

    • And 14 more unexpected results...
  • ERROR /_webgl/conformance2/textures/misc/tex-3d-size-limit.html (#44383)
    • FAIL [expected PASS] subtest: WebGL test #77

      assert_true: successfullyParsed should be true (of type boolean). Was undefined (of type undefined). expected true got false
      

  • OK [expected CRASH] /content-security-policy/meta/sandbox-iframe.html (#43478)
  • OK /css/css-fonts/generic-family-keywords-001.html (#37467)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted generic(fangsong)

      assert_equals: quoted generic(fangsong) matches  @font-face rule expected 50 but got 30
      

  • OK /css/css-fonts/generic-family-keywords-003.html (#38994)
    • PASS [expected FAIL] subtest: @font-face matching for quoted and unquoted cursive (drawing text in a canvas)
    • FAIL [expected PASS] subtest: @font-face matching for quoted and unquoted ui-serif (drawing text in a canvas)

      assert_equals: unquoted ui-serif does not match @font-face rule expected 40 but got 125
      

  • OK /dom/nodes/moveBefore/iframe-document-preserve.window.html (#43152)
    • FAIL [expected PASS] subtest: moveBefore(): cross-origin iframe is preserved: remove new parent

      assert_equals: iframe does not fire a second load event expected 1 but got 0
      

  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-mode
    • FAIL [expected PASS] subtest: sec-fetch-storage-access - Cross-site

      promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
      

  • TIMEOUT /fetch/metadata/generated/css-images.https.sub.tentative.html (#42229)
    • FAIL [expected PASS] subtest: content sec-fetch-site - Cross-Site -> Same-Site

      assert_unreached: Reached unreachable code
      

    • FAIL [expected PASS] subtest: content sec-fetch-site - Cross-Site -> Cross-Site

      assert_unreached: Reached unreachable code
      

    • FAIL [expected PASS] subtest: content sec-fetch-site - Same-Origin -> Same Origin

      assert_unreached: Reached unreachable code
      

    • FAIL [expected PASS] subtest: content sec-fetch-site - Same-Origin -> Same-Site

      assert_unreached: Reached unreachable code
      

    • FAIL [expected PASS] subtest: content sec-fetch-site - Same-Origin -> Cross-Site

      assert_unreached: Reached unreachable code
      

    • FAIL [expected PASS] subtest: content sec-fetch-site - Same-Site -> Cross-Site

      assert_unreached: Reached unreachable code
      

  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • FAIL [expected PASS] subtest: content sec-fetch-site - HTTPS downgrade-upgrade

      assert_unreached: Reached unreachable code
      

  • OK [expected ERROR] /focus/focus-event-after-switching-iframes.sub.html (#40368)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/005.html (#27062)
    • PASS [expected FAIL] subtest: Link with onclick navigation and href navigation
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • PASS [expected FAIL] subtest: load event does not fire on window.open('about:blank')
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/form-requestsubmit.html (#44098)
    • FAIL [expected TIMEOUT] subtest: Replace before load, triggered by formElement.requestSubmit()

      assert_equals: expected "http://web-platform.test:8000/common/blank.html?thereplacement=" but got "http://web-platform.test:8000/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/resources/code-injector.html?pipe=sub(none)&code=%0A%20%20%20%20const%20form%20%3D%20document.createElement(%22form%22)%3B%0A%20%20%20%20form.action%20%3D%20%22%2Fcommon%2Fblank.html%22%3B%0A%0A%20%20%20%20const%20input%20%3D%20document.createElement(%22input%22)%3B%0A%20%20%20%20input.type%20%3D%20%22hidden%22%3B%0A%20%20%20%20input.name%20%3D%20%22thereplacement%22%3B%0A%20%20%20%20form.append(input)%3B%0A%0A%20%20%20%20document.currentScript.before(form)%3B%0A%20%20%20%20form.requestSubmit()%3B%0A%20%20"
      

  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • FAIL [expected PASS] subtest: Multiple history traversals, last would be aborted

      assert_array_equals: Pages opened during history navigation expected property 1 to be 5 but got 3 (expected array [6, 5] got [6, 3])
      

  • TIMEOUT /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • TIMEOUT [expected PASS] subtest: Non-HTMLElement should not support autofocus

      Test timed out
      

    • NOTRUN [expected FAIL] subtest: Host element with delegatesFocus should support autofocus
  • OK /mixed-content/tentative/autoupgrades/mixed-content-cors.https.sub.html (#41123)
    • PASS [expected FAIL] subtest: Cross-Origin video should get upgraded even if CORS is set
  • OK /resource-timing/buffer-full-add-then-clear.html (#40819)
    • FAIL [expected PASS] subtest: Test that if the buffer is cleared after entries were added to the secondary buffer, those entries make it into the primary one

      assert_equals: Number of entries does not match the expected value. expected 3 but got 0
      

  • OK /resource-timing/buffer-full-when-populate-entries.html (#44408)
    • FAIL [expected PASS] subtest: Test that a buffer full event does not bubble and that resourcetimingbufferfull is called only once per overflow

      assert_equals: onresourcetimingbufferfull should have been invoked once. expected 1 but got 0
      

Stable unexpected results (88)
  • CRASH [expected OK] /dom/ranges/Range-cloneContents.html
  • CRASH [expected OK] /dom/ranges/Range-cloneRange.html
  • CRASH [expected OK] /dom/ranges/Range-collapse.html
  • CRASH [expected OK] /dom/ranges/Range-commonAncestorContainer-2.html
  • CRASH [expected OK] /dom/ranges/Range-commonAncestorContainer.html
  • CRASH [expected OK] /dom/ranges/Range-compareBoundaryPoints.html
  • CRASH [expected OK] /dom/ranges/Range-deleteContents.html
  • CRASH [expected OK] /dom/ranges/Range-extractContents.html
  • CRASH [expected OK] /dom/ranges/Range-in-shadow-after-the-shadow-removed.html?mode=closed
  • CRASH [expected OK] /dom/ranges/Range-in-shadow-after-the-shadow-removed.html?mode=open
  • CRASH [expected OK] /dom/ranges/Range-insertNode.html
  • CRASH [expected OK] /dom/ranges/Range-isPointInRange.html
  • CRASH [expected OK] /dom/ranges/Range-mutations-appendChild.html
  • CRASH [expected OK] /dom/ranges/Range-mutations-appendData.html
  • CRASH [expected OK] /dom/ranges/Range-mutations-dataChange.html
  • CRASH [expected OK] /dom/ranges/Range-mutations-deleteData.html
  • CRASH [expected OK] /dom/ranges/Range-mutations-insertData.html
  • CRASH [expected OK] /dom/ranges/Range-mutations-replaceData.html
  • CRASH [expected OK] /dom/ranges/Range-mutations-splitText.html
  • CRASH [expected OK] /dom/ranges/Range-set.html
  • CRASH [expected OK] /dom/ranges/Range-surroundContents.html
  • CRASH [expected PASS] /editing/crashtests/execCommand-backcolor-and-hilitecolor-in-empty-iframe-in-designMode.html
  • CRASH [expected OK] /editing/other/delete-in-inline-editing-host-under-shadow-root.html
  • CRASH [expected OK] /editing/other/delete-in-shadow-hosted-in-body.html
  • OK /editing/other/editing-div-outside-body.html?body
    • PASS [expected FAIL] subtest: Test for execCommand("italic", false, undefined) in "<div>a[b]c</div>"
  • OK /editing/other/editing-div-outside-body.html?designMode
    • PASS [expected FAIL] subtest: Test for execCommand("italic", false, undefined) in "<div>a[b]c</div>"
  • OK /editing/other/editing-div-outside-body.html?div-in-body
    • PASS [expected FAIL] subtest: Test for execCommand("italic", false, undefined) in "<div>a[b]c</div>"
  • OK /editing/other/editing-div-outside-body.html?html
    • PASS [expected FAIL] subtest: Test for execCommand("italic", false, undefined) in "<div>a[b]c</div>"
  • OK /editing/other/editing-div-outside-body.html?nothing
    • PASS [expected FAIL] subtest: Test for execCommand("italic", false, undefined) in "<div>a[b]c</div>"
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-head.tentative.html?designMode=off&white-space=normal
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-head.tentative.html?designMode=off&white-space=pre
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-head.tentative.html?designMode=off&white-space=pre-line
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-head.tentative.html?designMode=off&white-space=pre-wrap
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-head.tentative.html?designMode=on&white-space=normal
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-head.tentative.html?designMode=on&white-space=pre
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-head.tentative.html?designMode=on&white-space=pre-line
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-head.tentative.html?designMode=on&white-space=pre-wrap
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-html.tentative.html?designMode=off&white-space=normal
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-html.tentative.html?designMode=off&white-space=pre
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-html.tentative.html?designMode=off&white-space=pre-line
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-html.tentative.html?designMode=off&white-space=pre-wrap
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-html.tentative.html?designMode=on&white-space=normal
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-html.tentative.html?designMode=on&white-space=pre
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-html.tentative.html?designMode=on&white-space=pre-line
  • CRASH [expected OK] /editing/other/insertparagraph-in-child-of-html.tentative.html?designMode=on&white-space=pre-wrap
  • OK /editing/other/removing-inline-style-specified-by-parent-block.tentative.html?i
    • PASS [expected FAIL] subtest: Disabling style to text, it's applied to the parent block
  • CRASH [expected OK] /editing/other/typing-around-link-element-at-collapsed-selection.tentative.html?target=DesignMode
  • CRASH [expected OK] /editing/other/typing-around-link-element-at-collapsed-selection.tentative.html?target=DesignMode&child=b
  • CRASH [expected OK] /editing/other/typing-around-link-element-at-collapsed-selection.tentative.html?target=DesignMode&parent=b
  • CRASH [expected OK] /editing/other/typing-around-link-element-at-collapsed-selection.tentative.html?target=DesignMode&parent=b&child=i
  • CRASH [expected OK] /editing/other/typing-around-link-element-at-non-collapsed-selection.tentative.html?target=DesignMode
  • CRASH [expected OK] /editing/other/typing-around-link-element-at-non-collapsed-selection.tentative.html?target=DesignMode&child=b
  • CRASH [expected OK] /editing/other/typing-around-link-element-at-non-collapsed-selection.tentative.html?target=DesignMode&parent=b
  • CRASH [expected OK] /editing/other/typing-around-link-element-at-non-collapsed-selection.tentative.html?target=DesignMode&parent=b&child=i
  • CRASH [expected OK] /editing/run/undo-redo.html
  • CRASH [expected PASS] /html/syntax/serializing-html-fragments/range-on-pi-contextual-fragment-crash.html
  • CRASH [expected OK] /selection/addRange-00.html
  • CRASH [expected OK] /selection/addRange-04.html
  • CRASH [expected OK] /selection/addRange-08.html
  • CRASH [expected OK] /selection/addRange-12.html
  • CRASH [expected OK] /selection/addRange-16.html
  • CRASH [expected OK] /selection/addRange-20.html
  • CRASH [expected OK] /selection/addRange-24.html
  • CRASH [expected OK] /selection/addRange-28.html
  • CRASH [expected OK] /selection/addRange-32.html
  • CRASH [expected OK] /selection/addRange-36.html
  • CRASH [expected OK] /selection/addRange-40.html
  • CRASH [expected OK] /selection/addRange-44.html
  • CRASH [expected OK] /selection/addRange-48.html
  • CRASH [expected OK] /selection/addRange-52.html
  • CRASH [expected OK] /selection/addRange-56.html
  • CRASH [expected OK] /selection/collapse-00.html
  • CRASH [expected OK] /selection/collapse-15.html
  • CRASH [expected OK] /selection/collapse-30.html
  • CRASH [expected OK] /selection/deleteFromDocument.html
  • CRASH [expected OK] /selection/move-selection-range-into-different-root.tentative.html
  • CRASH [expected OK] /selection/selectAllChildren.html
  • CRASH [expected OK] /selection/shadow-dom/tentative/Selection-getComposedRanges-range-update.html
  • CRASH [expected OK] /shadow-dom/HighlightRegistry-highlightsFromPoint.html
  • CRASH [expected OK] /shadow-dom/Range-prototype-insertNode.html
  • CRASH [expected PASS] /shadow-dom/crashtests/highlight-api-orphan-node-crash.html
  • CRASH [expected PASS] /shadow-dom/crashtests/highlight-api-remove-node-crash.html
  • CRASH [expected OK] /shadow-dom/untriaged/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-004.html
  • CRASH [expected OK] /shadow-dom/untriaged/user-interaction/ranges-and-selections/test-001.html
  • CRASH [expected OK] /shadow-dom/untriaged/user-interaction/ranges-and-selections/test-002.html
  • CRASH [expected OK] /trusted-types/script-enforcement-001.html
  • CRASH [expected OK] /trusted-types/script-enforcement-002.html
  • CRASH [expected OK] /trusted-types/script-enforcement-004.html

@github-actions
Copy link
Copy Markdown

⚠️ Try run (#24770867262) failed!

Copy link
Copy Markdown
Member

@mrobinson mrobinson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! This fixes so many subtests!

The only small changes I would make here are to the naming of some variables which I struggled a bit to understand when reviewing. As the specification and the resulting code is a bit tricky, I recommend that the names go a bit overboard on descriptiveness.

Comment thread components/script/dom/execcommand/basecommand.rs Outdated
Comment thread components/script/dom/execcommand/basecommand.rs Outdated
@servo-highfive servo-highfive removed the S-awaiting-review There is new code that needs to be reviewed. label Apr 23, 2026
While working on this, I realised that the `current_state`
computation was wrong. Instead, the spec actually clearly
defines what to do, but I hadn't found it yet. The code
now correctly implements state computation and voila, it
also fixes the previous underline issue that I didn't
understand why it would fail.

Part of servo#25005

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Apr 23, 2026
@TimvdLippe TimvdLippe enabled auto-merge April 23, 2026 15:47
@TimvdLippe TimvdLippe added this pull request to the merge queue Apr 23, 2026
@servo-highfive servo-highfive added the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Apr 23, 2026
Merged via the queue into servo:main with commit 9189fe0 Apr 23, 2026
33 checks passed
@TimvdLippe TimvdLippe deleted the initial-italic branch April 23, 2026 16:27
@servo-highfive servo-highfive removed the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Apr 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-awaiting-review There is new code that needs to be reviewed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants