Open Bug 1262188 Opened 8 years ago Updated 2 years ago

Tabs can get stuck closing when tabs in two windows are using beforeunload handlers/dialogs

Categories

(Firefox :: Tabbed Browser, defect)

31 Branch
defect

Tracking

()

Tracking Status
firefox47 --- wontfix
firefox48 --- wontfix
firefox49 --- wontfix
firefox50 --- wontfix
firefox51 --- fix-optional

People

(Reporter: Gijs, Unassigned)

References

(Depends on 1 open bug, )

Details

(Keywords: regression)

+++ This bug was initially created as a clone of Bug #1234937 +++

STR:

1. open Firefox. Let's say the initial window is (A)
2. In a new tab in that window, load:

data:text/html,<body onbeforeunload="return 1">

3. click in the content's blank body
4. Open a second window (let's say B)
5. load the same URI from step 2 in this window's initial tab, too.
6. in window A, click the 'close' button on the tab that has this URI in it
7. don't respond to the dialog, instead go to window B and click the 'close' button there, too.
8. don't respond to that dialog, go back to window A and respond to the dialog that's open there.

ER:
the tab in window A closes

AR:
the tab does not close.


(In reply to Olli Pettay [:smaug] from bug 1234937 comment #17)
> > and that you want to make sure the tab-modal dialogs
> > run in the content process so we don't have to spin an event loop but just
> > "hang" the content process until the user responds to the dialog in that
> > content process (which, fwiw, sounds like a scary and regression-prone thing
> > to do). 
> No. Parent process should show the modal dialog and spin event loop, but
> child process would initiate that dialog
> using sync call, so nothing would happen there.

That would leave the child process unresponsive, also to other messages from the parent process. Not only for that tab, but for all the tabs in that process while there was a tab-modal dialog in only one of the tabs for that process. That doesn't sound very good. Do I misunderstand your suggestion?
Flags: needinfo?(bugs)
Summary: It's possible to close a tab with onbeforeunload without any prompt if confirmation dialog is opened in another onbeforeunload tab → Tabs can get stuck closing when tabs in two windows are using beforeunload handlers/dialogs
So this is a regression from what?
And you aren't misunderstanding my suggesting. That is what Chrome does (but it has multiple child processes).
khuey's plan to have effectively event loop per connected browsing contexts would help with that too.

But still, this is a regression from what?
Flags: needinfo?(bugs)
(In reply to Olli Pettay [:smaug] (high review load, please consider other reviewers) from comment #2)
> And you aren't misunderstanding my suggesting. That is what Chrome does (but
> it has multiple child processes).
> khuey's plan to have effectively event loop per connected browsing contexts
> would help with that too.
> 
> But still, this is a regression from what?

Moving the beforeunload dialog to an in-content dialog that spins the event loop, rather than a window/app-modal one.
Comment 3 describes bug 59314 (but I haven't check STR and regression range at all)
Blocks: 59314
(In reply to arni2033 from comment #4)
> Comment 3 describes bug 59314 (but I haven't check STR and regression range
> at all)

It doesn't, it describes bug 616853.
Blocks: 616853
No longer blocks: 59314
Version: Trunk → 31 Branch
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.