summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/browser_list.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/browser_list.cc')
-rw-r--r--chrome/browser/ui/browser_list.cc21
1 files changed, 12 insertions, 9 deletions
diff --git a/chrome/browser/ui/browser_list.cc b/chrome/browser/ui/browser_list.cc
index 416784d..f5e7f46 100644
--- a/chrome/browser/ui/browser_list.cc
+++ b/chrome/browser/ui/browser_list.cc
@@ -10,6 +10,7 @@
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_shutdown.h"
+#include "chrome/browser/download/download_service.h"
#include "chrome/browser/metrics/thread_watcher.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/printing/background_printing_manager.h"
@@ -188,15 +189,17 @@ printing::BackgroundPrintingManager* GetBackgroundPrintingManager() {
// This currently checks if there is pending download, or if it needs to
// handle unload handler.
bool AreAllBrowsersCloseable() {
- for (BrowserList::const_iterator i = BrowserList::begin();
- i != BrowserList::end(); ++i) {
- bool normal_downloads_are_present = false;
- bool incognito_downloads_are_present = false;
- (*i)->CheckDownloadsInProgress(&normal_downloads_are_present,
- &incognito_downloads_are_present);
- if (normal_downloads_are_present ||
- incognito_downloads_are_present ||
- (*i)->TabsNeedBeforeUnloadFired())
+ BrowserList::const_iterator browser_it = BrowserList::begin();
+ if (browser_it == BrowserList::end())
+ return true;
+
+ // If there are any downloads active, all browsers are not closeable.
+ if (DownloadService::DownloadCountAllProfiles() > 0)
+ return false;
+
+ // Check TabsNeedBeforeUnloadFired().
+ for (; browser_it != BrowserList::end(); ++browser_it) {
+ if ((*browser_it)->TabsNeedBeforeUnloadFired())
return false;
}
return true;