| Index: chrome/browser/ui/unload_controller.cc
|
| diff --git a/chrome/browser/ui/unload_controller.cc b/chrome/browser/ui/unload_controller.cc
|
| index fab4eb76d245679c9559e4763ceeb6c1f03b3ca6..8791f7056ebab71a2aa608d4d66f070b0be60a79 100644
|
| --- a/chrome/browser/ui/unload_controller.cc
|
| +++ b/chrome/browser/ui/unload_controller.cc
|
| @@ -300,7 +300,13 @@ void UnloadController::ProcessPendingTabs() {
|
| ClearUnloadState(web_contents, true);
|
| }
|
| } else if (is_calling_before_unload_handlers()) {
|
| - on_close_confirmed_.Run(true);
|
| + base::Callback<void(bool)> on_close_confirmed = on_close_confirmed_;
|
| + // Reset |on_close_confirmed_| in case the callback tests
|
| + // |is_calling_before_unload_handlers()|, we want to return that calling
|
| + // is complete.
|
| + if (tabs_needing_unload_fired_.empty())
|
| + on_close_confirmed_.Reset();
|
| + on_close_confirmed.Run(true);
|
| } else if (!tabs_needing_unload_fired_.empty()) {
|
| // We've finished firing all beforeunload events and can proceed with unload
|
| // events.
|
|
|