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

Side by Side Diff: ash/launcher/launcher_item_delegate_manager.h

Issue 23606016: Refactor LauncherItemController and LauncherItemDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix for LauncherTest and observing LauncherModel in DelegateManager Created 7 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ASH_LAUNCHER_LAUNCHER_ITEM_DELEGATE_MANAGER_H_ 5 #ifndef ASH_LAUNCHER_LAUNCHER_ITEM_DELEGATE_MANAGER_H_
6 #define ASH_LAUNCHER_LAUNCHER_ITEM_DELEGATE_MANAGER_H_ 6 #define ASH_LAUNCHER_LAUNCHER_ITEM_DELEGATE_MANAGER_H_
7 7
8 #include <map> 8 #include <map>
9 9
10 #include "ash/ash_export.h" 10 #include "ash/ash_export.h"
11 #include "ash/launcher/launcher_model_observer.h"
11 #include "ash/launcher/launcher_types.h" 12 #include "ash/launcher/launcher_types.h"
12 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
13 14
14 namespace ash { 15 namespace ash {
15 class LauncherItemDelegate; 16 class LauncherItemDelegate;
16 17
17 // LauncherItemDelegateManager helps Launcher/LauncherView to choose right 18 // LauncherItemDelegateManager helps Launcher/LauncherView to choose right
18 // LauncherItemDelegate based on LauncherItemType. 19 // 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.
19 // When new LauncherItemDelegate is created, it must be registered by 20 // LauncherItemDelegate should be registered by RegisterLauncherItemDelegate().
20 // RegisterLauncherItemDelegate(). If not, Launcher/LauncherView can't get 21 // When LauncherItemDelegate is changed for existing LauncherItem,
21 // LauncherItem's LauncherItemDelegate. 22 // use UpdateLauncherItemDelegate().
22 // TODO(simon.hong81): This class should own all LauncherItemDelegate. 23 // When LauncherItem is removed from LauncherModel, its LauncherItemDelegate is
23 class ASH_EXPORT LauncherItemDelegateManager { 24 // unregistered by LauncherItemRemoved(). So we don't need to call
25 // UnregisterLauncherItemDelegate() explicitly.
26 // LauncherItemDelegateManager takes ownership of all LauncherItemDelegate.
27 class ASH_EXPORT LauncherItemDelegateManager
28 : public ash::LauncherModelObserver {
24 public: 29 public:
25 LauncherItemDelegateManager(); 30 LauncherItemDelegateManager();
26 virtual ~LauncherItemDelegateManager(); 31 virtual ~LauncherItemDelegateManager();
27 32
28 // Returns LauncherItemDelegate for |item_type|. 33 // Register |item_delegate| for |id|.
29 // This class doesn't own each LauncherItemDelegate for now. 34 void RegisterLauncherItemDelegate(ash::LauncherID id,
30 LauncherItemDelegate* GetLauncherItemDelegate( 35 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.
31 ash::LauncherItemType item_type);
32 36
33 // Register |item_delegate| for |type|. 37 // Update LauncherItemDelegate for |id| with |item_delegate|.
34 // For now, This class doesn't own |item_delegate|. 38 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
35 // TODO(simon.hong81): Register LauncherItemDelegate with LauncherID. 39 ash::LauncherItemDelegate* item_delegate);
36 void RegisterLauncherItemDelegate( 40
37 ash::LauncherItemType type, LauncherItemDelegate* item_delegate); 41 // Returns LauncherItemDelegate for |item_type|. Always returns non-NULL.
42 LauncherItemDelegate* GetLauncherItemDelegate(ash::LauncherID id);
43
44 // ash::LauncherModelObserver overrides:
45 virtual void LauncherItemAdded(int model_index) OVERRIDE;
46 virtual void LauncherItemRemoved(int index, ash::LauncherID id) OVERRIDE;
47 virtual void LauncherItemMoved(int start_index, int targetindex) OVERRIDE;
48 virtual void LauncherItemChanged(
49 int index,
50 const ash::LauncherItem& old_item) OVERRIDE;
51 virtual void LauncherStatusChanged() OVERRIDE;
52
53 // Clear all exsiting LauncherItemDelegate for test.
54 void UnregisterAllLauncherItemDelegateForTest();
38 55
39 private: 56 private:
40 typedef std::map<ash::LauncherItemType, LauncherItemDelegate*> 57 typedef std::map<ash::LauncherID, LauncherItemDelegate*>
41 LauncherItemTypeToItemDelegateMap; 58 LauncherIDToItemDelegateMap;
42 59
43 LauncherItemTypeToItemDelegateMap item_type_to_item_delegate_map_; 60 // Unregister and destroy LauncherItemDelegate for |id|.
61 void UnregisterLauncherItemDelegate(ash::LauncherID id);
62
63 LauncherIDToItemDelegateMap id_to_item_delegate_map_;
64
65 // Store register/unregister count.
66 int register_count_;
67 int unregister_count_;
44 68
45 DISALLOW_COPY_AND_ASSIGN(LauncherItemDelegateManager); 69 DISALLOW_COPY_AND_ASSIGN(LauncherItemDelegateManager);
46 }; 70 };
47 71
48 } // namespace ash 72 } // namespace ash
49 73
50 #endif // ASH_LAUNCHER_LAUNCHER_ITEM_DELEGATE_MANAGER_H_ 74 #endif // ASH_LAUNCHER_LAUNCHER_ITEM_DELEGATE_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698