Closed Bug 1813876 Opened 1 year ago Closed 1 year ago

[wpt-sync] Sync PR 38269 - Reland "Update popover post-toggle event naming and behavior"

Categories

(Core :: DOM: Core & HTML, task, P4)

task

Tracking

()

RESOLVED FIXED
111 Branch
Tracking Status
firefox111 --- fixed

People

(Reporter: mozilla.org, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 38269 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/38269
Details from upstream follow.

Mason Freed <masonf@chromium.org> wrote:

Reland "Update popover post-toggle event naming and behavior"

This is a reland of commit 2e5ee120d7fc5df4b6c101e88d03a5f62a73d8b8

It seems that the event coalescing behavior changes cause a segfault
in the event dispatch code. This reland (compare to Patchset 1) just
includes the event renaming, and not the new behavior. I'll land
the new behavior in a separate CL to make it smaller if it gets
reverted again. This part should be safe.

Original change's description:

Update popover post-toggle event naming and behavior

This CL updates the post-toggle event in the following ways:

  1. Rename the 'aftertoggle' event to 'toggle'.
  2. Rename PopoverToggleEvent to ToggleEvent.
  3. Rename the currentState attribute to oldState.
  4. Add event coalescing behavior. If two transitions occur before the
    first 'toggle' event has been fired, cancel the first event and
    queue a replacement that has oldState === newState.

These changes were driven by the corresponding changes to the spec PR:
https://github.com/whatwg/html/pull/8717

Bug: 1307772
Change-Id: Iabc5a9093d7cef3bbd6e54e488d8e571c51ea568
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4195120
Auto-Submit: Mason Freed \<masonf@chromium.org>
Commit-Queue: Joey Arhar \<jarhar@chromium.org>
Reviewed-by: Joey Arhar \<jarhar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1098728}

Bug: 1307772
Change-Id: Iede18bbf05516cec4ee881f1afc663c45380c82e
Reviewed-on: https://chromium-review.googlesource.com/4205710
WPT-Export-Revision: e57a765fc5f1ba7868e61f767f77ac621afdafa8

Component: web-platform-tests → DOM: Core & HTML
Product: Testing → Core

CI Results

Ran 9 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 3 tests and 37 subtests

Status Summary

Firefox

OK : 3
PASS : 14
FAIL : 123

Chrome

OK : 2
PASS : 87
FAIL : 50
ERROR: 1

Safari

