Chromium Code Reviews| Index: chrome/browser/apps/app_window_interactive_uitest.cc |
| diff --git a/chrome/browser/apps/app_window_interactive_uitest.cc b/chrome/browser/apps/app_window_interactive_uitest.cc |
| index c7bfa9164d2b8c8f7c65dadb7a1514ce3b7aef2e..0290ad5d25b993c7af9c5760cf8b1aff63c24aac 100644 |
| --- a/chrome/browser/apps/app_window_interactive_uitest.cc |
| +++ b/chrome/browser/apps/app_window_interactive_uitest.cc |
| @@ -11,6 +11,15 @@ |
| #include "base/mac/mac_util.h" |
| #endif |
| +#if defined(OS_WIN) |
| +#include <windows.h> |
| +#include "ui/aura/window.h" |
| +#include "ui/aura/window_tree_host.h" |
| +#include "ui/views/widget/desktop_aura/desktop_window_tree_host_win.h" |
| +#include "ui/views/win/hwnd_message_handler_delegate.h" |
| +#include "ui/views/win/hwnd_util.h" |
| +#endif |
| + |
| using apps::NativeAppWindow; |
| // Helper class that has to be created in the stack to check if the fullscreen |
| @@ -318,6 +327,63 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, |
| EXPECT_TRUE(GetFirstAppWindow()->GetBaseWindow()->IsFullscreen()); |
| } |
| +IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, TestInnerBounds) { |
| + ASSERT_TRUE(RunAppWindowInteractiveTest("testInnerBounds")) << message_; |
| +} |
| + |
| +// TODO(jackhou): Make this test work for other OSes. |
| +#if !defined(OS_WIN) |
| +#define MAYBE_TestOuterBounds DISABLED_TestOuterBounds |
| +#else |
| +#define MAYBE_TestOuterBounds TestOuterBounds |
| +#endif |
| + |
| +// Test that the outer bounds match that of the native window. |
| +IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, MAYBE_TestOuterBounds) { |
| + ExtensionTestMessageListener launched_listener("Launched", true); |
|
benwells
2014/08/12 03:51:40
Nit: You don't need this listener. Just call LoadA
jackhou1
2014/08/12 06:12:07
Done.
|
| + const extensions::Extension* app = |
| + LoadAndLaunchPlatformApp("outer_bounds", &launched_listener); |
| + |
| + apps::AppWindow* window = GetFirstAppWindowForApp(app->id()); |
| + gfx::Rect window_bounds; |
| + gfx::Size min_size, max_size; |
| + |
| +#if defined(OS_WIN) |
| + // Get the bounds from the HWND. |
| + HWND hwnd = views::HWNDForNativeWindow(window->GetNativeWindow()); |
| + RECT rect; |
| + ::GetWindowRect(hwnd, &rect); |
| + window_bounds = gfx::Rect( |
| + rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top); |
| + |
| + // HWNDMessageHandler calls this when responding to WM_GETMINMAXSIZE, so it's |
| + // the closest to what the window will see. |
| + views::HWNDMessageHandlerDelegate* host = |
| + static_cast<views::HWNDMessageHandlerDelegate*>( |
| + static_cast<views::DesktopWindowTreeHostWin*>( |
| + aura::WindowTreeHost::GetForAcceleratedWidget(hwnd))); |
| + host->GetMinMaxSize(&min_size, &max_size); |
| + // Note that this does not include the the client area insets so we need to |
| + // add them. |
| + gfx::Insets insets; |
| + host->GetClientAreaInsets(&insets); |
| + min_size = gfx::Size(min_size.width() + insets.left() + insets.right(), |
| + min_size.height() + insets.top() + insets.bottom()); |
| + max_size = gfx::Size( |
| + max_size.width() ? max_size.width() + insets.left() + insets.right() : 0, |
| + max_size.height() ? max_size.height() + insets.top() + insets.bottom() |
| + : 0); |
| +#endif // defined(OS_WIN) |
| + |
| + // These match the values in the outer_bounds/test.js |
| + EXPECT_EQ(gfx::Rect(10, 11, 300, 301), window_bounds); |
| + EXPECT_EQ(window->GetBaseWindow()->GetBounds(), window_bounds); |
| + EXPECT_EQ(200, min_size.width()); |
| + EXPECT_EQ(201, min_size.height()); |
| + EXPECT_EQ(400, max_size.width()); |
| + EXPECT_EQ(401, max_size.height()); |
| +} |
| + |
| // This test does not work on Linux Aura because ShowInactive() is not |
| // implemented. See http://crbug.com/325142 |
| // It also does not work on Windows because of the document being focused even |