Chromium Code Reviews| Index: ash/shelf/shelf_model.cc |
| diff --git a/ash/shelf/shelf_model.cc b/ash/shelf/shelf_model.cc |
| index 5ea7a7ff7bc79430f265c98fece354364ac9c65f..7b1709da6d0979cbf1f7b053269da4112f06ba41 100644 |
| --- a/ash/shelf/shelf_model.cc |
| +++ b/ash/shelf/shelf_model.cc |
| @@ -55,86 +55,49 @@ ShelfModel::ShelfModel() = default; |
| ShelfModel::~ShelfModel() = default; |
| -ShelfID ShelfModel::GetShelfIDForAppID(const std::string& app_id) { |
| - // TODO(khmel): Fix this Arc application id mapping. See http://b/31703859 |
| - const std::string shelf_app_id = GetShelfAppIdFromArcAppId(app_id); |
| - |
| - if (shelf_app_id.empty()) |
| - return ShelfID(); |
| - |
| - for (const ShelfItem& item : items_) { |
| - // ShelfWindowWatcher handles app panel windows separately. |
| - if (item.type != TYPE_APP_PANEL && item.id.app_id == shelf_app_id) |
| - return item.id; |
| - } |
| - return ShelfID(); |
| -} |
| - |
| -ShelfID ShelfModel::GetShelfIDForAppIDAndLaunchID( |
| - const std::string& app_id, |
| - const std::string& launch_id) { |
| - // TODO(khmel): Fix this Arc application id mapping. See http://b/31703859 |
| - const ShelfID id = ShelfID(GetShelfAppIdFromArcAppId(app_id), launch_id); |
| - |
| - if (id.IsNull()) |
| - return ShelfID(); |
| - |
| - for (const ShelfItem& item : items_) { |
| - // ShelfWindowWatcher handles app panel windows separately. |
| - if (item.type != TYPE_APP_PANEL && item.id == id) |
| - return item.id; |
| - } |
| - return ShelfID(); |
| -} |
| - |
| -const std::string& ShelfModel::GetAppIDForShelfID(const ShelfID& id) { |
| - ShelfItems::const_iterator item = ItemByID(id); |
| - return item != items().end() ? item->id.app_id : base::EmptyString(); |
| -} |
| - |
| void ShelfModel::PinAppWithID(const std::string& app_id) { |
| // TODO(khmel): Fix this Arc application id mapping. See http://b/31703859 |
|
James Cook
2017/05/10 02:51:18
Aside: Is this ever going to happen? It's such a b
msw
2017/05/10 18:21:53
I can ping Yury (though I've been woefully slow re
|
| - const std::string shelf_app_id = GetShelfAppIdFromArcAppId(app_id); |
| + const ShelfID shelf_id(GetShelfAppIdFromArcAppId(app_id)); |
| // If the app is already pinned, do nothing and return. |
| - if (IsAppPinned(shelf_app_id)) |
| + if (IsAppPinned(shelf_id.app_id)) |
| return; |
| // Convert an existing item to be pinned, or create a new pinned item. |
| - const int index = ItemIndexByID(GetShelfIDForAppID(shelf_app_id)); |
| + const int index = ItemIndexByID(shelf_id); |
| if (index >= 0) { |
| ShelfItem item = items_[index]; |
| DCHECK_EQ(item.type, TYPE_APP); |
| DCHECK(!item.pinned_by_policy); |
| item.type = TYPE_PINNED_APP; |
| Set(index, item); |
| - } else if (!shelf_app_id.empty()) { |
| + } else if (!shelf_id.IsNull()) { |
| ShelfItem item; |
| item.type = TYPE_PINNED_APP; |
| - item.id = ShelfID(shelf_app_id); |
| + item.id = shelf_id; |
| Add(item); |
| } |
| } |
| bool ShelfModel::IsAppPinned(const std::string& app_id) { |
| // TODO(khmel): Fix this Arc application id mapping. See http://b/31703859 |
| - const std::string shelf_app_id = GetShelfAppIdFromArcAppId(app_id); |
| + const ShelfID shelf_id(GetShelfAppIdFromArcAppId(app_id)); |
| - const int index = ItemIndexByID(GetShelfIDForAppID(shelf_app_id)); |
| + const int index = ItemIndexByID(shelf_id); |
| return index >= 0 && (items_[index].type == TYPE_PINNED_APP || |
| items_[index].type == TYPE_BROWSER_SHORTCUT); |
| } |
| void ShelfModel::UnpinAppWithID(const std::string& app_id) { |
| // TODO(khmel): Fix this Arc application id mapping. See http://b/31703859 |
| - const std::string shelf_app_id = GetShelfAppIdFromArcAppId(app_id); |
| + const ShelfID shelf_id(GetShelfAppIdFromArcAppId(app_id)); |
| // If the app is already not pinned, do nothing and return. |
| - if (!IsAppPinned(shelf_app_id)) |
| + if (!IsAppPinned(shelf_id.app_id)) |
| return; |
| // Remove the item if it is closed, or mark it as unpinned. |
| - const int index = ItemIndexByID(GetShelfIDForAppID(shelf_app_id)); |
| + const int index = ItemIndexByID(shelf_id); |
| ShelfItem item = items_[index]; |
| DCHECK_EQ(item.type, TYPE_PINNED_APP); |
| DCHECK(!item.pinned_by_policy); |
| @@ -218,7 +181,10 @@ void ShelfModel::Set(int index, const ShelfItem& item) { |
| } |
| } |
| -int ShelfModel::ItemIndexByID(const ShelfID& id) const { |
| +int ShelfModel::ItemIndexByID(const ShelfID& shelf_id) const { |
| + // TODO(khmel): Fix this Arc application id mapping. See http://b/31703859 |
| + ShelfID id(GetShelfAppIdFromArcAppId(shelf_id.app_id), shelf_id.launch_id); |
| + |
| ShelfItems::const_iterator i = ItemByID(id); |
| return i == items_.end() ? -1 : static_cast<int>(i - items_.begin()); |
| } |
| @@ -231,7 +197,10 @@ int ShelfModel::GetItemIndexForType(ShelfItemType type) { |
| return -1; |
| } |
| -ShelfItems::const_iterator ShelfModel::ItemByID(const ShelfID& id) const { |
| +ShelfItems::const_iterator ShelfModel::ItemByID(const ShelfID& shelf_id) const { |
| + // TODO(khmel): Fix this Arc application id mapping. See http://b/31703859 |
| + ShelfID id(GetShelfAppIdFromArcAppId(shelf_id.app_id), shelf_id.launch_id); |
| + |
| for (ShelfItems::const_iterator i = items_.begin(); i != items_.end(); ++i) { |
| if (i->id == id) |
| return i; |
| @@ -256,15 +225,21 @@ int ShelfModel::FirstPanelIndex() const { |
| } |
| void ShelfModel::SetShelfItemDelegate( |
| - const ShelfID& id, |
| + const ShelfID& shelf_id, |
| std::unique_ptr<ShelfItemDelegate> item_delegate) { |
| + // TODO(khmel): Fix this Arc application id mapping. See http://b/31703859 |
| + ShelfID id(GetShelfAppIdFromArcAppId(shelf_id.app_id), shelf_id.launch_id); |
| + |
| if (item_delegate) |
| item_delegate->set_shelf_id(id); |
| // This assignment replaces any ShelfItemDelegate already registered for |id|. |
| id_to_item_delegate_map_[id] = std::move(item_delegate); |
| } |
| -ShelfItemDelegate* ShelfModel::GetShelfItemDelegate(const ShelfID& id) { |
| +ShelfItemDelegate* ShelfModel::GetShelfItemDelegate(const ShelfID& shelf_id) { |
| + // TODO(khmel): Fix this Arc application id mapping. See http://b/31703859 |
| + ShelfID id(GetShelfAppIdFromArcAppId(shelf_id.app_id), shelf_id.launch_id); |
| + |
| if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()) |
| return id_to_item_delegate_map_[id].get(); |
| return nullptr; |