Chromium Code Reviews| Index: ash/common/shelf/shelf_model.h |
| diff --git a/ash/common/shelf/shelf_model.h b/ash/common/shelf/shelf_model.h |
| index deeffac9d7ad21ff4202b904aa8d875ac74ce3f2..1dba39a533e18b25c887ac4f0b5d2ff0eb86ba06 100644 |
| --- a/ash/common/shelf/shelf_model.h |
| +++ b/ash/common/shelf/shelf_model.h |
| @@ -5,6 +5,9 @@ |
| #ifndef ASH_COMMON_SHELF_SHELF_MODEL_H_ |
| #define ASH_COMMON_SHELF_SHELF_MODEL_H_ |
| +#include <map> |
| +#include <memory> |
| + |
| #include "ash/ash_export.h" |
| #include "ash/common/shelf/shelf_item_types.h" |
| #include "base/macros.h" |
| @@ -12,9 +15,11 @@ |
| namespace ash { |
| +class ShelfItemDelegate; |
| class ShelfModelObserver; |
| -// Model used by ShelfView. |
| +// Model used for shelf items. Owns ShelfItemDelegates, but does not create |
| +// them. |
| class ASH_EXPORT ShelfModel { |
| public: |
| enum Status { |
| @@ -26,6 +31,9 @@ class ASH_EXPORT ShelfModel { |
| ShelfModel(); |
| ~ShelfModel(); |
| + // Cleans up the ShelfItemDelegates. |
| + void Shutdown(); |
|
msw
2016/07/21 21:30:53
nit: DestroyItemDelegates or similar?
James Cook
2016/07/22 01:20:07
Done.
|
| + |
| // Adds a new item to the model. Returns the resulting index. |
| int Add(const ShelfItem& item); |
| @@ -77,6 +85,13 @@ class ASH_EXPORT ShelfModel { |
| void set_status(Status status) { status_ = status; } |
| Status status() const { return status_; } |
| + // Set |item_delegate| for |id| and takes ownership. |
| + void SetShelfItemDelegate(ShelfID id, |
| + std::unique_ptr<ShelfItemDelegate> item_delegate); |
| + |
| + // Returns ShelfItemDelegate for |id|, or null if none exists. |
| + ShelfItemDelegate* GetShelfItemDelegate(ShelfID id); |
| + |
| void AddObserver(ShelfModelObserver* observer); |
| void RemoveObserver(ShelfModelObserver* observer); |
| @@ -86,6 +101,9 @@ class ASH_EXPORT ShelfModel { |
| // returns the new value. |
| int ValidateInsertionIndex(ShelfItemType type, int index) const; |
| + // Remove and destroy ShelfItemDelegate for |id|. |
| + void RemoveShelfItemDelegate(ShelfID id); |
| + |
| // ID assigned to the next item. |
| ShelfID next_id_; |
| @@ -93,6 +111,9 @@ class ASH_EXPORT ShelfModel { |
| Status status_; |
| base::ObserverList<ShelfModelObserver> observers_; |
| + std::map<ShelfID, std::unique_ptr<ShelfItemDelegate>> |
| + id_to_item_delegate_map_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(ShelfModel); |
| }; |