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

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

Issue 2808723004: Renames WmShell to ShellPort (Closed)
Patch Set: feedback Created 3 years, 8 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_window_watcher.h" 5 #include "ash/shelf/shelf_window_watcher.h"
6 6
7 #include "ash/public/cpp/shelf_item.h" 7 #include "ash/public/cpp/shelf_item.h"
8 #include "ash/public/cpp/shell_window_ids.h" 8 #include "ash/public/cpp/shell_window_ids.h"
9 #include "ash/public/cpp/window_properties.h" 9 #include "ash/public/cpp/window_properties.h"
10 #include "ash/root_window_controller.h" 10 #include "ash/root_window_controller.h"
11 #include "ash/session/session_controller.h" 11 #include "ash/session/session_controller.h"
12 #include "ash/shelf/shelf_model.h" 12 #include "ash/shelf/shelf_model.h"
13 #include "ash/shell.h" 13 #include "ash/shell.h"
14 #include "ash/shell_port.h"
14 #include "ash/test/ash_test_base.h" 15 #include "ash/test/ash_test_base.h"
15 #include "ash/wm/window_resizer.h" 16 #include "ash/wm/window_resizer.h"
16 #include "ash/wm/window_state.h" 17 #include "ash/wm/window_state.h"
17 #include "ash/wm_shell.h"
18 #include "ash/wm_window.h" 18 #include "ash/wm_window.h"
19 #include "ui/aura/window.h" 19 #include "ui/aura/window.h"
20 #include "ui/base/hit_test.h" 20 #include "ui/base/hit_test.h"
21 #include "ui/views/widget/widget.h" 21 #include "ui/views/widget/widget.h"
22 22
23 namespace ash { 23 namespace ash {
24 24
25 class ShelfWindowWatcherTest : public test::AshTestBase { 25 class ShelfWindowWatcherTest : public test::AshTestBase {
26 public: 26 public:
27 ShelfWindowWatcherTest() : model_(nullptr) {} 27 ShelfWindowWatcherTest() : model_(nullptr) {}
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 68
69 // Each ShelfItem is removed when the associated window is destroyed. 69 // Each ShelfItem is removed when the associated window is destroyed.
70 widget1.reset(); 70 widget1.reset();
71 EXPECT_EQ(2, model_->item_count()); 71 EXPECT_EQ(2, model_->item_count());
72 widget2.reset(); 72 widget2.reset();
73 EXPECT_EQ(1, model_->item_count()); 73 EXPECT_EQ(1, model_->item_count());
74 } 74 }
75 75
76 TEST_F(ShelfWindowWatcherTest, CreateAndRemoveShelfItemProperties) { 76 TEST_F(ShelfWindowWatcherTest, CreateAndRemoveShelfItemProperties) {
77 // TODO: investigate failure in mash. http://crbug.com/695562. 77 // TODO: investigate failure in mash. http://crbug.com/695562.
78 if (WmShell::Get()->IsRunningInMash()) 78 if (ShellPort::Get()->IsRunningInMash())
79 return; 79 return;
80 80
81 // ShelfModel only has an APP_LIST item. 81 // ShelfModel only has an APP_LIST item.
82 EXPECT_EQ(1, model_->item_count()); 82 EXPECT_EQ(1, model_->item_count());
83 83
84 // Creating windows without a valid ShelfItemType does not add items. 84 // Creating windows without a valid ShelfItemType does not add items.
85 std::unique_ptr<views::Widget> widget1 = 85 std::unique_ptr<views::Widget> widget1 =
86 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect()); 86 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
87 WmWindow* window1 = WmWindow::Get(widget1->GetNativeWindow()); 87 WmWindow* window1 = WmWindow::Get(widget1->GetNativeWindow());
88 std::unique_ptr<views::Widget> widget2 = 88 std::unique_ptr<views::Widget> widget2 =
(...skipping 23 matching lines...) Expand all
112 static_cast<int32_t>(TYPE_UNDEFINED)); 112 static_cast<int32_t>(TYPE_UNDEFINED));
113 EXPECT_EQ(1, model_->item_count()); 113 EXPECT_EQ(1, model_->item_count());
114 // Clearing twice doesn't do anything. 114 // Clearing twice doesn't do anything.
115 window2->aura_window()->SetProperty(kShelfItemTypeKey, 115 window2->aura_window()->SetProperty(kShelfItemTypeKey,
116 static_cast<int32_t>(TYPE_UNDEFINED)); 116 static_cast<int32_t>(TYPE_UNDEFINED));
117 EXPECT_EQ(1, model_->item_count()); 117 EXPECT_EQ(1, model_->item_count());
118 } 118 }
119 119
120 TEST_F(ShelfWindowWatcherTest, ActivateWindow) { 120 TEST_F(ShelfWindowWatcherTest, ActivateWindow) {
121 // TODO: investigate failure in mash. http://crbug.com/695562. 121 // TODO: investigate failure in mash. http://crbug.com/695562.
122 if (WmShell::Get()->IsRunningInMash()) 122 if (ShellPort::Get()->IsRunningInMash())
123 return; 123 return;
124 124
125 // ShelfModel only have APP_LIST item. 125 // ShelfModel only have APP_LIST item.
126 EXPECT_EQ(1, model_->item_count()); 126 EXPECT_EQ(1, model_->item_count());
127 std::unique_ptr<views::Widget> widget1 = 127 std::unique_ptr<views::Widget> widget1 =
128 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect()); 128 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
129 WmWindow* window1 = WmWindow::Get(widget1->GetNativeWindow()); 129 WmWindow* window1 = WmWindow::Get(widget1->GetNativeWindow());
130 std::unique_ptr<views::Widget> widget2 = 130 std::unique_ptr<views::Widget> widget2 =
131 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect()); 131 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
132 WmWindow* window2 = WmWindow::Get(widget2->GetNativeWindow()); 132 WmWindow* window2 = WmWindow::Get(widget2->GetNativeWindow());
(...skipping 17 matching lines...) Expand all
150 EXPECT_EQ(STATUS_RUNNING, model_->items()[index_w2].status); 150 EXPECT_EQ(STATUS_RUNNING, model_->items()[index_w2].status);
151 151
152 // The ShelfItem for the second window is active when the window is activated. 152 // The ShelfItem for the second window is active when the window is activated.
153 widget2->Activate(); 153 widget2->Activate();
154 EXPECT_EQ(STATUS_RUNNING, model_->items()[index_w1].status); 154 EXPECT_EQ(STATUS_RUNNING, model_->items()[index_w1].status);
155 EXPECT_EQ(STATUS_ACTIVE, model_->items()[index_w2].status); 155 EXPECT_EQ(STATUS_ACTIVE, model_->items()[index_w2].status);
156 } 156 }
157 157
158 TEST_F(ShelfWindowWatcherTest, UpdateWindowProperty) { 158 TEST_F(ShelfWindowWatcherTest, UpdateWindowProperty) {
159 // TODO: investigate failure in mash. http://crbug.com/695562. 159 // TODO: investigate failure in mash. http://crbug.com/695562.
160 if (WmShell::Get()->IsRunningInMash()) 160 if (ShellPort::Get()->IsRunningInMash())
161 return; 161 return;
162 162
163 // ShelfModel only has an APP_LIST item. 163 // ShelfModel only has an APP_LIST item.
164 EXPECT_EQ(1, model_->item_count()); 164 EXPECT_EQ(1, model_->item_count());
165 165
166 std::unique_ptr<views::Widget> widget = 166 std::unique_ptr<views::Widget> widget =
167 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect()); 167 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
168 WmWindow* window = WmWindow::Get(widget->GetNativeWindow()); 168 WmWindow* window = WmWindow::Get(widget->GetNativeWindow());
169 169
170 // Create a ShelfItem for |window|. 170 // Create a ShelfItem for |window|.
171 ShelfID id = CreateShelfItem(window); 171 ShelfID id = CreateShelfItem(window);
172 EXPECT_EQ(2, model_->item_count()); 172 EXPECT_EQ(2, model_->item_count());
173 173
174 int index = model_->ItemIndexByID(id); 174 int index = model_->ItemIndexByID(id);
175 EXPECT_EQ(STATUS_ACTIVE, model_->items()[index].status); 175 EXPECT_EQ(STATUS_ACTIVE, model_->items()[index].status);
176 176
177 // Update the ShelfItemType for |window|. 177 // Update the ShelfItemType for |window|.
178 window->aura_window()->SetProperty(kShelfItemTypeKey, 178 window->aura_window()->SetProperty(kShelfItemTypeKey,
179 static_cast<int32_t>(TYPE_APP)); 179 static_cast<int32_t>(TYPE_APP));
180 // No new item is created after updating a launcher item. 180 // No new item is created after updating a launcher item.
181 EXPECT_EQ(2, model_->item_count()); 181 EXPECT_EQ(2, model_->item_count());
182 // index and id are not changed after updating a launcher item. 182 // index and id are not changed after updating a launcher item.
183 EXPECT_EQ(index, model_->ItemIndexByID(id)); 183 EXPECT_EQ(index, model_->ItemIndexByID(id));
184 EXPECT_EQ(id, model_->items()[index].id); 184 EXPECT_EQ(id, model_->items()[index].id);
185 } 185 }
186 186
187 TEST_F(ShelfWindowWatcherTest, MaximizeAndRestoreWindow) { 187 TEST_F(ShelfWindowWatcherTest, MaximizeAndRestoreWindow) {
188 // TODO: investigate failure in mash. http://crbug.com/695562. 188 // TODO: investigate failure in mash. http://crbug.com/695562.
189 if (WmShell::Get()->IsRunningInMash()) 189 if (ShellPort::Get()->IsRunningInMash())
190 return; 190 return;
191 191
192 // ShelfModel only has an APP_LIST item. 192 // ShelfModel only has an APP_LIST item.
193 EXPECT_EQ(1, model_->item_count()); 193 EXPECT_EQ(1, model_->item_count());
194 194
195 std::unique_ptr<views::Widget> widget = 195 std::unique_ptr<views::Widget> widget =
196 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect()); 196 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
197 WmWindow* window = WmWindow::Get(widget->GetNativeWindow()); 197 WmWindow* window = WmWindow::Get(widget->GetNativeWindow());
198 wm::WindowState* window_state = window->GetWindowState(); 198 wm::WindowState* window_state = window->GetWindowState();
199 199
(...skipping 21 matching lines...) Expand all
221 EXPECT_EQ(2, model_->item_count()); 221 EXPECT_EQ(2, model_->item_count());
222 // Index and id are not changed after maximizing a window |window|. 222 // Index and id are not changed after maximizing a window |window|.
223 EXPECT_EQ(index, model_->ItemIndexByID(id)); 223 EXPECT_EQ(index, model_->ItemIndexByID(id));
224 EXPECT_EQ(id, model_->items()[index].id); 224 EXPECT_EQ(id, model_->items()[index].id);
225 } 225 }
226 226
227 // Check |window|'s item is not changed during the dragging. 227 // Check |window|'s item is not changed during the dragging.
228 // TODO(simonhong): Add a test for removing a Window during the dragging. 228 // TODO(simonhong): Add a test for removing a Window during the dragging.
229 TEST_F(ShelfWindowWatcherTest, DragWindow) { 229 TEST_F(ShelfWindowWatcherTest, DragWindow) {
230 // TODO: investigate failure in mash. http://crbug.com/695562. 230 // TODO: investigate failure in mash. http://crbug.com/695562.
231 if (WmShell::Get()->IsRunningInMash()) 231 if (ShellPort::Get()->IsRunningInMash())
232 return; 232 return;
233 233
234 // ShelfModel only has an APP_LIST item. 234 // ShelfModel only has an APP_LIST item.
235 EXPECT_EQ(1, model_->item_count()); 235 EXPECT_EQ(1, model_->item_count());
236 236
237 std::unique_ptr<views::Widget> widget = 237 std::unique_ptr<views::Widget> widget =
238 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect()); 238 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
239 WmWindow* window = WmWindow::Get(widget->GetNativeWindow()); 239 WmWindow* window = WmWindow::Get(widget->GetNativeWindow());
240 240
241 // Create a ShelfItem for |window|. 241 // Create a ShelfItem for |window|.
(...skipping 11 matching lines...) Expand all
253 resizer->CompleteDrag(); 253 resizer->CompleteDrag();
254 254
255 // Index and id are not changed after dragging a |window|. 255 // Index and id are not changed after dragging a |window|.
256 EXPECT_EQ(index, model_->ItemIndexByID(id)); 256 EXPECT_EQ(index, model_->ItemIndexByID(id));
257 EXPECT_EQ(id, model_->items()[index].id); 257 EXPECT_EQ(id, model_->items()[index].id);
258 } 258 }
259 259
260 // Ensure shelf items are added and removed as panels are opened and closed. 260 // Ensure shelf items are added and removed as panels are opened and closed.
261 TEST_F(ShelfWindowWatcherTest, PanelWindow) { 261 TEST_F(ShelfWindowWatcherTest, PanelWindow) {
262 // TODO: investigate failure in mash. http://crbug.com/695562. 262 // TODO: investigate failure in mash. http://crbug.com/695562.
263 if (WmShell::Get()->IsRunningInMash()) 263 if (ShellPort::Get()->IsRunningInMash())
264 return; 264 return;
265 265
266 // ShelfModel only has an APP_LIST item. 266 // ShelfModel only has an APP_LIST item.
267 EXPECT_EQ(1, model_->item_count()); 267 EXPECT_EQ(1, model_->item_count());
268 268
269 // Adding windows with valid ShelfItemType properties adds shelf items. 269 // Adding windows with valid ShelfItemType properties adds shelf items.
270 std::unique_ptr<views::Widget> widget1 = 270 std::unique_ptr<views::Widget> widget1 =
271 CreateTestWidget(nullptr, kShellWindowId_PanelContainer, gfx::Rect()); 271 CreateTestWidget(nullptr, kShellWindowId_PanelContainer, gfx::Rect());
272 WmWindow* window1 = WmWindow::Get(widget1->GetNativeWindow()); 272 WmWindow* window1 = WmWindow::Get(widget1->GetNativeWindow());
273 window1->aura_window()->SetProperty(kShelfItemTypeKey, 273 window1->aura_window()->SetProperty(kShelfItemTypeKey,
274 static_cast<int32_t>(TYPE_APP_PANEL)); 274 static_cast<int32_t>(TYPE_APP_PANEL));
275 EXPECT_EQ(2, model_->item_count()); 275 EXPECT_EQ(2, model_->item_count());
276 std::unique_ptr<views::Widget> widget2 = 276 std::unique_ptr<views::Widget> widget2 =
277 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect()); 277 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect());
278 WmWindow* window2 = WmWindow::Get(widget2->GetNativeWindow()); 278 WmWindow* window2 = WmWindow::Get(widget2->GetNativeWindow());
279 window2->aura_window()->SetProperty(kShelfItemTypeKey, 279 window2->aura_window()->SetProperty(kShelfItemTypeKey,
280 static_cast<int32_t>(TYPE_APP_PANEL)); 280 static_cast<int32_t>(TYPE_APP_PANEL));
281 EXPECT_EQ(3, model_->item_count()); 281 EXPECT_EQ(3, model_->item_count());
282 282
283 // Create a panel-type widget to mimic Chrome's app panel windows. 283 // Create a panel-type widget to mimic Chrome's app panel windows.
284 views::Widget panel_widget; 284 views::Widget panel_widget;
285 views::Widget::InitParams panel_params(views::Widget::InitParams::TYPE_PANEL); 285 views::Widget::InitParams panel_params(views::Widget::InitParams::TYPE_PANEL);
286 panel_params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 286 panel_params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
287 WmShell::Get() 287 ShellPort::Get()
288 ->GetPrimaryRootWindow() 288 ->GetPrimaryRootWindow()
289 ->GetRootWindowController() 289 ->GetRootWindowController()
290 ->ConfigureWidgetInitParamsForContainer( 290 ->ConfigureWidgetInitParamsForContainer(
291 &panel_widget, kShellWindowId_PanelContainer, &panel_params); 291 &panel_widget, kShellWindowId_PanelContainer, &panel_params);
292 panel_widget.Init(panel_params); 292 panel_widget.Init(panel_params);
293 panel_widget.Show(); 293 panel_widget.Show();
294 WmWindow* panel_window = WmWindow::Get(panel_widget.GetNativeWindow()); 294 WmWindow* panel_window = WmWindow::Get(panel_widget.GetNativeWindow());
295 panel_window->aura_window()->SetProperty( 295 panel_window->aura_window()->SetProperty(
296 kShelfItemTypeKey, static_cast<int32_t>(TYPE_APP_PANEL)); 296 kShelfItemTypeKey, static_cast<int32_t>(TYPE_APP_PANEL));
297 EXPECT_EQ(4, model_->item_count()); 297 EXPECT_EQ(4, model_->item_count());
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 WmWindow* window = WmWindow::Get(widget->GetNativeWindow()); 348 WmWindow* window = WmWindow::Get(widget->GetNativeWindow());
349 ShelfWindowWatcherTest::CreateShelfItem(window); 349 ShelfWindowWatcherTest::CreateShelfItem(window);
350 EXPECT_EQ(1, model->item_count()); 350 EXPECT_EQ(1, model->item_count());
351 351
352 // Start the test user session; ShelfWindowWatcher will find the open window. 352 // Start the test user session; ShelfWindowWatcher will find the open window.
353 SetSessionStarted(true); 353 SetSessionStarted(true);
354 EXPECT_EQ(2, model->item_count()); 354 EXPECT_EQ(2, model->item_count());
355 } 355 }
356 356
357 } // namespace ash 357 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698