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

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

Issue 115113006: Rename Launcher to Shelf. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more fixes Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « ash/shelf/shelf_view.cc ('k') | ash/shelf/shelf_widget.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <vector> 8 #include <vector>
9 9
10 #include "ash/ash_switches.h" 10 #include "ash/ash_switches.h"
11 #include "ash/launcher/launcher.h"
12 #include "ash/launcher/launcher_types.h" 11 #include "ash/launcher/launcher_types.h"
13 #include "ash/root_window_controller.h" 12 #include "ash/root_window_controller.h"
14 #include "ash/shelf/overflow_bubble.h" 13 #include "ash/shelf/overflow_bubble.h"
15 #include "ash/shelf/overflow_bubble_view.h" 14 #include "ash/shelf/overflow_bubble_view.h"
15 #include "ash/shelf/shelf.h"
16 #include "ash/shelf/shelf_button.h" 16 #include "ash/shelf/shelf_button.h"
17 #include "ash/shelf/shelf_icon_observer.h" 17 #include "ash/shelf/shelf_icon_observer.h"
18 #include "ash/shelf/shelf_item_delegate_manager.h" 18 #include "ash/shelf/shelf_item_delegate_manager.h"
19 #include "ash/shelf/shelf_layout_manager.h" 19 #include "ash/shelf/shelf_layout_manager.h"
20 #include "ash/shelf/shelf_model.h" 20 #include "ash/shelf/shelf_model.h"
21 #include "ash/shelf/shelf_tooltip_manager.h" 21 #include "ash/shelf/shelf_tooltip_manager.h"
22 #include "ash/shelf/shelf_widget.h" 22 #include "ash/shelf/shelf_widget.h"
23 #include "ash/shell.h" 23 #include "ash/shell.h"
24 #include "ash/shell_window_ids.h" 24 #include "ash/shell_window_ids.h"
25 #include "ash/test/ash_test_base.h" 25 #include "ash/test/ash_test_base.h"
26 #include "ash/test/launcher_test_api.h"
27 #include "ash/test/overflow_bubble_view_test_api.h" 26 #include "ash/test/overflow_bubble_view_test_api.h"
27 #include "ash/test/shelf_test_api.h"
28 #include "ash/test/shelf_view_test_api.h" 28 #include "ash/test/shelf_view_test_api.h"
29 #include "ash/test/shell_test_api.h" 29 #include "ash/test/shell_test_api.h"
30 #include "ash/test/test_shelf_delegate.h" 30 #include "ash/test/test_shelf_delegate.h"
31 #include "ash/test/test_shelf_item_delegate.h" 31 #include "ash/test/test_shelf_item_delegate.h"
32 #include "ash/wm/coordinate_conversion.h" 32 #include "ash/wm/coordinate_conversion.h"
33 #include "base/basictypes.h" 33 #include "base/basictypes.h"
34 #include "base/command_line.h" 34 #include "base/command_line.h"
35 #include "base/compiler_specific.h" 35 #include "base/compiler_specific.h"
36 #include "base/memory/scoped_ptr.h" 36 #include "base/memory/scoped_ptr.h"
37 #include "base/strings/string_number_conversions.h" 37 #include "base/strings/string_number_conversions.h"
(...skipping 11 matching lines...) Expand all
49 #include "ui/views/widget/widget_delegate.h" 49 #include "ui/views/widget/widget_delegate.h"
50 50
51 namespace ash { 51 namespace ash {
52 namespace test { 52 namespace test {
53 53
54 //////////////////////////////////////////////////////////////////////////////// 54 ////////////////////////////////////////////////////////////////////////////////
55 // ShelfIconObserver tests. 55 // ShelfIconObserver tests.
56 56
57 class TestShelfIconObserver : public ShelfIconObserver { 57 class TestShelfIconObserver : public ShelfIconObserver {
58 public: 58 public:
59 explicit TestShelfIconObserver(Launcher* launcher) 59 explicit TestShelfIconObserver(Shelf* shelf)
60 : launcher_(launcher), 60 : shelf_(shelf),
61 change_notified_(false) { 61 change_notified_(false) {
62 if (launcher_) 62 if (shelf_)
63 launcher_->AddIconObserver(this); 63 shelf_->AddIconObserver(this);
64 } 64 }
65 65
66 virtual ~TestShelfIconObserver() { 66 virtual ~TestShelfIconObserver() {
67 if (launcher_) 67 if (shelf_)
68 launcher_->RemoveIconObserver(this); 68 shelf_->RemoveIconObserver(this);
69 } 69 }
70 70
71 // ShelfIconObserver implementation. 71 // ShelfIconObserver implementation.
72 virtual void OnShelfIconPositionsChanged() OVERRIDE { 72 virtual void OnShelfIconPositionsChanged() OVERRIDE {
73 change_notified_ = true; 73 change_notified_ = true;
74 } 74 }
75 75
76 int change_notified() const { return change_notified_; } 76 int change_notified() const { return change_notified_; }
77 void Reset() { change_notified_ = false; } 77 void Reset() { change_notified_ = false; }
78 78
79 private: 79 private:
80 Launcher* launcher_; 80 Shelf* shelf_;
81 bool change_notified_; 81 bool change_notified_;
82 82
83 DISALLOW_COPY_AND_ASSIGN(TestShelfIconObserver); 83 DISALLOW_COPY_AND_ASSIGN(TestShelfIconObserver);
84 }; 84 };
85 85
86 class ShelfViewIconObserverTest : public AshTestBase { 86 class ShelfViewIconObserverTest : public AshTestBase {
87 public: 87 public:
88 ShelfViewIconObserverTest() {} 88 ShelfViewIconObserverTest() {}
89 virtual ~ShelfViewIconObserverTest() {} 89 virtual ~ShelfViewIconObserverTest() {}
90 90
91 virtual void SetUp() OVERRIDE { 91 virtual void SetUp() OVERRIDE {
92 AshTestBase::SetUp(); 92 AshTestBase::SetUp();
93 Launcher* launcher = Launcher::ForPrimaryDisplay(); 93 Shelf* shelf = Shelf::ForPrimaryDisplay();
94 observer_.reset(new TestShelfIconObserver(launcher)); 94 observer_.reset(new TestShelfIconObserver(shelf));
95 95
96 shelf_view_test_.reset(new ShelfViewTestAPI( 96 shelf_view_test_.reset(
97 LauncherTestAPI(launcher).shelf_view())); 97 new ShelfViewTestAPI(ShelfTestAPI(shelf).shelf_view()));
98 shelf_view_test_->SetAnimationDuration(1); 98 shelf_view_test_->SetAnimationDuration(1);
99 } 99 }
100 100
101 virtual void TearDown() OVERRIDE { 101 virtual void TearDown() OVERRIDE {
102 observer_.reset(); 102 observer_.reset();
103 AshTestBase::TearDown(); 103 AshTestBase::TearDown();
104 } 104 }
105 105
106 TestShelfIconObserver* observer() { return observer_.get(); } 106 TestShelfIconObserver* observer() { return observer_.get(); }
107 107
108 ShelfViewTestAPI* shelf_view_test() { 108 ShelfViewTestAPI* shelf_view_test() {
109 return shelf_view_test_.get(); 109 return shelf_view_test_.get();
110 } 110 }
111 111
112 Launcher* LauncherForSecondaryDisplay() { 112 Shelf* ShelfForSecondaryDisplay() {
113 return Launcher::ForWindow(Shell::GetAllRootWindows()[1]); 113 return Shelf::ForWindow(Shell::GetAllRootWindows()[1]);
114 } 114 }
115 115
116 private: 116 private:
117 scoped_ptr<TestShelfIconObserver> observer_; 117 scoped_ptr<TestShelfIconObserver> observer_;
118 scoped_ptr<ShelfViewTestAPI> shelf_view_test_; 118 scoped_ptr<ShelfViewTestAPI> shelf_view_test_;
119 119
120 DISALLOW_COPY_AND_ASSIGN(ShelfViewIconObserverTest); 120 DISALLOW_COPY_AND_ASSIGN(ShelfViewIconObserverTest);
121 }; 121 };
122 122
123 TEST_F(ShelfViewIconObserverTest, AddRemove) { 123 TEST_F(ShelfViewIconObserverTest, AddRemove) {
(...skipping 21 matching lines...) Expand all
145 145
146 // Sometimes fails on trybots on win7_aura. http://crbug.com/177135 146 // Sometimes fails on trybots on win7_aura. http://crbug.com/177135
147 #if defined(OS_WIN) 147 #if defined(OS_WIN)
148 #define MAYBE_AddRemoveWithMultipleDisplays \ 148 #define MAYBE_AddRemoveWithMultipleDisplays \
149 DISABLED_AddRemoveWithMultipleDisplays 149 DISABLED_AddRemoveWithMultipleDisplays
150 #else 150 #else
151 #define MAYBE_AddRemoveWithMultipleDisplays \ 151 #define MAYBE_AddRemoveWithMultipleDisplays \
152 AddRemoveWithMultipleDisplays 152 AddRemoveWithMultipleDisplays
153 #endif 153 #endif
154 // Make sure creating/deleting an window on one displays notifies a 154 // Make sure creating/deleting an window on one displays notifies a
155 // launcher on external display as well as one on primary. 155 // shelf on external display as well as one on primary.
156 TEST_F(ShelfViewIconObserverTest, MAYBE_AddRemoveWithMultipleDisplays) { 156 TEST_F(ShelfViewIconObserverTest, MAYBE_AddRemoveWithMultipleDisplays) {
157 UpdateDisplay("400x400,400x400"); 157 UpdateDisplay("400x400,400x400");
158 TestShelfIconObserver second_observer(LauncherForSecondaryDisplay()); 158 TestShelfIconObserver second_observer(ShelfForSecondaryDisplay());
159 159
160 TestShelfDelegate* shelf_delegate = TestShelfDelegate::instance(); 160 TestShelfDelegate* shelf_delegate = TestShelfDelegate::instance();
161 ASSERT_TRUE(shelf_delegate); 161 ASSERT_TRUE(shelf_delegate);
162 162
163 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); 163 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
164 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 164 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
165 params.bounds = gfx::Rect(0, 0, 200, 200); 165 params.bounds = gfx::Rect(0, 0, 200, 200);
166 params.context = CurrentContext(); 166 params.context = CurrentContext();
167 167
168 scoped_ptr<views::Widget> widget(new views::Widget()); 168 scoped_ptr<views::Widget> widget(new views::Widget());
169 widget->Init(params); 169 widget->Init(params);
170 shelf_delegate->AddLauncherItem(widget->GetNativeWindow()); 170 shelf_delegate->AddLauncherItem(widget->GetNativeWindow());
171 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); 171 shelf_view_test()->RunMessageLoopUntilAnimationsDone();
172 EXPECT_TRUE(observer()->change_notified()); 172 EXPECT_TRUE(observer()->change_notified());
173 EXPECT_TRUE(second_observer.change_notified()); 173 EXPECT_TRUE(second_observer.change_notified());
174 observer()->Reset(); 174 observer()->Reset();
175 second_observer.Reset(); 175 second_observer.Reset();
176 176
177 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow()); 177 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow());
178 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); 178 shelf_view_test()->RunMessageLoopUntilAnimationsDone();
179 EXPECT_TRUE(observer()->change_notified()); 179 EXPECT_TRUE(observer()->change_notified());
180 EXPECT_TRUE(second_observer.change_notified()); 180 EXPECT_TRUE(second_observer.change_notified());
181 181
182 observer()->Reset(); 182 observer()->Reset();
183 second_observer.Reset(); 183 second_observer.Reset();
184 } 184 }
185 185
186 TEST_F(ShelfViewIconObserverTest, BoundsChanged) { 186 TEST_F(ShelfViewIconObserverTest, BoundsChanged) {
187 ShelfWidget* shelf = Shell::GetPrimaryRootWindowController()->shelf(); 187 ShelfWidget* widget = Shell::GetPrimaryRootWindowController()->shelf();
188 Launcher* launcher = Launcher::ForPrimaryDisplay(); 188 Shelf* shelf = Shelf::ForPrimaryDisplay();
189 gfx::Size shelf_size = 189 gfx::Size shelf_size = widget->GetWindowBoundsInScreen().size();
190 shelf->GetWindowBoundsInScreen().size();
191 shelf_size.set_width(shelf_size.width() / 2); 190 shelf_size.set_width(shelf_size.width() / 2);
192 ASSERT_GT(shelf_size.width(), 0); 191 ASSERT_GT(shelf_size.width(), 0);
193 launcher->SetShelfViewBounds(gfx::Rect(shelf_size)); 192 shelf->SetShelfViewBounds(gfx::Rect(shelf_size));
194 // No animation happens for ShelfView bounds change. 193 // No animation happens for ShelfView bounds change.
195 EXPECT_TRUE(observer()->change_notified()); 194 EXPECT_TRUE(observer()->change_notified());
196 observer()->Reset(); 195 observer()->Reset();
197 } 196 }
198 197
199 //////////////////////////////////////////////////////////////////////////////// 198 ////////////////////////////////////////////////////////////////////////////////
200 // ShelfView tests. 199 // ShelfView tests.
201 200
202 // Simple ShelfDelegate implmentation for ShelfViewTest.OverflowBubbleSize 201 // Simple ShelfDelegate implmentation for ShelfViewTest.OverflowBubbleSize
203 // and CheckDragAndDropFromOverflowBubbleToShelf 202 // and CheckDragAndDropFromOverflowBubbleToShelf
204 class TestShelfDelegateForShelfView : public ShelfDelegate { 203 class TestShelfDelegateForShelfView : public ShelfDelegate {
205 public: 204 public:
206 explicit TestShelfDelegateForShelfView(ShelfModel* model) 205 explicit TestShelfDelegateForShelfView(ShelfModel* model)
207 : model_(model) {} 206 : model_(model) {}
208 virtual ~TestShelfDelegateForShelfView() {} 207 virtual ~TestShelfDelegateForShelfView() {}
209 208
210 // ShelfDelegate overrides: 209 // ShelfDelegate overrides:
211 virtual void OnLauncherCreated(Launcher* launcher) OVERRIDE {} 210 virtual void OnShelfCreated(Shelf* shelf) OVERRIDE {}
212 211
213 virtual void OnLauncherDestroyed(Launcher* launcher) OVERRIDE {} 212 virtual void OnShelfDestroyed(Shelf* shelf) OVERRIDE {}
214 213
215 virtual LauncherID GetLauncherIDForAppID(const std::string& app_id) OVERRIDE { 214 virtual LauncherID GetLauncherIDForAppID(const std::string& app_id) OVERRIDE {
216 LauncherID id = 0; 215 LauncherID id = 0;
217 EXPECT_TRUE(base::StringToInt(app_id, &id)); 216 EXPECT_TRUE(base::StringToInt(app_id, &id));
218 return id; 217 return id;
219 } 218 }
220 219
221 virtual const std::string& GetAppIDForLauncherID(LauncherID id) OVERRIDE { 220 virtual const std::string& GetAppIDForLauncherID(LauncherID id) OVERRIDE {
222 // Use |app_id_| member variable because returning a reference to local 221 // Use |app_id_| member variable because returning a reference to local
223 // variable is not allowed. 222 // variable is not allowed.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 259
261 class ShelfViewTest : public AshTestBase { 260 class ShelfViewTest : public AshTestBase {
262 public: 261 public:
263 ShelfViewTest() : model_(NULL), shelf_view_(NULL), browser_index_(1) {} 262 ShelfViewTest() : model_(NULL), shelf_view_(NULL), browser_index_(1) {}
264 virtual ~ShelfViewTest() {} 263 virtual ~ShelfViewTest() {}
265 264
266 virtual void SetUp() OVERRIDE { 265 virtual void SetUp() OVERRIDE {
267 AshTestBase::SetUp(); 266 AshTestBase::SetUp();
268 test::ShellTestApi test_api(Shell::GetInstance()); 267 test::ShellTestApi test_api(Shell::GetInstance());
269 model_ = test_api.shelf_model(); 268 model_ = test_api.shelf_model();
270 Launcher* launcher = Launcher::ForPrimaryDisplay(); 269 Shelf* shelf = Shelf::ForPrimaryDisplay();
271 shelf_view_ = test::LauncherTestAPI(launcher).shelf_view(); 270 shelf_view_ = ShelfTestAPI(shelf).shelf_view();
272 271
273 // The bounds should be big enough for 4 buttons + overflow chevron. 272 // The bounds should be big enough for 4 buttons + overflow chevron.
274 shelf_view_->SetBounds(0, 0, 500, 273 shelf_view_->SetBounds(0, 0, 500,
275 internal::ShelfLayoutManager::GetPreferredShelfSize()); 274 internal::ShelfLayoutManager::GetPreferredShelfSize());
276 275
277 test_api_.reset(new ShelfViewTestAPI(shelf_view_)); 276 test_api_.reset(new ShelfViewTestAPI(shelf_view_));
278 test_api_->SetAnimationDuration(1); // Speeds up animation for test. 277 test_api_->SetAnimationDuration(1); // Speeds up animation for test.
279 278
280 item_manager_ = Shell::GetInstance()->shelf_item_delegate_manager(); 279 item_manager_ = Shell::GetInstance()->shelf_item_delegate_manager();
281 DCHECK(item_manager_); 280 DCHECK(item_manager_);
282 281
283 // Add browser shortcut launcher item at index 0 for test. 282 // Add browser shortcut shelf item at index 0 for test.
284 AddBrowserShortcut(); 283 AddBrowserShortcut();
285 } 284 }
286 285
287 virtual void TearDown() OVERRIDE { 286 virtual void TearDown() OVERRIDE {
288 test_api_.reset(); 287 test_api_.reset();
289 AshTestBase::TearDown(); 288 AshTestBase::TearDown();
290 } 289 }
291 290
292 protected: 291 protected:
293 void CreateAndSetShelfItemDelegateForID(LauncherID id) { 292 void CreateAndSetShelfItemDelegateForID(LauncherID id) {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 ++model_index) { 374 ++model_index) {
376 LauncherItem item = model_->items()[model_index]; 375 LauncherItem item = model_->items()[model_index];
377 LauncherID id = item.id; 376 LauncherID id = item.id;
378 EXPECT_EQ(id_map[map_index].first, id); 377 EXPECT_EQ(id_map[map_index].first, id);
379 EXPECT_EQ(id_map[map_index].second, GetButtonByID(id)); 378 EXPECT_EQ(id_map[map_index].second, GetButtonByID(id));
380 ++map_index; 379 ++map_index;
381 } 380 }
382 ASSERT_EQ(map_index, id_map.size()); 381 ASSERT_EQ(map_index, id_map.size());
383 } 382 }
384 383
385 void VerifyLauncherItemBoundsAreValid() { 384 void VerifyShelfItemBoundsAreValid() {
386 for (int i=0;i <= test_api_->GetLastVisibleIndex(); ++i) { 385 for (int i=0;i <= test_api_->GetLastVisibleIndex(); ++i) {
387 if (test_api_->GetButton(i)) { 386 if (test_api_->GetButton(i)) {
388 gfx::Rect shelf_view_bounds = shelf_view_->GetLocalBounds(); 387 gfx::Rect shelf_view_bounds = shelf_view_->GetLocalBounds();
389 gfx::Rect item_bounds = test_api_->GetBoundsByIndex(i); 388 gfx::Rect item_bounds = test_api_->GetBoundsByIndex(i);
390 EXPECT_GE(item_bounds.x(), 0); 389 EXPECT_GE(item_bounds.x(), 0);
391 EXPECT_GE(item_bounds.y(), 0); 390 EXPECT_GE(item_bounds.y(), 0);
392 EXPECT_LE(item_bounds.right(), shelf_view_bounds.width()); 391 EXPECT_LE(item_bounds.right(), shelf_view_bounds.width());
393 EXPECT_LE(item_bounds.bottom(), shelf_view_bounds.height()); 392 EXPECT_LE(item_bounds.bottom(), shelf_view_bounds.height());
394 } 393 }
395 } 394 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 views::View* destination = test_api_->GetButton(destination_index); 426 views::View* destination = test_api_->GetButton(destination_index);
428 ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED, 427 ui::MouseEvent drag_event(ui::ET_MOUSE_DRAGGED,
429 destination->bounds().origin(), 428 destination->bounds().origin(),
430 destination->GetBoundsInScreen().origin(), 0, 0); 429 destination->GetBoundsInScreen().origin(), 0, 0);
431 button_host->PointerDraggedOnButton(button, pointer, drag_event); 430 button_host->PointerDraggedOnButton(button, pointer, drag_event);
432 return button; 431 return button;
433 } 432 }
434 433
435 void SetupForDragTest( 434 void SetupForDragTest(
436 std::vector<std::pair<LauncherID, views::View*> >* id_map) { 435 std::vector<std::pair<LauncherID, views::View*> >* id_map) {
437 // Initialize |id_map| with the automatically-created launcher buttons. 436 // Initialize |id_map| with the automatically-created shelf buttons.
438 for (size_t i = 0; i < model_->items().size(); ++i) { 437 for (size_t i = 0; i < model_->items().size(); ++i) {
439 internal::ShelfButton* button = test_api_->GetButton(i); 438 internal::ShelfButton* button = test_api_->GetButton(i);
440 id_map->push_back(std::make_pair(model_->items()[i].id, button)); 439 id_map->push_back(std::make_pair(model_->items()[i].id, button));
441 } 440 }
442 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(*id_map)); 441 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(*id_map));
443 442
444 // Add 5 app launcher buttons for testing. 443 // Add 5 app shelf buttons for testing.
445 for (int i = 0; i < 5; ++i) { 444 for (int i = 0; i < 5; ++i) {
446 LauncherID id = AddAppShortcut(); 445 LauncherID id = AddAppShortcut();
447 // App Icon is located at index 0, and browser shortcut is located at 446 // App Icon is located at index 0, and browser shortcut is located at
448 // index 1. So we should start to add app shortcut at index 2. 447 // index 1. So we should start to add app shortcut at index 2.
449 id_map->insert(id_map->begin() + (i + browser_index_ + 1), 448 id_map->insert(id_map->begin() + (i + browser_index_ + 1),
450 std::make_pair(id, GetButtonByID(id))); 449 std::make_pair(id, GetButtonByID(id)));
451 } 450 }
452 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(*id_map)); 451 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(*id_map));
453 } 452 }
454 453
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 DCHECK_GE(index, 0); 560 DCHECK_GE(index, 0);
562 return model_->items()[index].id; 561 return model_->items()[index].id;
563 } 562 }
564 563
565 void ReplaceShelfDelegateForRipOffTest() { 564 void ReplaceShelfDelegateForRipOffTest() {
566 // Replace ShelfDelegate. 565 // Replace ShelfDelegate.
567 test::ShellTestApi test_api(Shell::GetInstance()); 566 test::ShellTestApi test_api(Shell::GetInstance());
568 test_api.SetShelfDelegate(NULL); 567 test_api.SetShelfDelegate(NULL);
569 ShelfDelegate* delegate = new TestShelfDelegateForShelfView(model_); 568 ShelfDelegate* delegate = new TestShelfDelegateForShelfView(model_);
570 test_api.SetShelfDelegate(delegate); 569 test_api.SetShelfDelegate(delegate);
571 test::LauncherTestAPI( 570 test::ShelfTestAPI(Shelf::ForPrimaryDisplay()).SetShelfDelegate(delegate);
572 Launcher::ForPrimaryDisplay()).SetShelfDelegate(delegate);
573 test_api_->SetShelfDelegate(delegate); 571 test_api_->SetShelfDelegate(delegate);
574 } 572 }
575 573
576 ShelfModel* model_; 574 ShelfModel* model_;
577 internal::ShelfView* shelf_view_; 575 internal::ShelfView* shelf_view_;
578 int browser_index_; 576 int browser_index_;
579 ShelfItemDelegateManager* item_manager_; 577 ShelfItemDelegateManager* item_manager_;
580 578
581 scoped_ptr<ShelfViewTestAPI> test_api_; 579 scoped_ptr<ShelfViewTestAPI> test_api_;
582 580
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 // Verifies non-overflow buttons are visible. 947 // Verifies non-overflow buttons are visible.
950 for (int i = 0; i <= test_api_->GetLastVisibleIndex(); ++i) { 948 for (int i = 0; i <= test_api_->GetLastVisibleIndex(); ++i) {
951 internal::ShelfButton* button = test_api_->GetButton(i); 949 internal::ShelfButton* button = test_api_->GetButton(i);
952 if (button) { 950 if (button) {
953 EXPECT_TRUE(button->visible()) << "button index=" << i; 951 EXPECT_TRUE(button->visible()) << "button index=" << i;
954 EXPECT_EQ(1.0f, button->layer()->opacity()) << "button index=" << i; 952 EXPECT_EQ(1.0f, button->layer()->opacity()) << "button index=" << i;
955 } 953 }
956 } 954 }
957 } 955 }
958 956
959 // Check that model changes are handled correctly while a launcher icon is being 957 // Check that model changes are handled correctly while a shelf icon is being
960 // dragged. 958 // dragged.
961 TEST_F(ShelfViewTest, ModelChangesWhileDragging) { 959 TEST_F(ShelfViewTest, ModelChangesWhileDragging) {
962 internal::ShelfButtonHost* button_host = shelf_view_; 960 internal::ShelfButtonHost* button_host = shelf_view_;
963 961
964 std::vector<std::pair<LauncherID, views::View*> > id_map; 962 std::vector<std::pair<LauncherID, views::View*> > id_map;
965 SetupForDragTest(&id_map); 963 SetupForDragTest(&id_map);
966 964
967 // Dragging browser shortcut at index 1. 965 // Dragging browser shortcut at index 1.
968 EXPECT_TRUE(model_->items()[1].type == TYPE_BROWSER_SHORTCUT); 966 EXPECT_TRUE(model_->items()[1].type == TYPE_BROWSER_SHORTCUT);
969 views::View* dragged_button = SimulateDrag( 967 views::View* dragged_button = SimulateDrag(
(...skipping 25 matching lines...) Expand all
995 993
996 // Deleting an item keeps the remaining intact. 994 // Deleting an item keeps the remaining intact.
997 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 1, 3); 995 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 1, 3);
998 model_->RemoveItemAt(1); 996 model_->RemoveItemAt(1);
999 id_map.erase(id_map.begin() + 1); 997 id_map.erase(id_map.begin() + 1);
1000 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map)); 998 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
1001 button_host->PointerReleasedOnButton(dragged_button, 999 button_host->PointerReleasedOnButton(dragged_button,
1002 internal::ShelfButtonHost::MOUSE, 1000 internal::ShelfButtonHost::MOUSE,
1003 false); 1001 false);
1004 1002
1005 // Adding a launcher item cancels the drag and respects the order. 1003 // Adding a shelf item cancels the drag and respects the order.
1006 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 1, 3); 1004 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 1, 3);
1007 LauncherID new_id = AddAppShortcut(); 1005 LauncherID new_id = AddAppShortcut();
1008 id_map.insert(id_map.begin() + 6, 1006 id_map.insert(id_map.begin() + 6,
1009 std::make_pair(new_id, GetButtonByID(new_id))); 1007 std::make_pair(new_id, GetButtonByID(new_id)));
1010 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map)); 1008 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
1011 button_host->PointerReleasedOnButton(dragged_button, 1009 button_host->PointerReleasedOnButton(dragged_button,
1012 internal::ShelfButtonHost::MOUSE, 1010 internal::ShelfButtonHost::MOUSE,
1013 false); 1011 false);
1014 1012
1015 // Adding a launcher item at the end (i.e. a panel) canels drag and respects 1013 // Adding a shelf item at the end (i.e. a panel) canels drag and respects
1016 // the order. 1014 // the order.
1017 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 1, 3); 1015 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 1, 3);
1018 new_id = AddPanel(); 1016 new_id = AddPanel();
1019 id_map.insert(id_map.begin() + 7, 1017 id_map.insert(id_map.begin() + 7,
1020 std::make_pair(new_id, GetButtonByID(new_id))); 1018 std::make_pair(new_id, GetButtonByID(new_id)));
1021 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map)); 1019 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
1022 button_host->PointerReleasedOnButton(dragged_button, 1020 button_host->PointerReleasedOnButton(dragged_button,
1023 internal::ShelfButtonHost::MOUSE, 1021 internal::ShelfButtonHost::MOUSE,
1024 false); 1022 false);
1025 } 1023 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 1059
1062 // Deleting an item keeps the remaining intact. 1060 // Deleting an item keeps the remaining intact.
1063 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2); 1061 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2);
1064 model_->RemoveItemAt(1); 1062 model_->RemoveItemAt(1);
1065 id_map.erase(id_map.begin() + 1); 1063 id_map.erase(id_map.begin() + 1);
1066 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map)); 1064 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
1067 button_host->PointerReleasedOnButton(dragged_button, 1065 button_host->PointerReleasedOnButton(dragged_button,
1068 internal::ShelfButtonHost::MOUSE, 1066 internal::ShelfButtonHost::MOUSE,
1069 false); 1067 false);
1070 1068
1071 // Adding a launcher item cancels the drag and respects the order. 1069 // Adding a shelf item cancels the drag and respects the order.
1072 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2); 1070 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2);
1073 LauncherID new_id = AddAppShortcut(); 1071 LauncherID new_id = AddAppShortcut();
1074 id_map.insert(id_map.begin() + 5, 1072 id_map.insert(id_map.begin() + 5,
1075 std::make_pair(new_id, GetButtonByID(new_id))); 1073 std::make_pair(new_id, GetButtonByID(new_id)));
1076 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map)); 1074 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
1077 button_host->PointerReleasedOnButton(dragged_button, 1075 button_host->PointerReleasedOnButton(dragged_button,
1078 internal::ShelfButtonHost::MOUSE, 1076 internal::ShelfButtonHost::MOUSE,
1079 false); 1077 false);
1080 1078
1081 // Adding a launcher item at the end (i.e. a panel) canels drag and respects 1079 // Adding a shelf item at the end (i.e. a panel) canels drag and respects
1082 // the order. 1080 // the order.
1083 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2); 1081 dragged_button = SimulateDrag(internal::ShelfButtonHost::MOUSE, 0, 2);
1084 new_id = AddPanel(); 1082 new_id = AddPanel();
1085 id_map.insert(id_map.begin() + 7, 1083 id_map.insert(id_map.begin() + 7,
1086 std::make_pair(new_id, GetButtonByID(new_id))); 1084 std::make_pair(new_id, GetButtonByID(new_id)));
1087 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map)); 1085 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
1088 button_host->PointerReleasedOnButton(dragged_button, 1086 button_host->PointerReleasedOnButton(dragged_button,
1089 internal::ShelfButtonHost::MOUSE, 1087 internal::ShelfButtonHost::MOUSE,
1090 false); 1088 false);
1091 } 1089 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1155 id_map.begin() + 2, 1153 id_map.begin() + 2,
1156 id_map.begin() + 4); 1154 id_map.begin() + 4);
1157 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map)); 1155 ASSERT_NO_FATAL_FAILURE(CheckModelIDs(id_map));
1158 button_host->PointerReleasedOnButton(dragged_button, 1156 button_host->PointerReleasedOnButton(dragged_button,
1159 internal::ShelfButtonHost::MOUSE, 1157 internal::ShelfButtonHost::MOUSE,
1160 false); 1158 false);
1161 EXPECT_TRUE(model_->items()[3].type == TYPE_BROWSER_SHORTCUT); 1159 EXPECT_TRUE(model_->items()[3].type == TYPE_BROWSER_SHORTCUT);
1162 } 1160 }
1163 1161
1164 // Confirm that item status changes are reflected in the buttons. 1162 // Confirm that item status changes are reflected in the buttons.
1165 TEST_F(ShelfViewTest, LauncherItemStatus) { 1163 TEST_F(ShelfViewTest, ShelfItemStatus) {
1166 // All buttons should be visible. 1164 // All buttons should be visible.
1167 ASSERT_EQ(test_api_->GetButtonCount(), 1165 ASSERT_EQ(test_api_->GetButtonCount(),
1168 test_api_->GetLastVisibleIndex() + 1); 1166 test_api_->GetLastVisibleIndex() + 1);
1169 1167
1170 // Add platform app button. 1168 // Add platform app button.
1171 LauncherID last_added = AddPlatformApp(); 1169 LauncherID last_added = AddPlatformApp();
1172 LauncherItem item = GetItemByID(last_added); 1170 LauncherItem item = GetItemByID(last_added);
1173 int index = model_->ItemIndexByID(last_added); 1171 int index = model_->ItemIndexByID(last_added);
1174 internal::ShelfButton* button = GetButtonByID(last_added); 1172 internal::ShelfButton* button = GetButtonByID(last_added);
1175 ASSERT_EQ(internal::ShelfButton::STATE_RUNNING, button->state()); 1173 ASSERT_EQ(internal::ShelfButton::STATE_RUNNING, button->state());
1176 item.status = STATUS_ACTIVE; 1174 item.status = STATUS_ACTIVE;
1177 model_->Set(index, item); 1175 model_->Set(index, item);
1178 ASSERT_EQ(internal::ShelfButton::STATE_ACTIVE, button->state()); 1176 ASSERT_EQ(internal::ShelfButton::STATE_ACTIVE, button->state());
1179 item.status = STATUS_ATTENTION; 1177 item.status = STATUS_ATTENTION;
1180 model_->Set(index, item); 1178 model_->Set(index, item);
1181 ASSERT_EQ(internal::ShelfButton::STATE_ATTENTION, button->state()); 1179 ASSERT_EQ(internal::ShelfButton::STATE_ATTENTION, button->state());
1182 } 1180 }
1183 1181
1184 TEST_F(ShelfViewLegacyShelfLayoutTest, 1182 TEST_F(ShelfViewLegacyShelfLayoutTest,
1185 LauncherItemPositionReflectedOnStateChanged) { 1183 ShelfItemPositionReflectedOnStateChanged) {
1186 // All buttons should be visible. 1184 // All buttons should be visible.
1187 ASSERT_EQ(test_api_->GetButtonCount(), 1185 ASSERT_EQ(test_api_->GetButtonCount(),
1188 test_api_->GetLastVisibleIndex() + 1); 1186 test_api_->GetLastVisibleIndex() + 1);
1189 1187
1190 // Add 2 items to the launcher. 1188 // Add 2 items to the shelf.
1191 LauncherID item1_id = AddPlatformApp(); 1189 LauncherID item1_id = AddPlatformApp();
1192 LauncherID item2_id = AddPlatformAppNoWait(); 1190 LauncherID item2_id = AddPlatformAppNoWait();
1193 internal::ShelfButton* item1_button = GetButtonByID(item1_id); 1191 internal::ShelfButton* item1_button = GetButtonByID(item1_id);
1194 internal::ShelfButton* item2_button = GetButtonByID(item2_id); 1192 internal::ShelfButton* item2_button = GetButtonByID(item2_id);
1195 1193
1196 internal::ShelfButton::State state_mask = 1194 internal::ShelfButton::State state_mask =
1197 static_cast<internal::ShelfButton::State>( 1195 static_cast<internal::ShelfButton::State>(
1198 internal::ShelfButton::STATE_NORMAL | 1196 internal::ShelfButton::STATE_NORMAL |
1199 internal::ShelfButton::STATE_HOVERED | 1197 internal::ShelfButton::STATE_HOVERED |
1200 internal::ShelfButton::STATE_RUNNING | 1198 internal::ShelfButton::STATE_RUNNING |
1201 internal::ShelfButton::STATE_ACTIVE | 1199 internal::ShelfButton::STATE_ACTIVE |
1202 internal::ShelfButton::STATE_ATTENTION | 1200 internal::ShelfButton::STATE_ATTENTION |
1203 internal::ShelfButton::STATE_FOCUSED); 1201 internal::ShelfButton::STATE_FOCUSED);
1204 1202
1205 // Clear the button states. 1203 // Clear the button states.
1206 item1_button->ClearState(state_mask); 1204 item1_button->ClearState(state_mask);
1207 item2_button->ClearState(state_mask); 1205 item2_button->ClearState(state_mask);
1208 1206
1209 // Since default alignment in tests is bottom, state is reflected in y-axis. 1207 // Since default alignment in tests is bottom, state is reflected in y-axis.
1210 ASSERT_EQ(item1_button->GetIconBounds().y(), 1208 ASSERT_EQ(item1_button->GetIconBounds().y(),
1211 item2_button->GetIconBounds().y()); 1209 item2_button->GetIconBounds().y());
1212 item1_button->AddState(internal::ShelfButton::STATE_HOVERED); 1210 item1_button->AddState(internal::ShelfButton::STATE_HOVERED);
1213 ASSERT_NE(item1_button->GetIconBounds().y(), 1211 ASSERT_NE(item1_button->GetIconBounds().y(),
1214 item2_button->GetIconBounds().y()); 1212 item2_button->GetIconBounds().y());
1215 item1_button->ClearState(internal::ShelfButton::STATE_HOVERED); 1213 item1_button->ClearState(internal::ShelfButton::STATE_HOVERED);
1216 } 1214 }
1217 1215
1218 // Confirm that item status changes are reflected in the buttons 1216 // Confirm that item status changes are reflected in the buttons
1219 // for platform apps. 1217 // for platform apps.
1220 TEST_F(ShelfViewTest, LauncherItemStatusPlatformApp) { 1218 TEST_F(ShelfViewTest, ShelfItemStatusPlatformApp) {
1221 // All buttons should be visible. 1219 // All buttons should be visible.
1222 ASSERT_EQ(test_api_->GetButtonCount(), 1220 ASSERT_EQ(test_api_->GetButtonCount(),
1223 test_api_->GetLastVisibleIndex() + 1); 1221 test_api_->GetLastVisibleIndex() + 1);
1224 1222
1225 // Add platform app button. 1223 // Add platform app button.
1226 LauncherID last_added = AddPlatformApp(); 1224 LauncherID last_added = AddPlatformApp();
1227 LauncherItem item = GetItemByID(last_added); 1225 LauncherItem item = GetItemByID(last_added);
1228 int index = model_->ItemIndexByID(last_added); 1226 int index = model_->ItemIndexByID(last_added);
1229 internal::ShelfButton* button = GetButtonByID(last_added); 1227 internal::ShelfButton* button = GetButtonByID(last_added);
1230 ASSERT_EQ(internal::ShelfButton::STATE_RUNNING, button->state()); 1228 ASSERT_EQ(internal::ShelfButton::STATE_RUNNING, button->state());
1231 item.status = STATUS_ACTIVE; 1229 item.status = STATUS_ACTIVE;
1232 model_->Set(index, item); 1230 model_->Set(index, item);
1233 ASSERT_EQ(internal::ShelfButton::STATE_ACTIVE, button->state()); 1231 ASSERT_EQ(internal::ShelfButton::STATE_ACTIVE, button->state());
1234 item.status = STATUS_ATTENTION; 1232 item.status = STATUS_ATTENTION;
1235 model_->Set(index, item); 1233 model_->Set(index, item);
1236 ASSERT_EQ(internal::ShelfButton::STATE_ATTENTION, button->state()); 1234 ASSERT_EQ(internal::ShelfButton::STATE_ATTENTION, button->state());
1237 } 1235 }
1238 1236
1239 // Confirm that launcher item bounds are correctly updated on shelf changes. 1237 // Confirm that shelf item bounds are correctly updated on shelf changes.
1240 TEST_F(ShelfViewTest, LauncherItemBoundsCheck) { 1238 TEST_F(ShelfViewTest, ShelfItemBoundsCheck) {
1241 VerifyLauncherItemBoundsAreValid(); 1239 VerifyShelfItemBoundsAreValid();
1242 shelf_view_->shelf_layout_manager()->SetAutoHideBehavior( 1240 shelf_view_->shelf_layout_manager()->SetAutoHideBehavior(
1243 SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); 1241 SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
1244 test_api_->RunMessageLoopUntilAnimationsDone(); 1242 test_api_->RunMessageLoopUntilAnimationsDone();
1245 VerifyLauncherItemBoundsAreValid(); 1243 VerifyShelfItemBoundsAreValid();
1246 shelf_view_->shelf_layout_manager()->SetAutoHideBehavior( 1244 shelf_view_->shelf_layout_manager()->SetAutoHideBehavior(
1247 SHELF_AUTO_HIDE_BEHAVIOR_NEVER); 1245 SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
1248 test_api_->RunMessageLoopUntilAnimationsDone(); 1246 test_api_->RunMessageLoopUntilAnimationsDone();
1249 VerifyLauncherItemBoundsAreValid(); 1247 VerifyShelfItemBoundsAreValid();
1250 } 1248 }
1251 1249
1252 TEST_F(ShelfViewTest, ShelfTooltipTest) { 1250 TEST_F(ShelfViewTest, ShelfTooltipTest) {
1253 ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1, 1251 ASSERT_EQ(test_api_->GetLastVisibleIndex() + 1,
1254 test_api_->GetButtonCount()); 1252 test_api_->GetButtonCount());
1255 1253
1256 // Prepare some items to the launcher. 1254 // Prepare some items to the shelf.
1257 LauncherID app_button_id = AddAppShortcut(); 1255 LauncherID app_button_id = AddAppShortcut();
1258 LauncherID platform_button_id = AddPlatformApp(); 1256 LauncherID platform_button_id = AddPlatformApp();
1259 1257
1260 internal::ShelfButton* app_button = GetButtonByID(app_button_id); 1258 internal::ShelfButton* app_button = GetButtonByID(app_button_id);
1261 internal::ShelfButton* platform_button = GetButtonByID(platform_button_id); 1259 internal::ShelfButton* platform_button = GetButtonByID(platform_button_id);
1262 1260
1263 internal::ShelfButtonHost* button_host = shelf_view_; 1261 internal::ShelfButtonHost* button_host = shelf_view_;
1264 internal::ShelfTooltipManager* tooltip_manager = 1262 internal::ShelfTooltipManager* tooltip_manager =
1265 shelf_view_->tooltip_manager(); 1263 shelf_view_->tooltip_manager();
1266 1264
(...skipping 21 matching lines...) Expand all
1288 tooltip_manager->Close(); 1286 tooltip_manager->Close();
1289 1287
1290 // Next time: enter app_button -> move immediately to tab_button. 1288 // Next time: enter app_button -> move immediately to tab_button.
1291 button_host->MouseEnteredButton(app_button); 1289 button_host->MouseEnteredButton(app_button);
1292 button_host->MouseExitedButton(app_button); 1290 button_host->MouseExitedButton(app_button);
1293 button_host->MouseEnteredButton(platform_button); 1291 button_host->MouseEnteredButton(platform_button);
1294 EXPECT_FALSE(tooltip_manager->IsVisible()); 1292 EXPECT_FALSE(tooltip_manager->IsVisible());
1295 EXPECT_EQ(platform_button, GetTooltipAnchorView()); 1293 EXPECT_EQ(platform_button, GetTooltipAnchorView());
1296 } 1294 }
1297 1295
1298 // Verify a fix for crash caused by a tooltip update for a deleted launcher 1296 // Verify a fix for crash caused by a tooltip update for a deletedshelf
1299 // button, see crbug.com/288838. 1297 // button, see crbug.com/288838.
1300 TEST_F(ShelfViewTest, RemovingItemClosesTooltip) { 1298 TEST_F(ShelfViewTest, RemovingItemClosesTooltip) {
1301 internal::ShelfButtonHost* button_host = shelf_view_; 1299 internal::ShelfButtonHost* button_host = shelf_view_;
1302 internal::ShelfTooltipManager* tooltip_manager = 1300 internal::ShelfTooltipManager* tooltip_manager =
1303 shelf_view_->tooltip_manager(); 1301 shelf_view_->tooltip_manager();
1304 1302
1305 // Add an item to the launcher. 1303 // Add an item to the shelf.
1306 LauncherID app_button_id = AddAppShortcut(); 1304 LauncherID app_button_id = AddAppShortcut();
1307 internal::ShelfButton* app_button = GetButtonByID(app_button_id); 1305 internal::ShelfButton* app_button = GetButtonByID(app_button_id);
1308 1306
1309 // Spawn a tooltip on that item. 1307 // Spawn a tooltip on that item.
1310 button_host->MouseEnteredButton(app_button); 1308 button_host->MouseEnteredButton(app_button);
1311 ShowTooltip(); 1309 ShowTooltip();
1312 EXPECT_TRUE(tooltip_manager->IsVisible()); 1310 EXPECT_TRUE(tooltip_manager->IsVisible());
1313 1311
1314 // Remove the app shortcut while the tooltip is open. The tooltip should be 1312 // Remove the app shortcut while the tooltip is open. The tooltip should be
1315 // closed. 1313 // closed.
1316 RemoveByID(app_button_id); 1314 RemoveByID(app_button_id);
1317 EXPECT_FALSE(tooltip_manager->IsVisible()); 1315 EXPECT_FALSE(tooltip_manager->IsVisible());
1318 1316
1319 // Change the shelf layout. This should not crash. 1317 // Change the shelf layout. This should not crash.
1320 Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_LEFT, 1318 Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_LEFT,
1321 Shell::GetPrimaryRootWindow()); 1319 Shell::GetPrimaryRootWindow());
1322 } 1320 }
1323 1321
1324 // Changing the shelf alignment closes any open tooltip. 1322 // Changing the shelf alignment closes any open tooltip.
1325 TEST_F(ShelfViewTest, ShelfAlignmentClosesTooltip) { 1323 TEST_F(ShelfViewTest, ShelfAlignmentClosesTooltip) {
1326 internal::ShelfButtonHost* button_host = shelf_view_; 1324 internal::ShelfButtonHost* button_host = shelf_view_;
1327 internal::ShelfTooltipManager* tooltip_manager = 1325 internal::ShelfTooltipManager* tooltip_manager =
1328 shelf_view_->tooltip_manager(); 1326 shelf_view_->tooltip_manager();
1329 1327
1330 // Add an item to the launcher. 1328 // Add an item to the shelf.
1331 LauncherID app_button_id = AddAppShortcut(); 1329 LauncherID app_button_id = AddAppShortcut();
1332 internal::ShelfButton* app_button = GetButtonByID(app_button_id); 1330 internal::ShelfButton* app_button = GetButtonByID(app_button_id);
1333 1331
1334 // Spawn a tooltip on the item. 1332 // Spawn a tooltip on the item.
1335 button_host->MouseEnteredButton(app_button); 1333 button_host->MouseEnteredButton(app_button);
1336 ShowTooltip(); 1334 ShowTooltip();
1337 EXPECT_TRUE(tooltip_manager->IsVisible()); 1335 EXPECT_TRUE(tooltip_manager->IsVisible());
1338 1336
1339 // Changing shelf alignment hides the tooltip. 1337 // Changing shelf alignment hides the tooltip.
1340 Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_LEFT, 1338 Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_LEFT,
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 EXPECT_TRUE(drag_reinsert_bounds.Contains(last_point)); 1612 EXPECT_TRUE(drag_reinsert_bounds.Contains(last_point));
1615 } 1613 }
1616 1614
1617 // Check the drag insertion bounds of shelf view in multi monitor environment. 1615 // Check the drag insertion bounds of shelf view in multi monitor environment.
1618 TEST_F(ShelfViewTest, CheckDragInsertBoundsWithMultiMonitor) { 1616 TEST_F(ShelfViewTest, CheckDragInsertBoundsWithMultiMonitor) {
1619 // win8-aura doesn't support multiple display. 1617 // win8-aura doesn't support multiple display.
1620 if (!SupportsMultipleDisplays()) 1618 if (!SupportsMultipleDisplays())
1621 return; 1619 return;
1622 1620
1623 UpdateDisplay("800x600,800x600"); 1621 UpdateDisplay("800x600,800x600");
1624 Launcher* secondary_launcher = 1622 Shelf* secondary_shelf = Shelf::ForWindow(Shell::GetAllRootWindows()[1]);
1625 Launcher::ForWindow(Shell::GetAllRootWindows()[1]);
1626 internal::ShelfView* shelf_view_for_secondary = 1623 internal::ShelfView* shelf_view_for_secondary =
1627 test::LauncherTestAPI(secondary_launcher).shelf_view(); 1624 ShelfTestAPI(secondary_shelf).shelf_view();
1628 1625
1629 // The bounds should be big enough for 4 buttons + overflow chevron. 1626 // The bounds should be big enough for 4 buttons + overflow chevron.
1630 shelf_view_for_secondary->SetBounds(0, 0, 500, 1627 shelf_view_for_secondary->SetBounds(0, 0, 500,
1631 internal::ShelfLayoutManager::GetPreferredShelfSize()); 1628 internal::ShelfLayoutManager::GetPreferredShelfSize());
1632 1629
1633 ShelfViewTestAPI test_api_for_secondary(shelf_view_for_secondary); 1630 ShelfViewTestAPI test_api_for_secondary(shelf_view_for_secondary);
1634 // Speeds up animation for test. 1631 // Speeds up animation for test.
1635 test_api_for_secondary.SetAnimationDuration(1); 1632 test_api_for_secondary.SetAnimationDuration(1);
1636 1633
1637 AddButtonsUntilOverflow(); 1634 AddButtonsUntilOverflow();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1698 1695
1699 Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_LEFT, second_root); 1696 Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_LEFT, second_root);
1700 ASSERT_EQ(SHELF_ALIGNMENT_LEFT, 1697 ASSERT_EQ(SHELF_ALIGNMENT_LEFT,
1701 Shell::GetInstance()->GetShelfAlignment(second_root)); 1698 Shell::GetInstance()->GetShelfAlignment(second_root));
1702 1699
1703 // Initially, app list and browser shortcut are added. 1700 // Initially, app list and browser shortcut are added.
1704 EXPECT_EQ(2, model_->item_count()); 1701 EXPECT_EQ(2, model_->item_count());
1705 int browser_index = model_->GetItemIndexForType(TYPE_BROWSER_SHORTCUT); 1702 int browser_index = model_->GetItemIndexForType(TYPE_BROWSER_SHORTCUT);
1706 EXPECT_GT(browser_index, 0); 1703 EXPECT_GT(browser_index, 0);
1707 1704
1708 Launcher* secondary_launcher = Launcher::ForWindow(second_root); 1705 Shelf* secondary_shelf = Shelf::ForWindow(second_root);
1709 internal::ShelfView* shelf_view_for_secondary = 1706 internal::ShelfView* shelf_view_for_secondary =
1710 test::LauncherTestAPI(secondary_launcher).shelf_view(); 1707 ShelfTestAPI(secondary_shelf).shelf_view();
1711 1708
1712 ShelfViewTestAPI test_api_for_secondary_shelf_view(shelf_view_for_secondary); 1709 ShelfViewTestAPI test_api_for_secondary_shelf_view(shelf_view_for_secondary);
1713 internal::ShelfButton* button = 1710 internal::ShelfButton* button =
1714 test_api_for_secondary_shelf_view.GetButton(browser_index); 1711 test_api_for_secondary_shelf_view.GetButton(browser_index);
1715 1712
1716 // Fetch the start point of dragging. 1713 // Fetch the start point of dragging.
1717 gfx::Point start_point = button->GetBoundsInScreen().CenterPoint(); 1714 gfx::Point start_point = button->GetBoundsInScreen().CenterPoint();
1718 wm::ConvertPointFromScreen(second_root, &start_point); 1715 wm::ConvertPointFromScreen(second_root, &start_point);
1719 1716
1720 aura::test::EventGenerator generator(second_root, start_point); 1717 aura::test::EventGenerator generator(second_root, start_point);
(...skipping 16 matching lines...) Expand all
1737 TestDraggingAnItemFromOverflowToShelf(true); 1734 TestDraggingAnItemFromOverflowToShelf(true);
1738 } 1735 }
1739 1736
1740 class ShelfViewVisibleBoundsTest : public ShelfViewTest, 1737 class ShelfViewVisibleBoundsTest : public ShelfViewTest,
1741 public testing::WithParamInterface<bool> { 1738 public testing::WithParamInterface<bool> {
1742 public: 1739 public:
1743 ShelfViewVisibleBoundsTest() : text_direction_change_(GetParam()) {} 1740 ShelfViewVisibleBoundsTest() : text_direction_change_(GetParam()) {}
1744 1741
1745 void CheckAllItemsAreInBounds() { 1742 void CheckAllItemsAreInBounds() {
1746 gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen(); 1743 gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen();
1747 gfx::Rect launcher_bounds = shelf_view_->GetBoundsInScreen(); 1744 gfx::Rect shelf_bounds = shelf_view_->GetBoundsInScreen();
1748 EXPECT_TRUE(launcher_bounds.Contains(visible_bounds)); 1745 EXPECT_TRUE(shelf_bounds.Contains(visible_bounds));
1749 for (int i = 0; i < test_api_->GetButtonCount(); ++i) 1746 for (int i = 0; i < test_api_->GetButtonCount(); ++i)
1750 if (internal::ShelfButton* button = test_api_->GetButton(i)) 1747 if (internal::ShelfButton* button = test_api_->GetButton(i))
1751 EXPECT_TRUE(visible_bounds.Contains(button->GetBoundsInScreen())); 1748 EXPECT_TRUE(visible_bounds.Contains(button->GetBoundsInScreen()));
1752 CheckAppListButtonIsInBounds(); 1749 CheckAppListButtonIsInBounds();
1753 } 1750 }
1754 1751
1755 void CheckAppListButtonIsInBounds() { 1752 void CheckAppListButtonIsInBounds() {
1756 gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen(); 1753 gfx::Rect visible_bounds = shelf_view_->GetVisibleItemsBoundsInScreen();
1757 gfx::Rect app_list_button_bounds = shelf_view_->GetAppListButtonView()-> 1754 gfx::Rect app_list_button_bounds = shelf_view_->GetAppListButtonView()->
1758 GetBoundsInScreen(); 1755 GetBoundsInScreen();
(...skipping 21 matching lines...) Expand all
1780 test_api_->RunMessageLoopUntilAnimationsDone(); 1777 test_api_->RunMessageLoopUntilAnimationsDone();
1781 CheckAllItemsAreInBounds(); 1778 CheckAllItemsAreInBounds();
1782 } 1779 }
1783 1780
1784 INSTANTIATE_TEST_CASE_P(LtrRtl, ShelfViewTextDirectionTest, testing::Bool()); 1781 INSTANTIATE_TEST_CASE_P(LtrRtl, ShelfViewTextDirectionTest, testing::Bool());
1785 INSTANTIATE_TEST_CASE_P(VisibleBounds, ShelfViewVisibleBoundsTest, 1782 INSTANTIATE_TEST_CASE_P(VisibleBounds, ShelfViewVisibleBoundsTest,
1786 testing::Bool()); 1783 testing::Bool());
1787 1784
1788 } // namespace test 1785 } // namespace test
1789 } // namespace ash 1786 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shelf/shelf_view.cc ('k') | ash/shelf/shelf_widget.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698