| Index: ash/common/test/test_shelf_delegate.cc
|
| diff --git a/ash/common/test/test_shelf_delegate.cc b/ash/common/test/test_shelf_delegate.cc
|
| index d27d813f60b8ad91274774352893e3f3df9c5b3b..65565d1fca2bb762853e1c99e589e679429ef85f 100644
|
| --- a/ash/common/test/test_shelf_delegate.cc
|
| +++ b/ash/common/test/test_shelf_delegate.cc
|
| @@ -21,6 +21,21 @@
|
| namespace ash {
|
| namespace test {
|
|
|
| +namespace {
|
| +
|
| +// Set the |type| of the item with the given |shelf_id|, if the item exists.
|
| +void SetItemType(ShelfID shelf_id, ShelfItemType type) {
|
| + ShelfModel* model = Shell::Get()->shelf_model();
|
| + ash::ShelfItems::const_iterator item = model->ItemByID(shelf_id);
|
| + if (item != model->items().end()) {
|
| + ShelfItem pinned_item = *item;
|
| + pinned_item.type = type;
|
| + model->Set(item - model->items().begin(), pinned_item);
|
| + }
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| TestShelfDelegate* TestShelfDelegate::instance_ = nullptr;
|
|
|
| // A ShellObserver that sets the shelf alignment and auto hide behavior when the
|
| @@ -59,25 +74,21 @@ TestShelfDelegate::~TestShelfDelegate() {
|
| }
|
|
|
| void TestShelfDelegate::AddShelfItem(WmWindow* window) {
|
| - AddShelfItem(window, STATUS_CLOSED);
|
| + AddShelfItem(window, std::string());
|
| }
|
|
|
| void TestShelfDelegate::AddShelfItem(WmWindow* window,
|
| const std::string& app_id) {
|
| - AddShelfItem(window, STATUS_CLOSED);
|
| - ShelfID shelf_id = window->aura_window()->GetProperty(kShelfIDKey);
|
| - AddShelfIDToAppIDMapping(shelf_id, app_id);
|
| -}
|
| -
|
| -void TestShelfDelegate::AddShelfItem(WmWindow* window, ShelfItemStatus status) {
|
| ShelfItem item;
|
| + if (!app_id.empty())
|
| + item.app_launch_id = AppLaunchId(app_id);
|
| if (window->GetType() == ui::wm::WINDOW_TYPE_PANEL)
|
| item.type = TYPE_APP_PANEL;
|
| else
|
| item.type = TYPE_APP;
|
| ShelfModel* model = Shell::Get()->shelf_model();
|
| ShelfID id = model->next_id();
|
| - item.status = status;
|
| + item.status = STATUS_CLOSED;
|
| model->Add(item);
|
| window->aura_window()->AddObserver(this);
|
|
|
| @@ -95,13 +106,9 @@ void TestShelfDelegate::RemoveShelfItemForWindow(WmWindow* window) {
|
| DCHECK_NE(-1, index);
|
| model->RemoveItemAt(index);
|
| window->aura_window()->RemoveObserver(this);
|
| - if (HasShelfIDToAppIDMapping(shelf_id)) {
|
| - const std::string& app_id = GetAppIDForShelfID(shelf_id);
|
| - if (IsAppPinned(app_id))
|
| - UnpinAppWithID(app_id);
|
| - if (HasShelfIDToAppIDMapping(shelf_id))
|
| - RemoveShelfIDToAppIDMapping(shelf_id);
|
| - }
|
| + const std::string& app_id = GetAppIDForShelfID(shelf_id);
|
| + if (IsAppPinned(app_id))
|
| + UnpinAppWithID(app_id);
|
| }
|
|
|
| void TestShelfDelegate::OnWindowDestroying(aura::Window* window) {
|
| @@ -118,29 +125,32 @@ void TestShelfDelegate::OnWindowHierarchyChanging(
|
| }
|
|
|
| ShelfID TestShelfDelegate::GetShelfIDForAppID(const std::string& app_id) {
|
| - for (auto const& iter : shelf_id_to_app_id_map_) {
|
| - if (iter.second == app_id)
|
| - return iter.first;
|
| - }
|
| - return 0;
|
| + // Get shelf id for |app_id| and an empty |launch_id|.
|
| + return GetShelfIDForAppIDAndLaunchID(app_id, std::string());
|
| }
|
|
|
| ShelfID TestShelfDelegate::GetShelfIDForAppIDAndLaunchID(
|
| const std::string& app_id,
|
| const std::string& launch_id) {
|
| - return GetShelfIDForAppID(app_id);
|
| -}
|
| -
|
| -bool TestShelfDelegate::HasShelfIDToAppIDMapping(ShelfID id) const {
|
| - return shelf_id_to_app_id_map_.find(id) != shelf_id_to_app_id_map_.end();
|
| + for (const ShelfItem& item : Shell::Get()->shelf_model()->items()) {
|
| + // Ash's ShelfWindowWatcher handles app panel windows separately.
|
| + if (item.type != TYPE_APP_PANEL && item.app_launch_id.app_id() == app_id &&
|
| + item.app_launch_id.launch_id() == launch_id) {
|
| + return item.id;
|
| + }
|
| + }
|
| + return kInvalidShelfID;
|
| }
|
|
|
| const std::string& TestShelfDelegate::GetAppIDForShelfID(ShelfID id) {
|
| - DCHECK_GT(shelf_id_to_app_id_map_.count(id), 0u);
|
| - return shelf_id_to_app_id_map_[id];
|
| + ShelfModel* model = Shell::Get()->shelf_model();
|
| + ash::ShelfItems::const_iterator item = model->ItemByID(id);
|
| + return item != model->items().end() ? item->app_launch_id.app_id()
|
| + : base::EmptyString();
|
| }
|
|
|
| void TestShelfDelegate::PinAppWithID(const std::string& app_id) {
|
| + SetItemType(GetShelfIDForAppID(app_id), TYPE_PINNED_APP);
|
| pinned_apps_.insert(app_id);
|
| }
|
|
|
| @@ -149,17 +159,9 @@ bool TestShelfDelegate::IsAppPinned(const std::string& app_id) {
|
| }
|
|
|
| void TestShelfDelegate::UnpinAppWithID(const std::string& app_id) {
|
| + SetItemType(GetShelfIDForAppID(app_id), TYPE_APP);
|
| pinned_apps_.erase(app_id);
|
| }
|
|
|
| -void TestShelfDelegate::AddShelfIDToAppIDMapping(ShelfID shelf_id,
|
| - const std::string& app_id) {
|
| - shelf_id_to_app_id_map_[shelf_id] = app_id;
|
| -}
|
| -
|
| -void TestShelfDelegate::RemoveShelfIDToAppIDMapping(ShelfID shelf_id) {
|
| - shelf_id_to_app_id_map_.erase(shelf_id);
|
| -}
|
| -
|
| } // namespace test
|
| } // namespace ash
|
|
|