Chromium Code Reviews| Index: chrome/browser/ui/ash/launcher/browser_status_monitor.cc |
| diff --git a/chrome/browser/ui/ash/launcher/browser_status_monitor.cc b/chrome/browser/ui/ash/launcher/browser_status_monitor.cc |
| index 738e2fbdfdbcc2d2b63aec04b752cb6f4e411466..cedc21a5ed5adde5ba782c6d1a2d7d018c2c394c 100644 |
| --- a/chrome/browser/ui/ash/launcher/browser_status_monitor.cc |
| +++ b/chrome/browser/ui/ash/launcher/browser_status_monitor.cc |
| @@ -27,10 +27,7 @@ BrowserStatusMonitor::BrowserStatusMonitor( |
| observed_activation_clients_(this), |
| observed_root_windows_(this) { |
| DCHECK(launcher_controller_); |
| - BrowserList* browser_list = |
| - BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH); |
| - |
| - browser_list->AddObserver(this); |
| + BrowserList::AddObserver(this); |
| // This check needs for win7_aura. Without this, all tests in |
| // ChromeLauncherController will fail in win7_aura. |
| @@ -57,10 +54,14 @@ BrowserStatusMonitor::~BrowserStatusMonitor() { |
| if (ash::Shell::HasInstance()) |
| ash::Shell::GetInstance()->GetScreen()->RemoveObserver(this); |
| - BrowserList* browser_list = |
| - BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH); |
| + BrowserList::RemoveObserver(this); |
| - browser_list->RemoveObserver(this); |
| + BrowserList* brower_list = |
| + BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH); |
| + for (BrowserList::const_iterator i = browser_list->begin(); |
| + i != browser_list->end(); ++i) { |
| + OnBrowserRemoved(*i); |
| + } |
| } |
| void BrowserStatusMonitor::OnWindowActivated(aura::Window* gained_active, |
| @@ -86,6 +87,9 @@ void BrowserStatusMonitor::OnWindowDestroyed(aura::Window* window) { |
| } |
| void BrowserStatusMonitor::OnBrowserAdded(Browser* browser) { |
| + if (browser->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) |
| + return; |
| + |
| browser->tab_strip_model()->AddObserver(this); |
| if (browser->is_type_popup() && browser->is_app()) { |
| @@ -99,6 +103,9 @@ void BrowserStatusMonitor::OnBrowserAdded(Browser* browser) { |
| } |
| void BrowserStatusMonitor::OnBrowserRemoved(Browser* browser) { |
| + if (browser->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) |
| + return; |
| + |
| browser->tab_strip_model()->RemoveObserver(this); |
| if (browser_to_app_id_map_.find(browser) != browser_to_app_id_map_.end()) { |
| @@ -141,6 +148,9 @@ void BrowserStatusMonitor::ActiveTabChanged(content::WebContents* old_contents, |
| if (old_contents) |
| browser = chrome::FindBrowserWithWebContents(old_contents); |
| + if (browser && browser->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) |
| + return; |
|
Mr4D (OOO till 08-26)
2013/09/09 18:48:45
Maybe an early exit if !browser since it gets chec
sky
2013/09/09 19:29:28
I thought we still wanted to invoke UpdateAppAndBr
Mr4D (OOO till 08-26)
2013/09/09 19:38:28
I've meant early exit, but calling UpdateApp.. .
sky
2013/09/09 19:39:54
I'm going to leave it. If you feel strongly I'll u
|
| + |
| // Update immediately on a tab change. |
| if (browser && |
| (TabStripModel::kNoTab != |
| @@ -190,6 +200,9 @@ void BrowserStatusMonitor::UpdateAppAndBrowserState( |
| ChromeLauncherController::APP_STATE_INACTIVE; |
| Browser* browser = chrome::FindBrowserWithWebContents(contents); |
| + if (browser && |
|
Mr4D (OOO till 08-26)
2013/09/09 18:48:45
If browser is null it would crash later on as well
sky
2013/09/09 19:29:28
Good point. Added DCHECK.
|
| + browser->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) |
| + return; |
| if (browser->tab_strip_model()->GetActiveWebContents() == contents) { |
| if (browser->window()->IsActive()) |
| app_state = ChromeLauncherController::APP_STATE_WINDOW_ACTIVE; |