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..e0cc70e6291d8be530d13927643dfebec62429cf 100644 |
--- a/chrome/browser/ui/unload_controller.cc |
+++ b/chrome/browser/ui/unload_controller.cc |
@@ -300,7 +300,10 @@ 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_; |
+ if (tabs_needing_unload_fired_.empty()) |
+ on_close_confirmed_.Reset(); |
Peter Kasting
2014/08/28 18:46:13
Clearly order is important here; add comments expl
Mike Lerman
2014/08/29 18:02:21
Done.
|
+ 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. |