Make JS dialogs app modal
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Oxide |
Fix Released
|
Medium
|
Chris Coulson | ||
webbrowser-app (Ubuntu) |
Triaged
|
Medium
|
Unassigned |
Bug Description
Chrome only supports app-modal JS dialogs, and so does Blink (window.alert blocks the calling process).
Oxide pretends to support tab-modal JS dialogs by having a per-WebContents dispatch queue. However, the behaviour is quite broken:
- It's really app-modal in single process because there's only a single RenderThread.
- In multi-process it's not really tab-modal - it's render-process modal (ie, only a single tab in a render process can show a JS dialog). So, if 2 tabs live in separate processes then they can display JS dialogs at the same time. But if they're from the same SiteInstance and live in the same process, they can't.
We should just change the dispatch of JS dialogs to be application modal instead, so it behaves consistently in all configurations.
Changed in oxide: | |
importance: | Undecided → Medium |
status: | New → Triaged |
Changed in webbrowser-app (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → Medium |
Changed in oxide: | |
milestone: | none → branch-1.21 |
assignee: | nobody → Chris Coulson (chrisccoulson) |
Changed in oxide: | |
status: | Triaged → In Progress |
Changed in oxide: | |
status: | In Progress → Fix Released |
I should point out that the change which landed for this doesn't actually make dialogs application modal, as the dialog implementation is window modal at best. But we only ever display 1 script opened dialog at a time now.