Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(255)

Unified Diff: ash/mus/shelf_delegate_mus.cc

Issue 1932503002: Fix mash shelf id mapping and removal. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/mus/shelf_delegate_mus.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/mus/shelf_delegate_mus.cc
diff --git a/ash/mus/shelf_delegate_mus.cc b/ash/mus/shelf_delegate_mus.cc
index e701e369e44856ac1fd37d685ce2a01b0e1afc41..617edeebc444958006dc1b06fbcd8e390858969a 100644
--- a/ash/mus/shelf_delegate_mus.cc
+++ b/ash/mus/shelf_delegate_mus.cc
@@ -216,17 +216,18 @@ void ShelfDelegateMus::OnShelfAutoHideBehaviorChanged(Shelf* shelf) {
}
ShelfID ShelfDelegateMus::GetShelfIDForAppID(const std::string& app_id) {
- NOTIMPLEMENTED();
+ if (app_id_to_shelf_id_.count(app_id))
+ return app_id_to_shelf_id_[app_id];
return 0;
}
bool ShelfDelegateMus::HasShelfIDToAppIDMapping(ShelfID id) const {
- NOTIMPLEMENTED();
- return false;
+ return shelf_id_to_app_id_.count(id) != 0;
}
const std::string& ShelfDelegateMus::GetAppIDForShelfID(ShelfID id) {
- NOTIMPLEMENTED();
+ if (shelf_id_to_app_id_.count(id))
+ return shelf_id_to_app_id_[id];
return base::EmptyString();
}
@@ -282,6 +283,7 @@ void ShelfDelegateMus::PinItem(
ShelfID shelf_id = model_->next_id();
app_id_to_shelf_id_.insert(std::make_pair(app_id, shelf_id));
+ shelf_id_to_app_id_.insert(std::make_pair(shelf_id, app_id));
ShelfItem shelf_item;
shelf_item.type = TYPE_APP_SHORTCUT;
@@ -304,8 +306,11 @@ void ShelfDelegateMus::UnpinItem(const mojo::String& app_id) {
ShelfItemDelegateMus* item_delegate = GetShelfItemDelegate(shelf_id);
DCHECK(item_delegate->pinned());
item_delegate->set_pinned(false);
- if (item_delegate->window_id_to_title().empty())
+ if (item_delegate->window_id_to_title().empty()) {
model_->RemoveItemAt(model_->ItemIndexByID(shelf_id));
+ app_id_to_shelf_id_.erase(app_id.To<std::string>());
+ shelf_id_to_app_id_.erase(shelf_id);
+ }
}
void ShelfDelegateMus::OnUserWindowObserverAdded(
@@ -334,6 +339,7 @@ void ShelfDelegateMus::OnUserWindowAdded(
window_id_to_shelf_id_.insert(
std::make_pair(user_window->window_id, shelf_id));
app_id_to_shelf_id_.insert(std::make_pair(app_id, shelf_id));
+ shelf_id_to_app_id_.insert(std::make_pair(shelf_id, app_id));
ShelfItem item;
item.type = TYPE_PLATFORM_APP;
@@ -355,8 +361,12 @@ void ShelfDelegateMus::OnUserWindowRemoved(uint32_t window_id) {
ShelfItemDelegateMus* item_delegate = GetShelfItemDelegate(shelf_id);
item_delegate->RemoveWindow(window_id);
window_id_to_shelf_id_.erase(window_id);
- if (item_delegate->window_id_to_title().empty() && !item_delegate->pinned())
+ if (item_delegate->window_id_to_title().empty() && !item_delegate->pinned()) {
model_->RemoveItemAt(model_->ItemIndexByID(shelf_id));
+ const std::string& app_id = shelf_id_to_app_id_[shelf_id];
+ app_id_to_shelf_id_.erase(app_id);
+ shelf_id_to_app_id_.erase(shelf_id);
+ }
}
void ShelfDelegateMus::OnUserWindowTitleChanged(
« no previous file with comments | « ash/mus/shelf_delegate_mus.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698