| 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 31cffa66c0eb4fb5d422bfee11d9cbfbe53e495a..a3eb0435416e6a0ba7b8102f04b0077eb4c87c1d 100644
|
| --- a/chrome/browser/ui/ash/launcher/browser_status_monitor.cc
|
| +++ b/chrome/browser/ui/ash/launcher/browser_status_monitor.cc
|
| @@ -104,9 +104,10 @@ BrowserStatusMonitor::BrowserStatusMonitor(
|
| : launcher_controller_(launcher_controller),
|
| observed_activation_clients_(this),
|
| observed_root_windows_(this),
|
| - settings_window_observer_(new SettingsWindowObserver) {
|
| + settings_window_observer_(new SettingsWindowObserver),
|
| + browser_tab_strip_tracker_(this, this, this) {
|
| DCHECK(launcher_controller_);
|
| - BrowserList::AddObserver(this);
|
| +
|
| chrome::SettingsWindowManager::GetInstance()->AddObserver(
|
| settings_window_observer_.get());
|
|
|
| @@ -127,6 +128,9 @@ BrowserStatusMonitor::BrowserStatusMonitor(
|
| }
|
| ash::Shell::GetInstance()->GetScreen()->AddObserver(this);
|
| }
|
| +
|
| + browser_tab_strip_tracker_.Init(
|
| + BrowserTabStripTracker::InitWith::ALL_BROWERS);
|
| }
|
|
|
| BrowserStatusMonitor::~BrowserStatusMonitor() {
|
| @@ -138,14 +142,7 @@ BrowserStatusMonitor::~BrowserStatusMonitor() {
|
| chrome::SettingsWindowManager::GetInstance()->RemoveObserver(
|
| settings_window_observer_.get());
|
|
|
| - BrowserList::RemoveObserver(this);
|
| -
|
| - BrowserList* browser_list =
|
| - BrowserList::GetInstance(chrome::HOST_DESKTOP_TYPE_ASH);
|
| - for (BrowserList::const_iterator i = browser_list->begin();
|
| - i != browser_list->end(); ++i) {
|
| - OnBrowserRemoved(*i);
|
| - }
|
| + browser_tab_strip_tracker_.StopObservingAndSendOnBrowserRemoved();
|
|
|
| STLDeleteContainerPairSecondPointers(webcontents_to_observer_map_.begin(),
|
| webcontents_to_observer_map_.end());
|
| @@ -211,28 +208,22 @@ void BrowserStatusMonitor::OnWindowDestroyed(aura::Window* window) {
|
| aura::client::GetActivationClient(window));
|
| }
|
|
|
| -void BrowserStatusMonitor::OnBrowserAdded(Browser* browser) {
|
| - if (browser->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH)
|
| - return;
|
| +bool BrowserStatusMonitor::ShouldTrackBrowser(Browser* browser) {
|
| + return browser->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH;
|
| +}
|
|
|
| +void BrowserStatusMonitor::OnBrowserAdded(Browser* browser) {
|
| if (browser->is_type_popup() && browser->is_app()) {
|
| // Note: A V1 application will set the tab strip observer when the app gets
|
| // added to the shelf. This makes sure that in the multi user case we will
|
| // only set the observer while the app item exists in the shelf.
|
| AddV1AppToShelf(browser);
|
| - } else {
|
| - browser->tab_strip_model()->AddObserver(this);
|
| }
|
| }
|
|
|
| void BrowserStatusMonitor::OnBrowserRemoved(Browser* browser) {
|
| - if (browser->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH)
|
| - return;
|
| -
|
| if (browser->is_type_popup() && browser->is_app())
|
| RemoveV1AppFromShelf(browser);
|
| - else
|
| - browser->tab_strip_model()->RemoveObserver(this);
|
|
|
| UpdateBrowserItemState();
|
| }
|
| @@ -349,8 +340,6 @@ void BrowserStatusMonitor::WebContentsDestroyed(
|
| void BrowserStatusMonitor::AddV1AppToShelf(Browser* browser) {
|
| DCHECK(browser->is_type_popup() && browser->is_app());
|
|
|
| - browser->tab_strip_model()->AddObserver(this);
|
| -
|
| std::string app_id =
|
| web_app::GetExtensionIdFromApplicationName(browser->app_name());
|
| if (!app_id.empty()) {
|
| @@ -362,8 +351,6 @@ void BrowserStatusMonitor::AddV1AppToShelf(Browser* browser) {
|
| void BrowserStatusMonitor::RemoveV1AppFromShelf(Browser* browser) {
|
| DCHECK(browser->is_type_popup() && browser->is_app());
|
|
|
| - browser->tab_strip_model()->RemoveObserver(this);
|
| -
|
| if (browser_to_app_id_map_.find(browser) != browser_to_app_id_map_.end()) {
|
| launcher_controller_->UnlockV1AppWithID(browser_to_app_id_map_[browser]);
|
| browser_to_app_id_map_.erase(browser);
|
|
|