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

Unified Diff: ash/launcher/launcher_item_delegate_manager.cc

Issue 25823002: Refactor LauncherItemController and LauncherItemDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 2 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
Index: ash/launcher/launcher_item_delegate_manager.cc
diff --git a/ash/launcher/launcher_item_delegate_manager.cc b/ash/launcher/launcher_item_delegate_manager.cc
index 1708fe63df6a7302b416236fabdeb4a6760e796d..e401b76bf318df2e8b586630d293a0ecb64c2053 100644
--- a/ash/launcher/launcher_item_delegate_manager.cc
+++ b/ash/launcher/launcher_item_delegate_manager.cc
@@ -4,28 +4,72 @@
#include "ash/launcher/launcher_item_delegate_manager.h"
+#include "ash/launcher/launcher_item_delegate.h"
+#include "ash/launcher/launcher_model.h"
+#include "ash/shell.h"
#include "base/logging.h"
+#include "base/stl_util.h"
namespace ash {
-LauncherItemDelegateManager::LauncherItemDelegateManager() {
+LauncherItemDelegateManager::LauncherItemDelegateManager(
+ ash::LauncherModel* model) : model_(model) {
+ DCHECK(model_);
+ model_->AddObserver(this);
}
LauncherItemDelegateManager::~LauncherItemDelegateManager() {
+ model_->RemoveObserver(this);
+ STLDeleteContainerPairSecondPointers(id_to_item_delegate_map_.begin(),
+ id_to_item_delegate_map_.end());
}
-void LauncherItemDelegateManager::RegisterLauncherItemDelegate(
- ash::LauncherItemType type, LauncherItemDelegate* item_delegate) {
- // When a new |item_delegate| is registered with an exsiting |type|, it will
- // get overwritten.
- item_type_to_item_delegate_map_[type] = item_delegate;
+void LauncherItemDelegateManager::SetLauncherItemDelegate(
+ ash::LauncherID id,
+ scoped_ptr<LauncherItemDelegate> item_delegate) {
+ // If another LauncherItemDelegate is already registered for |id|, we assume
+ // that this request is replacing LauncherItemDelegate for |id| with
+ // |item_delegate|.
+ RemoveLauncherItemDelegate(id);
+ id_to_item_delegate_map_[id] = item_delegate.release();
}
LauncherItemDelegate* LauncherItemDelegateManager::GetLauncherItemDelegate(
- ash::LauncherItemType item_type) {
- DCHECK(item_type_to_item_delegate_map_.find(item_type) !=
- item_type_to_item_delegate_map_.end());
- return item_type_to_item_delegate_map_[item_type];
+ ash::LauncherID id) {
+ if (model_->ItemIndexByID(id) != -1) {
+ // Each LauncherItem has to have a LauncherItemDelegate.
+ DCHECK(id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end());
+ return id_to_item_delegate_map_[id];
+ }
+ return NULL;
+}
+
+void LauncherItemDelegateManager::LauncherItemAdded(int index) {
+}
+
+void LauncherItemDelegateManager::LauncherItemRemoved(int index,
+ ash::LauncherID id) {
+ RemoveLauncherItemDelegate(id);
+}
+
+void LauncherItemDelegateManager::LauncherItemMoved(int start_index,
+ int target_index) {
+}
+
+void LauncherItemDelegateManager::LauncherItemChanged(
+ int index,
+ const LauncherItem& old_item) {
+}
+
+void LauncherItemDelegateManager::LauncherStatusChanged() {
+}
+
+void LauncherItemDelegateManager::RemoveLauncherItemDelegate(
+ ash::LauncherID id) {
+ if (id_to_item_delegate_map_.find(id) != id_to_item_delegate_map_.end()) {
+ delete id_to_item_delegate_map_[id];
+ id_to_item_delegate_map_.erase(id);
+ }
}
} // namespace ash

Powered by Google App Engine
This is Rietveld 408576698