OK : 3
PASS : 14
FAIL : 123

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

  • /html/semantics/popovers/idlharness.tentative.html [wpt.fyi]
    • ToggleEvent interface: existence and properties of interface object: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEvent interface object length: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEvent interface object name: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEvent interface: existence and properties of interface prototype object: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEvent interface: existence and properties of interface prototype object's "constructor" property: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEvent interface: existence and properties of interface prototype object's @@unscopables property: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEvent interface: attribute oldState: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEvent interface: attribute newState: FAIL (Chrome: FAIL, Safari: FAIL)
    • HTMLElement interface: operation togglePopover(optional boolean): FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: operation showPopover(): FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: operation hidePopover(): FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: attribute popover: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p1") must inherit property "togglePopover(optional boolean)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: calling togglePopover(optional boolean) on document.getElementById("p1") with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p1") must inherit property "showPopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p1") must inherit property "hidePopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p1") must inherit property "popover" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p2") must inherit property "togglePopover(optional boolean)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: calling togglePopover(optional boolean) on document.getElementById("p2") with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p2") must inherit property "showPopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p2") must inherit property "hidePopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p2") must inherit property "popover" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p3") must inherit property "togglePopover(optional boolean)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: calling togglePopover(optional boolean) on document.getElementById("p3") with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p3") must inherit property "showPopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p3") must inherit property "hidePopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("p3") must inherit property "popover" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: attribute popoverToggleTargetElement: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: attribute popoverHideTargetElement: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: attribute popoverShowTargetElement: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: document.getElementById("i1") must inherit property "popoverToggleTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: document.getElementById("i1") must inherit property "popoverHideTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: document.getElementById("i1") must inherit property "popoverShowTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i1") must inherit property "togglePopover(optional boolean)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: calling togglePopover(optional boolean) on document.getElementById("i1") with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i1") must inherit property "showPopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i1") must inherit property "hidePopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i1") must inherit property "popover" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: document.getElementById("i2") must inherit property "popoverToggleTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: document.getElementById("i2") must inherit property "popoverHideTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: document.getElementById("i2") must inherit property "popoverShowTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i2") must inherit property "togglePopover(optional boolean)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: calling togglePopover(optional boolean) on document.getElementById("i2") with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i2") must inherit property "showPopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i2") must inherit property "hidePopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i2") must inherit property "popover" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: document.getElementById("i3") must inherit property "popoverToggleTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: document.getElementById("i3") must inherit property "popoverHideTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLInputElement interface: document.getElementById("i3") must inherit property "popoverShowTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i3") must inherit property "togglePopover(optional boolean)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: calling togglePopover(optional boolean) on document.getElementById("i3") with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i3") must inherit property "showPopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i3") must inherit property "hidePopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("i3") must inherit property "popover" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: attribute popoverToggleTargetElement: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: attribute popoverHideTargetElement: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: attribute popoverShowTargetElement: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: document.getElementById("b1") must inherit property "popoverToggleTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: document.getElementById("b1") must inherit property "popoverHideTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: document.getElementById("b1") must inherit property "popoverShowTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b1") must inherit property "togglePopover(optional boolean)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: calling togglePopover(optional boolean) on document.getElementById("b1") with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b1") must inherit property "showPopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b1") must inherit property "hidePopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b1") must inherit property "popover" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: document.getElementById("b2") must inherit property "popoverToggleTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: document.getElementById("b2") must inherit property "popoverHideTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: document.getElementById("b2") must inherit property "popoverShowTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b2") must inherit property "togglePopover(optional boolean)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: calling togglePopover(optional boolean) on document.getElementById("b2") with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b2") must inherit property "showPopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b2") must inherit property "hidePopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b2") must inherit property "popover" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: document.getElementById("b3") must inherit property "popoverToggleTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: document.getElementById("b3") must inherit property "popoverHideTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLButtonElement interface: document.getElementById("b3") must inherit property "popoverShowTargetElement" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b3") must inherit property "togglePopover(optional boolean)" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: calling togglePopover(optional boolean) on document.getElementById("b3") with too few arguments must throw TypeError: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b3") must inherit property "showPopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b3") must inherit property "hidePopover()" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
    • HTMLElement interface: document.getElementById("b3") must inherit property "popover" with the proper type: FAIL (Chrome: PASS, Safari: FAIL)
  • /html/semantics/popovers/popover-events.tentative.html [wpt.fyi]
    • The "beforetoggle" event (listener) get properly dispatched for popovers: FAIL (Chrome: FAIL, Safari: FAIL)
    • The "beforetoggle" event (attribute) get properly dispatched for popovers: FAIL (Chrome: FAIL, Safari: FAIL)
    • The "beforetoggle" event is cancelable for the "opening" transition: FAIL (Chrome: FAIL, Safari: FAIL)
    • The "beforetoggle" event is not fired for element removal: FAIL (Chrome: FAIL, Safari: FAIL)
    • The "toggle" event is coalesced: FAIL (Chrome: FAIL, Safari: FAIL)
  • /html/semantics/popovers/toggleevent-interface.tentative.html [wpt.fyi]
    • the event is an instance of ToggleEvent: FAIL (Chrome: FAIL, Safari: FAIL)
    • the event inherts from Event: FAIL (Chrome: FAIL, Safari: FAIL)
    • Missing type argument: FAIL (Chrome: FAIL, Safari: FAIL)
    • type argument is string: FAIL (Chrome: FAIL, Safari: FAIL)
    • type argument is null: FAIL (Chrome: FAIL, Safari: FAIL)
    • event type set to undefined: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState has default value of empty string: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState is readonly: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState has default value of empty string: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState is readonly: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEventInit argument is null: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEventInit argument is undefined: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEventInit argument is empty dictionary: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to 'sample': FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to undefined: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to null: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to false: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to true: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to a number: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to []: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to [1, 2, 3]: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to an object: FAIL (Chrome: FAIL, Safari: FAIL)
    • oldState set to an object with a valueOf function: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEventInit properties set value: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEventInit properties set value 2: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEventInit properties set value 3: FAIL (Chrome: FAIL, Safari: FAIL)
    • ToggleEventInit properties set value 4: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to 'sample': FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to undefined: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to null: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to false: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to true: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to a number: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to []: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to [1, 2, 3]: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to an object: FAIL (Chrome: FAIL, Safari: FAIL)
    • newState set to an object with a valueOf function: FAIL (Chrome: FAIL, Safari: FAIL)
Pushed by wptsync@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8c55e14ba3aa
[wpt PR 38269] - Reland "Update popover post-toggle event naming and behavior", a=testonly
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 111 Branch
You need to log in before you can comment on or make changes to this bug.