| OLD | NEW |
| 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/wm/workspace_controller.h" | 5 #include "ash/wm/workspace_controller.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "ash/ash_switches.h" | 9 #include "ash/ash_switches.h" |
| 10 #include "ash/root_window_controller.h" | 10 #include "ash/root_window_controller.h" |
| (...skipping 1214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1225 | 1225 |
| 1226 // Activate the app. | 1226 // Activate the app. |
| 1227 ash::wm::ActivateWindow(app.get()); | 1227 ash::wm::ActivateWindow(app.get()); |
| 1228 EXPECT_TRUE(wm::IsActiveWindow(app.get())); | 1228 EXPECT_TRUE(wm::IsActiveWindow(app.get())); |
| 1229 EXPECT_EQ(GetWindowNames(parent), GetLayerNames(parent)); | 1229 EXPECT_EQ(GetWindowNames(parent), GetLayerNames(parent)); |
| 1230 } | 1230 } |
| 1231 | 1231 |
| 1232 namespace { | 1232 namespace { |
| 1233 | 1233 |
| 1234 // Used by DragMaximizedNonTrackedWindow to track how many times the window | 1234 // Used by DragMaximizedNonTrackedWindow to track how many times the window |
| 1235 // hierarchy changes. | 1235 // hierarchy changes affecting specified window. |
| 1236 class DragMaximizedNonTrackedWindowObserver | 1236 class DragMaximizedNonTrackedWindowObserver |
| 1237 : public aura::WindowObserver { | 1237 : public aura::WindowObserver { |
| 1238 public: | 1238 public: |
| 1239 DragMaximizedNonTrackedWindowObserver() : change_count_(0) { | 1239 DragMaximizedNonTrackedWindowObserver(aura::Window* window) |
| 1240 : change_count_(0), |
| 1241 window_(window) { |
| 1240 } | 1242 } |
| 1241 | 1243 |
| 1242 // Number of times OnWindowHierarchyChanged() has been received. | 1244 // Number of times OnWindowHierarchyChanged() has been received. |
| 1243 void clear_change_count() { change_count_ = 0; } | 1245 void clear_change_count() { change_count_ = 0; } |
| 1244 int change_count() const { | 1246 int change_count() const { |
| 1245 return change_count_; | 1247 return change_count_; |
| 1246 } | 1248 } |
| 1247 | 1249 |
| 1248 // aura::WindowObserver overrides: | 1250 // aura::WindowObserver overrides: |
| 1249 // Counts number of times a window is reparented. Ignores reparenting into and | 1251 // Counts number of times a window is reparented. Ignores reparenting into and |
| 1250 // from a docked container which is expected when a tab is dragged. | 1252 // from a docked container which is expected when a tab is dragged. |
| 1251 virtual void OnWindowHierarchyChanged( | 1253 virtual void OnWindowHierarchyChanged( |
| 1252 const HierarchyChangeParams& params) OVERRIDE { | 1254 const HierarchyChangeParams& params) OVERRIDE { |
| 1253 if ((params.old_parent->id() == kShellWindowId_DefaultContainer && | 1255 if (params.target != window_ || |
| 1256 (params.old_parent->id() == kShellWindowId_DefaultContainer && |
| 1254 params.new_parent->id() == kShellWindowId_DockedContainer) || | 1257 params.new_parent->id() == kShellWindowId_DockedContainer) || |
| 1255 (params.old_parent->id() == kShellWindowId_DockedContainer && | 1258 (params.old_parent->id() == kShellWindowId_DockedContainer && |
| 1256 params.new_parent->id() == kShellWindowId_DefaultContainer)) { | 1259 params.new_parent->id() == kShellWindowId_DefaultContainer)) { |
| 1257 return; | 1260 return; |
| 1258 } | 1261 } |
| 1259 change_count_++; | 1262 change_count_++; |
| 1260 } | 1263 } |
| 1261 | 1264 |
| 1262 private: | 1265 private: |
| 1263 int change_count_; | 1266 int change_count_; |
| 1267 aura::Window* window_; |
| 1264 | 1268 |
| 1265 DISALLOW_COPY_AND_ASSIGN(DragMaximizedNonTrackedWindowObserver); | 1269 DISALLOW_COPY_AND_ASSIGN(DragMaximizedNonTrackedWindowObserver); |
| 1266 }; | 1270 }; |
| 1267 | 1271 |
| 1268 } // namespace | 1272 } // namespace |
| 1269 | 1273 |
| 1270 // Verifies setting tracked by workspace to false and then dragging a fullscreen | 1274 // Verifies setting tracked by workspace to false and then dragging a fullscreen |
| 1271 // window doesn't result in changing the window hierarchy (which typically | 1275 // window doesn't result in changing the window hierarchy (which typically |
| 1272 // indicates new workspaces have been created). | 1276 // indicates new workspaces have been created). |
| 1273 TEST_F(WorkspaceControllerTest, DragFullscreenNonTrackedWindow) { | 1277 TEST_F(WorkspaceControllerTest, DragFullscreenNonTrackedWindow) { |
| 1274 aura::test::EventGenerator generator( | 1278 aura::test::EventGenerator generator( |
| 1275 Shell::GetPrimaryRootWindow(), gfx::Point()); | 1279 Shell::GetPrimaryRootWindow(), gfx::Point()); |
| 1276 generator.MoveMouseTo(5, 5); | 1280 generator.MoveMouseTo(5, 5); |
| 1277 | 1281 |
| 1278 aura::test::TestWindowDelegate delegate; | 1282 aura::test::TestWindowDelegate delegate; |
| 1279 delegate.set_window_component(HTCAPTION); | 1283 delegate.set_window_component(HTCAPTION); |
| 1280 scoped_ptr<Window> w1( | 1284 scoped_ptr<Window> w1( |
| 1281 aura::test::CreateTestWindowWithDelegate(&delegate, | 1285 aura::test::CreateTestWindowWithDelegate(&delegate, |
| 1282 aura::client::WINDOW_TYPE_NORMAL, | 1286 aura::client::WINDOW_TYPE_NORMAL, |
| 1283 gfx::Rect(5, 6, 7, 8), | 1287 gfx::Rect(5, 6, 7, 8), |
| 1284 NULL)); | 1288 NULL)); |
| 1285 ParentWindowInPrimaryRootWindow(w1.get()); | 1289 ParentWindowInPrimaryRootWindow(w1.get()); |
| 1286 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); | 1290 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); |
| 1287 w1->Show(); | 1291 w1->Show(); |
| 1288 wm::ActivateWindow(w1.get()); | 1292 wm::ActivateWindow(w1.get()); |
| 1289 DragMaximizedNonTrackedWindowObserver observer; | 1293 DragMaximizedNonTrackedWindowObserver observer(w1.get()); |
| 1290 w1->parent()->parent()->AddObserver(&observer); | 1294 w1->parent()->parent()->AddObserver(&observer); |
| 1291 const gfx::Rect max_bounds(w1->bounds()); | 1295 const gfx::Rect max_bounds(w1->bounds()); |
| 1292 | 1296 |
| 1293 generator.PressLeftButton(); | 1297 generator.PressLeftButton(); |
| 1294 generator.MoveMouseTo(100, 100); | 1298 generator.MoveMouseTo(100, 100); |
| 1295 // The bounds shouldn't change (drag should result in nothing happening | 1299 // The bounds shouldn't change (drag should result in nothing happening |
| 1296 // now. | 1300 // now. |
| 1297 EXPECT_EQ(max_bounds.ToString(), w1->bounds().ToString()); | 1301 EXPECT_EQ(max_bounds.ToString(), w1->bounds().ToString()); |
| 1298 | 1302 |
| 1299 generator.ReleaseLeftButton(); | 1303 generator.ReleaseLeftButton(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1328 delegate.set_window_component(HTCAPTION); | 1332 delegate.set_window_component(HTCAPTION); |
| 1329 scoped_ptr<Window> w1( | 1333 scoped_ptr<Window> w1( |
| 1330 aura::test::CreateTestWindowWithDelegate(&delegate, | 1334 aura::test::CreateTestWindowWithDelegate(&delegate, |
| 1331 aura::client::WINDOW_TYPE_NORMAL, | 1335 aura::client::WINDOW_TYPE_NORMAL, |
| 1332 gfx::Rect(5, 6, 7, 8), | 1336 gfx::Rect(5, 6, 7, 8), |
| 1333 NULL)); | 1337 NULL)); |
| 1334 ParentWindowInPrimaryRootWindow(w1.get()); | 1338 ParentWindowInPrimaryRootWindow(w1.get()); |
| 1335 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 1339 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
| 1336 w1->Show(); | 1340 w1->Show(); |
| 1337 wm::ActivateWindow(w1.get()); | 1341 wm::ActivateWindow(w1.get()); |
| 1338 DragMaximizedNonTrackedWindowObserver observer; | 1342 DragMaximizedNonTrackedWindowObserver observer(w1.get()); |
| 1339 w1->parent()->parent()->AddObserver(&observer); | 1343 w1->parent()->parent()->AddObserver(&observer); |
| 1340 const gfx::Rect max_bounds(w1->bounds()); | 1344 const gfx::Rect max_bounds(w1->bounds()); |
| 1341 | 1345 |
| 1342 generator.PressLeftButton(); | 1346 generator.PressLeftButton(); |
| 1343 generator.MoveMouseTo(100, 100); | 1347 generator.MoveMouseTo(100, 100); |
| 1344 // The bounds shouldn't change (drag should result in nothing happening | 1348 // The bounds shouldn't change (drag should result in nothing happening |
| 1345 // now. | 1349 // now. |
| 1346 EXPECT_EQ(max_bounds.ToString(), w1->bounds().ToString()); | 1350 EXPECT_EQ(max_bounds.ToString(), w1->bounds().ToString()); |
| 1347 | 1351 |
| 1348 generator.ReleaseLeftButton(); | 1352 generator.ReleaseLeftButton(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1380 scoped_ptr<Window> maximized_window(CreateTestWindow()); | 1384 scoped_ptr<Window> maximized_window(CreateTestWindow()); |
| 1381 maximized_window->SetProperty( | 1385 maximized_window->SetProperty( |
| 1382 aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 1386 aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
| 1383 maximized_window->Show(); | 1387 maximized_window->Show(); |
| 1384 wm::ActivateWindow(maximized_window.get()); | 1388 wm::ActivateWindow(maximized_window.get()); |
| 1385 EXPECT_TRUE(maximized_window->IsVisible()); | 1389 EXPECT_TRUE(maximized_window->IsVisible()); |
| 1386 } | 1390 } |
| 1387 | 1391 |
| 1388 } // namespace internal | 1392 } // namespace internal |
| 1389 } // namespace ash | 1393 } // namespace ash |
| OLD | NEW |