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..3a3b34b1c27c62be35b63e30403f830a16ac8b14 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,61 @@ 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]); |
+ |
+ // The window can fullscreen and maximize. |
+ if (base::mac::IsOSLionOrLater()) |
+ EXPECT_TRUE([ns_window collectionBehavior] & |
+ NSWindowCollectionBehaviorFullScreenPrimary); |
+ EXPECT_TRUE([[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\"}")); |
+} |