| Index: chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm
|
| diff --git a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm
|
| index 3992b5f43cdf629dddcae3215d33a6d62e4956bc..3278955d0734f1ed0397680baefd6eef1ba9b8f2 100644
|
| --- a/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm
|
| +++ b/chrome/browser/ui/cocoa/apps/native_app_window_cocoa_browsertest.mm
|
| @@ -240,3 +240,67 @@ IN_PROC_BROWSER_TEST_F(NativeAppWindowCocoaBrowserTest, Frameless) {
|
|
|
| CloseAppWindow(app_window);
|
| }
|
| +
|
| +namespace {
|
| +
|
| +// Test that resize and fullscreen controls are correctly enabled/disabled.
|
| +void TestControls(extensions::AppWindow* app_window) {
|
| + NSWindow* ns_window = app_window->GetNativeWindow();
|
| +
|
| + // The window is resizable.
|
| + EXPECT_TRUE([ns_window styleMask] & NSResizableWindowMask);
|
| + if (base::mac::IsOSSnowLeopard())
|
| + EXPECT_TRUE([ns_window showsResizeIndicator]);
|
| +
|
| + // Due to this bug: http://crbug.com/362039, which manifests on the Cocoa
|
| + // implementation but not the views one, frameless windows should have
|
| + // fullscreen controls disabled.
|
| + BOOL can_fullscreen =
|
| + ![NSStringFromClass([ns_window class]) isEqualTo:@"AppFramelessNSWindow"];
|
| + // The window can fullscreen and maximize.
|
| + if (base::mac::IsOSLionOrLater())
|
| + EXPECT_EQ(can_fullscreen, !!([ns_window collectionBehavior] &
|
| + NSWindowCollectionBehaviorFullScreenPrimary));
|
| + EXPECT_EQ(can_fullscreen,
|
| + [[ns_window standardWindowButton:NSWindowZoomButton] isEnabled]);
|
| +
|
| + // Set a maximum size.
|
| + app_window->SetContentSizeConstraints(gfx::Size(), gfx::Size(200, 201));
|
| + EXPECT_EQ(200, [ns_window contentMaxSize].width);
|
| + EXPECT_EQ(201, [ns_window contentMaxSize].height);
|
| + NSView* web_contents = app_window->web_contents()->GetNativeView();
|
| + EXPECT_EQ(200, [web_contents frame].size.width);
|
| + EXPECT_EQ(201, [web_contents frame].size.height);
|
| +
|
| + // Still resizable.
|
| + EXPECT_TRUE([ns_window styleMask] & NSResizableWindowMask);
|
| + if (base::mac::IsOSSnowLeopard())
|
| + EXPECT_TRUE([ns_window showsResizeIndicator]);
|
| +
|
| + // Fullscreen and maximize are disabled.
|
| + if (base::mac::IsOSLionOrLater())
|
| + EXPECT_FALSE([ns_window collectionBehavior] &
|
| + NSWindowCollectionBehaviorFullScreenPrimary);
|
| + EXPECT_FALSE([[ns_window standardWindowButton:NSWindowZoomButton] isEnabled]);
|
| +
|
| + // Set a minimum size equal to the maximum size.
|
| + app_window->SetContentSizeConstraints(gfx::Size(200, 201),
|
| + gfx::Size(200, 201));
|
| + EXPECT_EQ(200, [ns_window contentMinSize].width);
|
| + EXPECT_EQ(201, [ns_window contentMinSize].height);
|
| +
|
| + // No longer resizable.
|
| + EXPECT_FALSE([ns_window styleMask] & NSResizableWindowMask);
|
| + if (base::mac::IsOSSnowLeopard())
|
| + EXPECT_FALSE([ns_window showsResizeIndicator]);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +IN_PROC_BROWSER_TEST_F(NativeAppWindowCocoaBrowserTest, Controls) {
|
| + TestControls(CreateTestAppWindow("{}"));
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(NativeAppWindowCocoaBrowserTest, ControlsFrameless) {
|
| + TestControls(CreateTestAppWindow("{\"frame\": \"none\"}"));
|
| +}
|
|
|