| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/browser_list.h" | 5 #include "chrome/browser/ui/browser_list.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 DCHECK(browser); | 54 DCHECK(browser); |
| 55 GetInstance()->browsers_.push_back(browser); | 55 GetInstance()->browsers_.push_back(browser); |
| 56 | 56 |
| 57 browser->RegisterKeepAlive(); | 57 browser->RegisterKeepAlive(); |
| 58 | 58 |
| 59 content::NotificationService::current()->Notify( | 59 content::NotificationService::current()->Notify( |
| 60 chrome::NOTIFICATION_BROWSER_OPENED, | 60 chrome::NOTIFICATION_BROWSER_OPENED, |
| 61 content::Source<Browser>(browser), | 61 content::Source<Browser>(browser), |
| 62 content::NotificationService::NoDetails()); | 62 content::NotificationService::NoDetails()); |
| 63 | 63 |
| 64 FOR_EACH_OBSERVER(chrome::BrowserListObserver, observers_.Get(), | 64 for (chrome::BrowserListObserver& observer : observers_.Get()) |
| 65 OnBrowserAdded(browser)); | 65 observer.OnBrowserAdded(browser); |
| 66 } | 66 } |
| 67 | 67 |
| 68 // static | 68 // static |
| 69 void BrowserList::RemoveBrowser(Browser* browser) { | 69 void BrowserList::RemoveBrowser(Browser* browser) { |
| 70 // Remove |browser| from the appropriate list instance. | 70 // Remove |browser| from the appropriate list instance. |
| 71 BrowserList* browser_list = GetInstance(); | 71 BrowserList* browser_list = GetInstance(); |
| 72 RemoveBrowserFrom(browser, &browser_list->last_active_browsers_); | 72 RemoveBrowserFrom(browser, &browser_list->last_active_browsers_); |
| 73 | 73 |
| 74 content::NotificationService::current()->Notify( | 74 content::NotificationService::current()->Notify( |
| 75 chrome::NOTIFICATION_BROWSER_CLOSED, | 75 chrome::NOTIFICATION_BROWSER_CLOSED, |
| 76 content::Source<Browser>(browser), | 76 content::Source<Browser>(browser), |
| 77 content::NotificationService::NoDetails()); | 77 content::NotificationService::NoDetails()); |
| 78 | 78 |
| 79 RemoveBrowserFrom(browser, &browser_list->browsers_); | 79 RemoveBrowserFrom(browser, &browser_list->browsers_); |
| 80 | 80 |
| 81 FOR_EACH_OBSERVER(chrome::BrowserListObserver, observers_.Get(), | 81 for (chrome::BrowserListObserver& observer : observers_.Get()) |
| 82 OnBrowserRemoved(browser)); | 82 observer.OnBrowserRemoved(browser); |
| 83 | 83 |
| 84 browser->UnregisterKeepAlive(); | 84 browser->UnregisterKeepAlive(); |
| 85 | 85 |
| 86 // If we're exiting, send out the APP_TERMINATING notification to allow other | 86 // If we're exiting, send out the APP_TERMINATING notification to allow other |
| 87 // modules to shut themselves down. | 87 // modules to shut themselves down. |
| 88 if (chrome::GetTotalBrowserCount() == 0 && | 88 if (chrome::GetTotalBrowserCount() == 0 && |
| 89 (browser_shutdown::IsTryingToQuit() || | 89 (browser_shutdown::IsTryingToQuit() || |
| 90 g_browser_process->IsShuttingDown())) { | 90 g_browser_process->IsShuttingDown())) { |
| 91 // Last browser has just closed, and this is a user-initiated quit or there | 91 // Last browser has just closed, and this is a user-initiated quit or there |
| 92 // is no module keeping the app alive, so send out our notification. No need | 92 // is no module keeping the app alive, so send out our notification. No need |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 // like [{b1, 0}, {b3, 0}, {b2, 1}, {b4, 1}]. | 209 // like [{b1, 0}, {b3, 0}, {b2, 1}, {b4, 1}]. |
| 210 std::stable_partition( | 210 std::stable_partition( |
| 211 last_active_browsers.begin(), last_active_browsers.end(), | 211 last_active_browsers.begin(), last_active_browsers.end(), |
| 212 [&new_workspace](Browser* browser) { | 212 [&new_workspace](Browser* browser) { |
| 213 return !browser->window()->IsVisibleOnAllWorkspaces() && | 213 return !browser->window()->IsVisibleOnAllWorkspaces() && |
| 214 browser->window()->GetWorkspace() != new_workspace; | 214 browser->window()->GetWorkspace() != new_workspace; |
| 215 }); | 215 }); |
| 216 | 216 |
| 217 Browser* new_last_active = instance->GetLastActive(); | 217 Browser* new_last_active = instance->GetLastActive(); |
| 218 if (old_last_active != new_last_active) { | 218 if (old_last_active != new_last_active) { |
| 219 FOR_EACH_OBSERVER(chrome::BrowserListObserver, observers_.Get(), | 219 for (chrome::BrowserListObserver& observer : observers_.Get()) |
| 220 OnBrowserSetLastActive(new_last_active)); | 220 observer.OnBrowserSetLastActive(new_last_active); |
| 221 } | 221 } |
| 222 } | 222 } |
| 223 | 223 |
| 224 // static | 224 // static |
| 225 void BrowserList::SetLastActive(Browser* browser) { | 225 void BrowserList::SetLastActive(Browser* browser) { |
| 226 content::RecordAction(UserMetricsAction("ActiveBrowserChanged")); | 226 content::RecordAction(UserMetricsAction("ActiveBrowserChanged")); |
| 227 | 227 |
| 228 RemoveBrowserFrom(browser, &GetInstance()->last_active_browsers_); | 228 RemoveBrowserFrom(browser, &GetInstance()->last_active_browsers_); |
| 229 GetInstance()->last_active_browsers_.push_back(browser); | 229 GetInstance()->last_active_browsers_.push_back(browser); |
| 230 | 230 |
| 231 FOR_EACH_OBSERVER(chrome::BrowserListObserver, observers_.Get(), | 231 for (chrome::BrowserListObserver& observer : observers_.Get()) |
| 232 OnBrowserSetLastActive(browser)); | 232 observer.OnBrowserSetLastActive(browser); |
| 233 } | 233 } |
| 234 | 234 |
| 235 // static | 235 // static |
| 236 void BrowserList::NotifyBrowserNoLongerActive(Browser* browser) { | 236 void BrowserList::NotifyBrowserNoLongerActive(Browser* browser) { |
| 237 FOR_EACH_OBSERVER(chrome::BrowserListObserver, observers_.Get(), | 237 for (chrome::BrowserListObserver& observer : observers_.Get()) |
| 238 OnBrowserNoLongerActive(browser)); | 238 observer.OnBrowserNoLongerActive(browser); |
| 239 } | 239 } |
| 240 | 240 |
| 241 // static | 241 // static |
| 242 bool BrowserList::IsIncognitoSessionActive() { | 242 bool BrowserList::IsIncognitoSessionActive() { |
| 243 for (auto* browser : *BrowserList::GetInstance()) { | 243 for (auto* browser : *BrowserList::GetInstance()) { |
| 244 if (browser->profile()->IsOffTheRecord()) | 244 if (browser->profile()->IsOffTheRecord()) |
| 245 return true; | 245 return true; |
| 246 } | 246 } |
| 247 return false; | 247 return false; |
| 248 } | 248 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 268 } | 268 } |
| 269 | 269 |
| 270 // static | 270 // static |
| 271 void BrowserList::RemoveBrowserFrom(Browser* browser, | 271 void BrowserList::RemoveBrowserFrom(Browser* browser, |
| 272 BrowserVector* browser_list) { | 272 BrowserVector* browser_list) { |
| 273 BrowserVector::iterator remove_browser = | 273 BrowserVector::iterator remove_browser = |
| 274 std::find(browser_list->begin(), browser_list->end(), browser); | 274 std::find(browser_list->begin(), browser_list->end(), browser); |
| 275 if (remove_browser != browser_list->end()) | 275 if (remove_browser != browser_list->end()) |
| 276 browser_list->erase(remove_browser); | 276 browser_list->erase(remove_browser); |
| 277 } | 277 } |
| OLD | NEW |