Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc |
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc |
index d579d9bc40113cbb9d96676915b5895e0a0eda74..974654b7dffe835c0d4ff3c416abd0f27844d881 100644 |
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc |
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc |
@@ -345,9 +345,10 @@ void ChromeLauncherController::SetItemStatus( |
ash::LauncherID id, |
ash::LauncherItemStatus status) { |
int index = model_->ItemIndexByID(id); |
+ ash::LauncherItemStatus old_status = model_->items()[index].status; |
// Since ordinary browser windows are not registered, we might get a negative |
// index here. |
- if (index >= 0) { |
+ if (index >= 0 && old_status != status) { |
ash::LauncherItem item = model_->items()[index]; |
item.status = status; |
model_->Set(index, item); |
@@ -786,6 +787,10 @@ void ChromeLauncherController::RemoveTabFromRunningApp( |
WebContents* tab, |
const std::string& app_id) { |
web_contents_to_app_id_.erase(tab); |
+ // For empty |app_id| tab, its state is udpated by UpdateBrowserItemState(). |
+ if (app_id.empty()) |
+ return; |
+ |
AppIDToWebContentsListMap::iterator i_app_id = |
app_id_to_web_contents_list_.find(app_id); |
if (i_app_id != app_id_to_web_contents_list_.end()) { |
@@ -823,7 +828,7 @@ void ChromeLauncherController::UpdateAppState(content::WebContents* contents, |
if (app_state == APP_STATE_REMOVED) { |
// The tab has gone away. |
RemoveTabFromRunningApp(contents, app_id); |
- } else { |
+ } else if (!app_id.empty()) { |
WebContentsList& tab_list(app_id_to_web_contents_list_[app_id]); |
if (app_state == APP_STATE_INACTIVE) { |
@@ -831,6 +836,7 @@ void ChromeLauncherController::UpdateAppState(content::WebContents* contents, |
std::find(tab_list.begin(), tab_list.end(), contents); |
if (i_tab == tab_list.end()) |
tab_list.push_back(contents); |
+ // TODO(simon.hong81): Does this below case exist? |
if (i_tab != tab_list.begin()) { |
// Going inactive, but wasn't the front tab, indicating that a new |
// tab has already become active. |