| Index: chrome/browser/lifetime/browser_close_manager.cc
|
| diff --git a/chrome/browser/lifetime/browser_close_manager.cc b/chrome/browser/lifetime/browser_close_manager.cc
|
| index 234eeb484b6b531581a8d97c5c6efa8bae555a2e..bb764802994151653049f0eeb279c23940f91aaa 100644
|
| --- a/chrome/browser/lifetime/browser_close_manager.cc
|
| +++ b/chrome/browser/lifetime/browser_close_manager.cc
|
| @@ -12,7 +12,6 @@
|
| #include "chrome/browser/download/download_service_factory.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_iterator.h"
|
| #include "chrome/browser/ui/browser_list.h"
|
| #include "chrome/browser/ui/browser_window.h"
|
| #include "chrome/browser/ui/chrome_pages.h"
|
| @@ -56,8 +55,8 @@ void BrowserCloseManager::StartClosingBrowsers() {
|
|
|
| void BrowserCloseManager::CancelBrowserClose() {
|
| browser_shutdown::SetTryingToQuit(false);
|
| - for (chrome::BrowserIterator it; !it.done(); it.Next()) {
|
| - it->ResetBeforeUnloadHandlers();
|
| + for (auto& browser : *BrowserList::GetInstance()) {
|
| + browser->ResetBeforeUnloadHandlers();
|
| }
|
| }
|
|
|
| @@ -67,10 +66,10 @@ void BrowserCloseManager::TryToCloseBrowsers() {
|
| // stop closing. CallBeforeUnloadHandlers prompts the user and calls
|
| // OnBrowserReportCloseable with the result. If the user confirms the close,
|
| // this will trigger TryToCloseBrowsers to try again.
|
| - for (chrome::BrowserIterator it; !it.done(); it.Next()) {
|
| - if (it->CallBeforeUnloadHandlers(
|
| + for (auto& browser : *BrowserList::GetInstance()) {
|
| + if (browser->CallBeforeUnloadHandlers(
|
| base::Bind(&BrowserCloseManager::OnBrowserReportCloseable, this))) {
|
| - current_browser_ = *it;
|
| + current_browser_ = browser;
|
| return;
|
| }
|
| }
|
| @@ -152,13 +151,12 @@ void BrowserCloseManager::CloseBrowsers() {
|
|
|
| bool session_ending =
|
| browser_shutdown::GetShutdownType() == browser_shutdown::END_SESSION;
|
| - for (scoped_ptr<chrome::BrowserIterator> it_ptr(
|
| - new chrome::BrowserIterator());
|
| - !it_ptr->done();) {
|
| - Browser* browser = **it_ptr;
|
| - browser->window()->Close();
|
| + for (BrowserList::const_iterator browser =
|
| + BrowserList::GetInstance()->begin();
|
| + browser != BrowserList::GetInstance()->end();) {
|
| + (*browser)->window()->Close();
|
| if (!session_ending) {
|
| - it_ptr->Next();
|
| + browser++;
|
| } else {
|
| // This path is hit during logoff/power-down. In this case we won't get
|
| // a final message and so we force the browser to be deleted.
|
| @@ -167,11 +165,13 @@ void BrowserCloseManager::CloseBrowsers() {
|
| // session we need to make sure the browser is destroyed now. So, invoke
|
| // DestroyBrowser to make sure the browser is deleted and cleanup can
|
| // happen.
|
| - while (browser->tab_strip_model()->count())
|
| - delete browser->tab_strip_model()->GetWebContentsAt(0);
|
| - browser->window()->DestroyBrowser();
|
| - it_ptr.reset(new chrome::BrowserIterator());
|
| - if (!it_ptr->done() && browser == **it_ptr) {
|
| + while ((*browser)->tab_strip_model()->count())
|
| + delete (*browser)->tab_strip_model()->GetWebContentsAt(0);
|
| + Browser* before = (*browser);
|
| + (*browser)->window()->DestroyBrowser();
|
| + browser = BrowserList::GetInstance()->begin();
|
| + if (browser != BrowserList::GetInstance()->end() &&
|
| + (*browser) == before) {
|
| // Destroying the browser should have removed it from the browser list.
|
| // We should never get here.
|
| NOTREACHED();
|
|
|