Chromium Code Reviews| Index: ash/launcher/launcher_item_delegate_manager.h |
| diff --git a/ash/launcher/launcher_item_delegate_manager.h b/ash/launcher/launcher_item_delegate_manager.h |
| index f7c52f5cf6400c20c18bc0ec988615ebd408c204..6f9a5b0e51178f0d915ae10b676e91f2970c7548 100644 |
| --- a/ash/launcher/launcher_item_delegate_manager.h |
| +++ b/ash/launcher/launcher_item_delegate_manager.h |
| @@ -8,6 +8,7 @@ |
| #include <map> |
| #include "ash/ash_export.h" |
| +#include "ash/launcher/launcher_model_observer.h" |
| #include "ash/launcher/launcher_types.h" |
| #include "base/compiler_specific.h" |
| @@ -15,32 +16,55 @@ namespace ash { |
| class LauncherItemDelegate; |
| // LauncherItemDelegateManager helps Launcher/LauncherView to choose right |
| -// LauncherItemDelegate based on LauncherItemType. |
| -// When new LauncherItemDelegate is created, it must be registered by |
| -// RegisterLauncherItemDelegate(). If not, Launcher/LauncherView can't get |
| -// LauncherItem's LauncherItemDelegate. |
| -// TODO(simon.hong81): This class should own all LauncherItemDelegate. |
| -class ASH_EXPORT LauncherItemDelegateManager { |
| +// LauncherItemDelegate based on LauncherID. When LauncherItem is created, its |
|
sky
2013/09/11 01:42:57
How about: LauncherItemDelegateManager manages the
simonhong_
2013/09/11 09:05:26
Thank you for suggesting good description!
Done.
|
| +// LauncherItemDelegate should be registered by RegisterLauncherItemDelegate(). |
| +// When LauncherItemDelegate is changed for existing LauncherItem, |
| +// use UpdateLauncherItemDelegate(). |
| +// When LauncherItem is removed from LauncherModel, its LauncherItemDelegate is |
| +// unregistered by LauncherItemRemoved(). So we don't need to call |
| +// UnregisterLauncherItemDelegate() explicitly. |
| +// LauncherItemDelegateManager takes ownership of all LauncherItemDelegate. |
| +class ASH_EXPORT LauncherItemDelegateManager |
| + : public ash::LauncherModelObserver { |
| public: |
| LauncherItemDelegateManager(); |
| virtual ~LauncherItemDelegateManager(); |
| - // Returns LauncherItemDelegate for |item_type|. |
| - // This class doesn't own each LauncherItemDelegate for now. |
| - LauncherItemDelegate* GetLauncherItemDelegate( |
| - ash::LauncherItemType item_type); |
| + // Register |item_delegate| for |id|. |
| + void RegisterLauncherItemDelegate(ash::LauncherID id, |
| + ash::LauncherItemDelegate* item_delegate); |
|
sky
2013/09/11 01:42:57
Can this take a scoped_ptr so that ownership is cl
simonhong_
2013/09/11 09:05:26
Done.
|
| - // Register |item_delegate| for |type|. |
| - // For now, This class doesn't own |item_delegate|. |
| - // TODO(simon.hong81): Register LauncherItemDelegate with LauncherID. |
| - void RegisterLauncherItemDelegate( |
| - ash::LauncherItemType type, LauncherItemDelegate* item_delegate); |
| + // Update LauncherItemDelegate for |id| with |item_delegate|. |
| + void UpdateLauncherItemDelegate(ash::LauncherID id, |
|
sky
2013/09/11 01:42:57
Why do we need this?
simonhong_
2013/09/11 09:05:26
For the PlatformApp LauncherItem, AppShortcutLaunc
sky
2013/09/12 20:40:13
Why can't it just call Register again?
simonhong_
2013/09/12 21:06:23
Ah.. yes, I have a mistake.
It is same as Unregist
|
| + ash::LauncherItemDelegate* item_delegate); |
| + |
| + // Returns LauncherItemDelegate for |item_type|. Always returns non-NULL. |
| + LauncherItemDelegate* GetLauncherItemDelegate(ash::LauncherID id); |
| + |
| + // ash::LauncherModelObserver overrides: |
| + virtual void LauncherItemAdded(int model_index) OVERRIDE; |
| + virtual void LauncherItemRemoved(int index, ash::LauncherID id) OVERRIDE; |
| + virtual void LauncherItemMoved(int start_index, int targetindex) OVERRIDE; |
| + virtual void LauncherItemChanged( |
| + int index, |
| + const ash::LauncherItem& old_item) OVERRIDE; |
| + virtual void LauncherStatusChanged() OVERRIDE; |
| + |
| + // Clear all exsiting LauncherItemDelegate for test. |
| + void UnregisterAllLauncherItemDelegateForTest(); |
| private: |
| - typedef std::map<ash::LauncherItemType, LauncherItemDelegate*> |
| - LauncherItemTypeToItemDelegateMap; |
| + typedef std::map<ash::LauncherID, LauncherItemDelegate*> |
| + LauncherIDToItemDelegateMap; |
| + |
| + // Unregister and destroy LauncherItemDelegate for |id|. |
| + void UnregisterLauncherItemDelegate(ash::LauncherID id); |
| + |
| + LauncherIDToItemDelegateMap id_to_item_delegate_map_; |
| - LauncherItemTypeToItemDelegateMap item_type_to_item_delegate_map_; |
| + // Store register/unregister count. |
| + int register_count_; |
| + int unregister_count_; |
| DISALLOW_COPY_AND_ASSIGN(LauncherItemDelegateManager); |
| }; |