OLD | NEW |
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 <algorithm> | 5 #include <algorithm> |
6 #include <set> | 6 #include <set> |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 #if defined(OS_WIN) | 34 #if defined(OS_WIN) |
35 #include "ui/aura/window.h" | 35 #include "ui/aura/window.h" |
36 #include "ui/aura/window_tree_host.h" | 36 #include "ui/aura/window_tree_host.h" |
37 #include "ui/base/view_prop.h" | 37 #include "ui/base/view_prop.h" |
38 #include "ui/base/win/window_event_target.h" | 38 #include "ui/base/win/window_event_target.h" |
39 #include "ui/views/win/hwnd_util.h" | 39 #include "ui/views/win/hwnd_util.h" |
40 #endif | 40 #endif |
41 | 41 |
42 #if defined(OS_MACOSX) | 42 #if defined(OS_MACOSX) |
43 #include "base/mac/mac_util.h" | 43 #include "base/mac/mac_util.h" |
| 44 #include "ui/base/test/scoped_fake_nswindow_fullscreen.h" |
44 #endif | 45 #endif |
45 | 46 |
46 namespace views { | 47 namespace views { |
47 namespace test { | 48 namespace test { |
48 | 49 |
49 namespace { | 50 namespace { |
50 | 51 |
51 // TODO(tdanderson): This utility function is used in different unittest | 52 // TODO(tdanderson): This utility function is used in different unittest |
52 // files. Move to a common location to avoid | 53 // files. Move to a common location to avoid |
53 // repeated code. | 54 // repeated code. |
(...skipping 1220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1274 widget->GetClientAreaBoundsInScreen().ToString()); | 1275 widget->GetClientAreaBoundsInScreen().ToString()); |
1275 | 1276 |
1276 // Verify origin is stable for a frameless window as well. | 1277 // Verify origin is stable for a frameless window as well. |
1277 widget->SetSize(kTestSize); | 1278 widget->SetSize(kTestSize); |
1278 EXPECT_EQ(kTestBounds.origin().ToString(), | 1279 EXPECT_EQ(kTestBounds.origin().ToString(), |
1279 widget->GetWindowBoundsInScreen().origin().ToString()); | 1280 widget->GetWindowBoundsInScreen().origin().ToString()); |
1280 | 1281 |
1281 widget->CloseNow(); | 1282 widget->CloseNow(); |
1282 } | 1283 } |
1283 | 1284 |
1284 // Before being enabled on Mac, this was #ifdef(false). | 1285 // Non-Desktop widgets need the shell to maximize/fullscreen window. |
1285 // TODO(tapted): Fix this for DesktopNativeWidgets on other platforms. | 1286 // Disable on Linux because windows restore to the wrong bounds. |
| 1287 // See http://crbug.com/515369. |
| 1288 #if defined(OS_CHROMEOS) || defined(OS_LINUX) |
| 1289 #define MAYBE_GetRestoredBounds DISABLED_GetRestoredBounds |
| 1290 #else |
| 1291 #define MAYBE_GetRestoredBounds GetRestoredBounds |
| 1292 #endif |
| 1293 |
| 1294 // Test that GetRestoredBounds() returns the original bounds of the window. |
| 1295 TEST_F(WidgetTest, MAYBE_GetRestoredBounds) { |
1286 #if defined(OS_MACOSX) | 1296 #if defined(OS_MACOSX) |
1287 // Aura needs shell to maximize/fullscreen window. | 1297 // Fullscreen on Mac requires an interactive UI test, fake them here. |
1288 // NativeWidgetGtk doesn't implement GetRestoredBounds. | 1298 ui::test::ScopedFakeNSWindowFullscreen fake_fullscreen; |
1289 TEST_F(WidgetTest, GetRestoredBounds) { | 1299 #endif |
1290 Widget* toplevel = CreateTopLevelPlatformWidget(); | 1300 |
1291 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), | 1301 Widget* toplevel = CreateNativeDesktopWidget(); |
1292 toplevel->GetRestoredBounds().ToString()); | |
1293 toplevel->Show(); | 1302 toplevel->Show(); |
| 1303 // Initial restored bounds have non-zero size. |
| 1304 EXPECT_FALSE(toplevel->GetRestoredBounds().IsEmpty()); |
| 1305 |
| 1306 const gfx::Rect bounds(100, 100, 200, 200); |
| 1307 toplevel->SetBounds(bounds); |
| 1308 EXPECT_EQ(bounds, toplevel->GetWindowBoundsInScreen()); |
| 1309 EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); |
| 1310 |
1294 toplevel->Maximize(); | 1311 toplevel->Maximize(); |
1295 RunPendingMessages(); | 1312 RunPendingMessages(); |
1296 #if defined(OS_MACOSX) | 1313 #if defined(OS_MACOSX) |
1297 // Current expectation on Mac is to do nothing on Maximize. | 1314 // Current expectation on Mac is to do nothing on Maximize. |
1298 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), | 1315 EXPECT_EQ(toplevel->GetWindowBoundsInScreen(), toplevel->GetRestoredBounds()); |
1299 toplevel->GetRestoredBounds().ToString()); | |
1300 #else | 1316 #else |
1301 EXPECT_NE(toplevel->GetWindowBoundsInScreen().ToString(), | 1317 EXPECT_NE(toplevel->GetWindowBoundsInScreen(), toplevel->GetRestoredBounds()); |
1302 toplevel->GetRestoredBounds().ToString()); | |
1303 #endif | 1318 #endif |
1304 EXPECT_GT(toplevel->GetRestoredBounds().width(), 0); | 1319 EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); |
1305 EXPECT_GT(toplevel->GetRestoredBounds().height(), 0); | |
1306 | 1320 |
1307 toplevel->Restore(); | 1321 toplevel->Restore(); |
1308 RunPendingMessages(); | 1322 RunPendingMessages(); |
1309 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), | 1323 EXPECT_EQ(bounds, toplevel->GetWindowBoundsInScreen()); |
1310 toplevel->GetRestoredBounds().ToString()); | 1324 EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); |
1311 | 1325 |
1312 toplevel->SetFullscreen(true); | 1326 toplevel->SetFullscreen(true); |
1313 RunPendingMessages(); | 1327 RunPendingMessages(); |
1314 | 1328 |
1315 if (IsTestingSnowLeopard()) { | 1329 if (IsTestingSnowLeopard()) { |
1316 // Fullscreen not implemented for Snow Leopard. | 1330 // Fullscreen not implemented for Snow Leopard. |
1317 EXPECT_EQ(toplevel->GetWindowBoundsInScreen().ToString(), | 1331 EXPECT_EQ(toplevel->GetWindowBoundsInScreen(), |
1318 toplevel->GetRestoredBounds().ToString()); | 1332 toplevel->GetRestoredBounds()); |
1319 } else { | 1333 } else { |
1320 EXPECT_NE(toplevel->GetWindowBoundsInScreen().ToString(), | 1334 EXPECT_NE(toplevel->GetWindowBoundsInScreen(), |
1321 toplevel->GetRestoredBounds().ToString()); | 1335 toplevel->GetRestoredBounds()); |
1322 } | 1336 } |
1323 EXPECT_GT(toplevel->GetRestoredBounds().width(), 0); | 1337 EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); |
1324 EXPECT_GT(toplevel->GetRestoredBounds().height(), 0); | 1338 |
| 1339 toplevel->SetFullscreen(false); |
| 1340 RunPendingMessages(); |
| 1341 EXPECT_EQ(bounds, toplevel->GetWindowBoundsInScreen()); |
| 1342 EXPECT_EQ(bounds, toplevel->GetRestoredBounds()); |
| 1343 |
| 1344 toplevel->CloseNow(); |
1325 } | 1345 } |
1326 #endif | |
1327 | 1346 |
1328 // The key-event propagation from Widget happens differently on aura and | 1347 // The key-event propagation from Widget happens differently on aura and |
1329 // non-aura systems because of the difference in IME. So this test works only on | 1348 // non-aura systems because of the difference in IME. So this test works only on |
1330 // aura. | 1349 // aura. |
1331 TEST_F(WidgetTest, KeyboardInputEvent) { | 1350 TEST_F(WidgetTest, KeyboardInputEvent) { |
1332 Widget* toplevel = CreateTopLevelPlatformWidget(); | 1351 Widget* toplevel = CreateTopLevelPlatformWidget(); |
1333 View* container = toplevel->client_view(); | 1352 View* container = toplevel->client_view(); |
1334 | 1353 |
1335 Textfield* textfield = new Textfield(); | 1354 Textfield* textfield = new Textfield(); |
1336 textfield->SetText(base::ASCIIToUTF16("some text")); | 1355 textfield->SetText(base::ASCIIToUTF16("some text")); |
(...skipping 2101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3438 EXPECT_FALSE(widget->IsAlwaysOnTop()); | 3457 EXPECT_FALSE(widget->IsAlwaysOnTop()); |
3439 widget->SetAlwaysOnTop(true); | 3458 widget->SetAlwaysOnTop(true); |
3440 EXPECT_TRUE(widget->IsAlwaysOnTop()); | 3459 EXPECT_TRUE(widget->IsAlwaysOnTop()); |
3441 widget->SetAlwaysOnTop(false); | 3460 widget->SetAlwaysOnTop(false); |
3442 EXPECT_FALSE(widget->IsAlwaysOnTop()); | 3461 EXPECT_FALSE(widget->IsAlwaysOnTop()); |
3443 widget->CloseNow(); | 3462 widget->CloseNow(); |
3444 } | 3463 } |
3445 | 3464 |
3446 } // namespace test | 3465 } // namespace test |
3447 } // namespace views | 3466 } // namespace views |
OLD | NEW |