RESOLVED FIXED312527
[Site Isolation] Route popup menu value-changed IPC to the originating frame
https://bugs.webkit.org/show_bug.cgi?id=312527
Summary [Site Isolation] Route popup menu value-changed IPC to the originating frame
zak ridouh
Reported 2026-04-16 17:05:01 PDT
When a <select> popup menu is open, focus can move to a remote frame during the popup's nested run loop. WebPageProxy::Internals::valueChangedForPopupMenu() previously called focusedOrMainFrame() to find the destination process for the DidChangeSelectedIndexForActivePopupMenu IPC. With site isolation, that may resolve to a different process than the one that hosts the <select>, so the selection change is delivered to the wrong process. The originating WebProcess never receives the close signal, leaving its m_popupIsVisible state stuck and making the <select> appear broken, the next click is interpreted as a dismiss rather than an open, and the chosen option never reaches the DOM. Capture the originating frame's identifier in m_activePopupMenuFrameID at showPopupMenu() time and use it to route both DidChangeSelectedIndexForActivePopupMenu and (on non-Cocoa platforms) SetTextForActivePopupMenu. Clear the identifier in hidePopupMenu() and resetState().
Attachments
zak ridouh
Comment 1 2026-04-16 17:05:21 PDT
zak ridouh
Comment 2 2026-04-16 17:08:55 PDT
EWS
Comment 3 2026-05-18 17:59:13 PDT
Committed 313449@main (0a6b5cd60b4f): <https://commits.webkit.org/313449@main> Reviewed commits have been landed. Closing PR #62939 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.