Chromium Code Reviews| Index: mash/shelf/shelf_model.h |
| diff --git a/ash/shelf/shelf_model.h b/mash/shelf/shelf_model.h |
| similarity index 67% |
| copy from ash/shelf/shelf_model.h |
| copy to mash/shelf/shelf_model.h |
| index 01ab2a924accacceb25c5bf9725200f705a2c7ec..62c11d20b595cbcbc5a021796187a62c54ce6aed 100644 |
| --- a/ash/shelf/shelf_model.h |
| +++ b/mash/shelf/shelf_model.h |
| @@ -2,20 +2,26 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef ASH_SHELF_SHELF_MODEL_H_ |
| -#define ASH_SHELF_SHELF_MODEL_H_ |
| +#ifndef MASH_SHELF_SHELF_MODEL_H_ |
| +#define MASH_SHELF_SHELF_MODEL_H_ |
| -#include "ash/ash_export.h" |
| -#include "ash/shelf/shelf_item_types.h" |
| #include "base/macros.h" |
| #include "base/observer_list.h" |
| +#include "mash/shelf/shelf_item_types.h" |
| +#include "mash/wm/public/interfaces/user_window_controller.mojom.h" |
| +#include "mojo/public/cpp/bindings/binding.h" |
| -namespace ash { |
| +namespace mojo { |
| +class ApplicationImpl; |
| +} |
| + |
| +namespace mash { |
| +namespace shelf { |
| class ShelfModelObserver; |
| // Model used by ShelfView. |
| -class ASH_EXPORT ShelfModel { |
| +class ShelfModel : public mash::wm::mojom::UserWindowObserver { |
| public: |
| enum Status { |
| STATUS_NORMAL, |
| @@ -23,8 +29,8 @@ class ASH_EXPORT ShelfModel { |
| STATUS_LOADING, |
| }; |
| - ShelfModel(); |
| - ~ShelfModel(); |
| + explicit ShelfModel(mojo::ApplicationImpl* app); |
| + ~ShelfModel() override; |
| // Adds a new item to the model. Returns the resulting index. |
| int Add(const ShelfItem& item); |
| @@ -80,12 +86,28 @@ class ASH_EXPORT ShelfModel { |
| void AddObserver(ShelfModelObserver* observer); |
| void RemoveObserver(ShelfModelObserver* observer); |
| + // TODO(msw): Do not expose this (used by ShelfView to FocusUserWindow)... |
|
msw
2016/01/27 07:43:41
comment
|
| + mash::wm::mojom::UserWindowController* user_window_controller() const { |
| + return user_window_controller_.get(); |
| + } |
| + |
| private: |
| + // Overridden from mash::wm::mojom::UserWindowObserver: |
| + void OnUserWindowObserverAdded( |
| + mojo::Array<mash::wm::mojom::UserWindowPtr> user_windows) override; |
| + void OnUserWindowAdded(mash::wm::mojom::UserWindowPtr user_window) override; |
| + void OnUserWindowRemoved(uint32_t window_id) override; |
| + void OnUserWindowTitleChanged(uint32_t window_id, |
| + const mojo::String& window_title) override; |
| + |
| // Makes sure |index| is in line with the type-based order of items. If that |
| // is not the case, adjusts index by shifting it to the valid range and |
| // returns the new value. |
| int ValidateInsertionIndex(ShelfItemType type, int index) const; |
| + // Return the index of the item by window id. |
| + int ItemIndexByWindowID(uint32_t window_id) const; |
| + |
| // ID assigned to the next item. |
| ShelfID next_id_; |
| @@ -93,9 +115,13 @@ class ASH_EXPORT ShelfModel { |
| Status status_; |
| base::ObserverList<ShelfModelObserver> observers_; |
| + mash::wm::mojom::UserWindowControllerPtr user_window_controller_; |
| + mojo::Binding<mash::wm::mojom::UserWindowObserver> binding_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(ShelfModel); |
| }; |
| -} // namespace ash |
| +} // namespace shelf |
| +} // namespace mash |
| -#endif // ASH_SHELF_SHELF_MODEL_H_ |
| +#endif // MASH_SHELF_SHELF_MODEL_H_ |