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

Side by Side Diff: ash/shelf/shelf_view_unittest.cc

Issue 2860503002: mash: Replace int ShelfIDs with AppLaunchID strings. (Closed)
Patch Set: Restore AppLaunchId class via using ShelfID = AppLaunchId; cleanup. Created 3 years, 7 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "ash/shelf/shelf_view.h" 5 #include "ash/shelf/shelf_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 private: 133 private:
134 std::unique_ptr<TestWmShelfObserver> observer_; 134 std::unique_ptr<TestWmShelfObserver> observer_;
135 std::unique_ptr<ShelfViewTestAPI> shelf_view_test_; 135 std::unique_ptr<ShelfViewTestAPI> shelf_view_test_;
136 136
137 DISALLOW_COPY_AND_ASSIGN(WmShelfObserverIconTest); 137 DISALLOW_COPY_AND_ASSIGN(WmShelfObserverIconTest);
138 }; 138 };
139 139
140 // A ShelfItemDelegate that tracks selections and reports a custom action. 140 // A ShelfItemDelegate that tracks selections and reports a custom action.
141 class ShelfItemSelectionTracker : public ShelfItemDelegate { 141 class ShelfItemSelectionTracker : public ShelfItemDelegate {
142 public: 142 public:
143 ShelfItemSelectionTracker() : ShelfItemDelegate(AppLaunchId()) {} 143 ShelfItemSelectionTracker() : ShelfItemDelegate(ShelfID()) {}
144 ~ShelfItemSelectionTracker() override {} 144 ~ShelfItemSelectionTracker() override {}
145 145
146 size_t item_selected_count() const { return item_selected_count_; } 146 size_t item_selected_count() const { return item_selected_count_; }
147 void set_item_selected_action(ShelfAction item_selected_action) { 147 void set_item_selected_action(ShelfAction item_selected_action) {
148 item_selected_action_ = item_selected_action; 148 item_selected_action_ = item_selected_action;
149 } 149 }
150 150
151 // ShelfItemDelegate: 151 // ShelfItemDelegate:
152 void ItemSelected(std::unique_ptr<ui::Event> event, 152 void ItemSelected(std::unique_ptr<ui::Event> event,
153 int64_t display_id, 153 int64_t display_id,
154 ShelfLaunchSource source, 154 ShelfLaunchSource source,
155 const ItemSelectedCallback& callback) override { 155 const ItemSelectedCallback& callback) override {
156 item_selected_count_++; 156 item_selected_count_++;
157 callback.Run(item_selected_action_, base::nullopt); 157 callback.Run(item_selected_action_, base::nullopt);
158 } 158 }
159 void ExecuteCommand(uint32_t command_id, int32_t event_flags) override {} 159 void ExecuteCommand(uint32_t command_id, int32_t event_flags) override {}
160 void Close() override {} 160 void Close() override {}
161 161
162 private: 162 private:
163 size_t item_selected_count_ = 0; 163 size_t item_selected_count_ = 0;
164 ShelfAction item_selected_action_ = SHELF_ACTION_NONE; 164 ShelfAction item_selected_action_ = SHELF_ACTION_NONE;
165 165
166 DISALLOW_COPY_AND_ASSIGN(ShelfItemSelectionTracker); 166 DISALLOW_COPY_AND_ASSIGN(ShelfItemSelectionTracker);
167 }; 167 };
168 168
169 TEST_F(WmShelfObserverIconTest, AddRemove) { 169 TEST_F(WmShelfObserverIconTest, AddRemove) {
170 ShelfItem item; 170 ShelfItem item;
171 item.id = ShelfID("foo");
171 item.type = TYPE_APP; 172 item.type = TYPE_APP;
172 EXPECT_FALSE(observer()->icon_positions_changed()); 173 EXPECT_FALSE(observer()->icon_positions_changed());
173 const int shelf_item_index = Shell::Get()->shelf_model()->Add(item); 174 const int shelf_item_index = Shell::Get()->shelf_model()->Add(item);
174 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); 175 shelf_view_test()->RunMessageLoopUntilAnimationsDone();
175 EXPECT_TRUE(observer()->icon_positions_changed()); 176 EXPECT_TRUE(observer()->icon_positions_changed());
176 observer()->Reset(); 177 observer()->Reset();
177 178
178 EXPECT_FALSE(observer()->icon_positions_changed()); 179 EXPECT_FALSE(observer()->icon_positions_changed());
179 Shell::Get()->shelf_model()->RemoveItemAt(shelf_item_index); 180 Shell::Get()->shelf_model()->RemoveItemAt(shelf_item_index);
180 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); 181 shelf_view_test()->RunMessageLoopUntilAnimationsDone();
181 EXPECT_TRUE(observer()->icon_positions_changed()); 182 EXPECT_TRUE(observer()->icon_positions_changed());
182 observer()->Reset(); 183 observer()->Reset();
183 } 184 }
184 185
185 // Make sure creating/deleting an window on one displays notifies a 186 // Make sure creating/deleting an window on one displays notifies a
186 // shelf on external display as well as one on primary. 187 // shelf on external display as well as one on primary.
187 TEST_F(WmShelfObserverIconTest, AddRemoveWithMultipleDisplays) { 188 TEST_F(WmShelfObserverIconTest, AddRemoveWithMultipleDisplays) {
188 // TODO: investigate failure in mash, http://crbug.com/695751. 189 // TODO: investigate failure in mash, http://crbug.com/695751.
189 if (Shell::GetAshConfig() == Config::MASH) 190 if (Shell::GetAshConfig() == Config::MASH)
190 return; 191 return;
191 192
192 UpdateDisplay("400x400,400x400"); 193 UpdateDisplay("400x400,400x400");
193 observer()->Reset(); 194 observer()->Reset();
194 195
195 WmWindow* second_root = ShellPort::Get()->GetAllRootWindows()[1]; 196 WmWindow* second_root = ShellPort::Get()->GetAllRootWindows()[1];
196 WmShelf* second_shelf = second_root->GetRootWindowController()->GetShelf(); 197 WmShelf* second_shelf = second_root->GetRootWindowController()->GetShelf();
197 TestWmShelfObserver second_observer(second_shelf); 198 TestWmShelfObserver second_observer(second_shelf);
198 199
199 ShelfItem item; 200 ShelfItem item;
201 item.id = ShelfID("foo");
200 item.type = TYPE_APP; 202 item.type = TYPE_APP;
201 EXPECT_FALSE(observer()->icon_positions_changed()); 203 EXPECT_FALSE(observer()->icon_positions_changed());
202 EXPECT_FALSE(second_observer.icon_positions_changed()); 204 EXPECT_FALSE(second_observer.icon_positions_changed());
203 const int shelf_item_index = Shell::Get()->shelf_model()->Add(item); 205 const int shelf_item_index = Shell::Get()->shelf_model()->Add(item);
204 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); 206 shelf_view_test()->RunMessageLoopUntilAnimationsDone();
205 EXPECT_TRUE(observer()->icon_positions_changed()); 207 EXPECT_TRUE(observer()->icon_positions_changed());
206 EXPECT_TRUE(second_observer.icon_positions_changed()); 208 EXPECT_TRUE(second_observer.icon_positions_changed());
207 observer()->Reset(); 209 observer()->Reset();
208 second_observer.Reset(); 210 second_observer.Reset();
209 211
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 } 267 }
266 268
267 protected: 269 protected:
268 // Add shelf items of various types, and optionally wait for animations. 270 // Add shelf items of various types, and optionally wait for animations.
269 ShelfID AddItem(ShelfItemType type, bool wait_for_animations) { 271 ShelfID AddItem(ShelfItemType type, bool wait_for_animations) {
270 ShelfItem item; 272 ShelfItem item;
271 item.type = type; 273 item.type = type;
272 if (type == TYPE_APP || type == TYPE_APP_PANEL) 274 if (type == TYPE_APP || type == TYPE_APP_PANEL)
273 item.status = STATUS_RUNNING; 275 item.status = STATUS_RUNNING;
274 276
275 ShelfID id = model_->next_id(); 277 static int id = 0;
276 item.app_launch_id = AppLaunchId(base::IntToString(id)); 278 item.id = ShelfID(base::IntToString(id++));
277 model_->Add(item); 279 model_->Add(item);
278 // Set a delegate; some tests require one to select the item. 280 // Set a delegate; some tests require one to select the item.
279 model_->SetShelfItemDelegate(id, 281 model_->SetShelfItemDelegate(item.id,
280 base::MakeUnique<ShelfItemSelectionTracker>()); 282 base::MakeUnique<ShelfItemSelectionTracker>());
281 if (wait_for_animations) 283 if (wait_for_animations)
282 test_api_->RunMessageLoopUntilAnimationsDone(); 284 test_api_->RunMessageLoopUntilAnimationsDone();
283 return id; 285 return item.id;
284 } 286 }
285 ShelfID AddAppShortcut() { return AddItem(TYPE_PINNED_APP, true); } 287 ShelfID AddAppShortcut() { return AddItem(TYPE_PINNED_APP, true); }
286 ShelfID AddPanel() { return AddItem(TYPE_APP_PANEL, true); } 288 ShelfID AddPanel() { return AddItem(TYPE_APP_PANEL, true); }
287 ShelfID AddAppNoWait() { return AddItem(TYPE_APP, false); } 289 ShelfID AddAppNoWait() { return AddItem(TYPE_APP, false); }
288 ShelfID AddApp() { return AddItem(TYPE_APP, true); } 290 ShelfID AddApp() { return AddItem(TYPE_APP, true); }
289 291
290 void SetShelfItemTypeToAppShortcut(ShelfID id) { 292 void SetShelfItemTypeToAppShortcut(const ShelfID& id) {
291 int index = model_->ItemIndexByID(id); 293 int index = model_->ItemIndexByID(id);
292 DCHECK_GE(index, 0); 294 DCHECK_GE(index, 0);
293 295
294 ShelfItem item = model_->items()[index]; 296 ShelfItem item = model_->items()[index];
295 297
296 if (item.type == TYPE_APP) { 298 if (item.type == TYPE_APP) {
297 item.type = TYPE_PINNED_APP; 299 item.type = TYPE_PINNED_APP;
298 model_->Set(index, item); 300 model_->Set(index, item);
299 } 301 }
300 test_api_->RunMessageLoopUntilAnimationsDone(); 302 test_api_->RunMessageLoopUntilAnimationsDone();
301 } 303 }
302 304
303 void RemoveByID(ShelfID id) { 305 void RemoveByID(const ShelfID& id) {
304 model_->RemoveItemAt(model_->ItemIndexByID(id)); 306 model_->RemoveItemAt(model_->ItemIndexByID(id));
305 test_api_->RunMessageLoopUntilAnimationsDone(); 307 test_api_->RunMessageLoopUntilAnimationsDone();
306 } 308 }
307 309
308 ShelfButton* GetButtonByID(ShelfID id) { 310 ShelfButton* GetButtonByID(const ShelfID& id) {
309 int index = model_->ItemIndexByID(id); 311 int index = model_->ItemIndexByID(id);
310 return test_api_->GetButton(index); 312 return test_api_->GetButton(index);
311 } 313 }
312 314
313 ShelfItem GetItemByID(ShelfID id) { 315 ShelfItem GetItemByID(const ShelfID& id) {
314 ShelfItems::const_iterator items = model_->ItemByID(id); 316 ShelfItems::const_iterator items = model_->ItemByID(id);
315 return *items; 317 return *items;
316 } 318 }
317 319
318 void CheckModelIDs( 320 void CheckModelIDs(
319 const std::vector<std::pair<ShelfID, views::View*>>& id_map) { 321 const std::vector<std::pair<ShelfID, views::View*>>& id_map) {
320 size_t map_index = 0; 322 size_t map_index = 0;
321 for (size_t model_index = 0; model_index < model_->items().size(); 323 for (size_t model_index = 0; model_index < model_->items().size();
322 ++model_index) { 324 ++model_index) {
323 ShelfItem item = model_->items()[model_index]; 325 ShelfItem item = model_->items()[model_index];
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 } 579 }
578 580
579 // Returns the item's ShelfID at |index|. 581 // Returns the item's ShelfID at |index|.
580 ShelfID GetItemId(int index) { 582 ShelfID GetItemId(int index) {
581 DCHECK_GE(index, 0); 583 DCHECK_GE(index, 0);
582 return model_->items()[index].id; 584 return model_->items()[index].id;
583 } 585 }
584 586
585 // Returns the center coordinates for a button. Helper function for an event 587 // Returns the center coordinates for a button. Helper function for an event
586 // generator. 588 // generator.
587 gfx::Point GetButtonCenter(ShelfID button_id) { 589 gfx::Point GetButtonCenter(const ShelfID& button_id) {
588 return GetButtonCenter( 590 return GetButtonCenter(
589 test_api_->GetButton(model_->ItemIndexByID(button_id))); 591 test_api_->GetButton(model_->ItemIndexByID(button_id)));
590 } 592 }
591 593
592 gfx::Point GetButtonCenter(ShelfButton* button) { 594 gfx::Point GetButtonCenter(ShelfButton* button) {
593 return button->GetBoundsInScreen().CenterPoint(); 595 return button->GetBoundsInScreen().CenterPoint();
594 } 596 }
595 597
596 ShelfModel* model_ = nullptr; 598 ShelfModel* model_ = nullptr;
597 ShelfView* shelf_view_ = nullptr; 599 ShelfView* shelf_view_ = nullptr;
(...skipping 1334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1932 std::unique_ptr<views::InkDrop> ink_drop_; 1934 std::unique_ptr<views::InkDrop> ink_drop_;
1933 std::vector<views::InkDropState> requested_states_; 1935 std::vector<views::InkDropState> requested_states_;
1934 1936
1935 private: 1937 private:
1936 DISALLOW_COPY_AND_ASSIGN(InkDropSpy); 1938 DISALLOW_COPY_AND_ASSIGN(InkDropSpy);
1937 }; 1939 };
1938 1940
1939 // A ShelfItemDelegate that returns a menu for the shelf item. 1941 // A ShelfItemDelegate that returns a menu for the shelf item.
1940 class ListMenuShelfItemDelegate : public ShelfItemDelegate { 1942 class ListMenuShelfItemDelegate : public ShelfItemDelegate {
1941 public: 1943 public:
1942 ListMenuShelfItemDelegate() : ShelfItemDelegate(AppLaunchId()) {} 1944 ListMenuShelfItemDelegate() : ShelfItemDelegate(ShelfID()) {}
1943 ~ListMenuShelfItemDelegate() override {} 1945 ~ListMenuShelfItemDelegate() override {}
1944 1946
1945 private: 1947 private:
1946 // ShelfItemDelegate: 1948 // ShelfItemDelegate:
1947 void ItemSelected(std::unique_ptr<ui::Event> event, 1949 void ItemSelected(std::unique_ptr<ui::Event> event,
1948 int64_t display_id, 1950 int64_t display_id,
1949 ShelfLaunchSource source, 1951 ShelfLaunchSource source,
1950 const ItemSelectedCallback& callback) override { 1952 const ItemSelectedCallback& callback) override {
1951 // Two items are needed to show a menu; the data in the items is not tested. 1953 // Two items are needed to show a menu; the data in the items is not tested.
1952 std::vector<mojom::MenuItemPtr> items; 1954 std::vector<mojom::MenuItemPtr> items;
(...skipping 1104 matching lines...) Expand 10 before | Expand all | Expand 10 after
3057 EXPECT_EQ(views::InkDropState::ACTIVATED, 3059 EXPECT_EQ(views::InkDropState::ACTIVATED,
3058 overflow_button_ink_drop_->GetTargetInkDropState()); 3060 overflow_button_ink_drop_->GetTargetInkDropState());
3059 EXPECT_THAT(overflow_button_ink_drop_->GetAndResetRequestedStates(), 3061 EXPECT_THAT(overflow_button_ink_drop_->GetAndResetRequestedStates(),
3060 IsEmpty()); 3062 IsEmpty());
3061 3063
3062 ASSERT_TRUE(test_api_->IsShowingOverflowBubble()); 3064 ASSERT_TRUE(test_api_->IsShowingOverflowBubble());
3063 } 3065 }
3064 3066
3065 } // namespace test 3067 } // namespace test
3066 } // namespace ash 3068 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698