1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "apps/ui/native_app_window.h" 6 #include "chrome/browser/apps/app_browsertest_util.h" 7 8 using extensions::Extension; 9 10 namespace apps { 11 12 namespace { 13 14 typedef extensions::PlatformAppBrowserTest AppWindowBrowserTest; 15 16 // This test is disabled on Linux because of the unpredictable nature of native 17 // windows. We cannot assume that the window manager will insert any title bar 18 // at all, so the test may fail on certain window managers. 19 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 20 #define MAYBE_FrameInsetsForDefaultFrame DISABLED_FrameInsetsForDefaultFrame 21 #else 22 #define MAYBE_FrameInsetsForDefaultFrame FrameInsetsForDefaultFrame 23 #endif 24 25 // Verifies that the NativeAppWindows implement GetFrameInsets() correctly. 26 // See http://crbug.com/346115 27 IN_PROC_BROWSER_TEST_F(AppWindowBrowserTest, MAYBE_FrameInsetsForDefaultFrame) { 28 AppWindow* app_window = CreateTestAppWindow("{}"); 29 NativeAppWindow* native_window = app_window->GetBaseWindow(); 30 gfx::Insets insets = native_window->GetFrameInsets(); 31 32 // It is a reasonable assumption that the top padding must be greater than 33 // the bottom padding due to the title bar. 34 EXPECT_GT(insets.top(), insets.bottom()); 35 36 CloseAppWindow(app_window); 37 } 38 39 // This test is also disabled on Linux because frame: color is ignored on stable 40 // and beta channels (so it can fail the same as the previous test). 41 // TODO(benwells): Re-enable on Linux after frame: color is on stable. 42 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 43 #define MAYBE_FrameInsetsForColoredFrame DISABLED_FrameInsetsForColoredFrame 44 #else 45 #define MAYBE_FrameInsetsForColoredFrame FrameInsetsForColoredFrame 46 #endif 47 48 // Verifies that the NativeAppWindows implement GetFrameInsets() correctly. 49 // See http://crbug.com/346115 50 IN_PROC_BROWSER_TEST_F(AppWindowBrowserTest, MAYBE_FrameInsetsForColoredFrame) { 51 AppWindow* app_window = 52 CreateTestAppWindow("{ \"frame\": { \"color\": \"#ffffff\" } }"); 53 NativeAppWindow* native_window = app_window->GetBaseWindow(); 54 gfx::Insets insets = native_window->GetFrameInsets(); 55 56 // It is a reasonable assumption that the top padding must be greater than 57 // the bottom padding due to the title bar. 58 EXPECT_GT(insets.top(), insets.bottom()); 59 60 CloseAppWindow(app_window); 61 } 62 63 // Verifies that the NativeAppWindows implement GetFrameInsets() correctly for 64 // frameless windows. 65 IN_PROC_BROWSER_TEST_F(AppWindowBrowserTest, FrameInsetsForNoFrame) { 66 AppWindow* app_window = CreateTestAppWindow("{ \"frame\": \"none\" }"); 67 NativeAppWindow* native_window = app_window->GetBaseWindow(); 68 gfx::Insets insets = native_window->GetFrameInsets(); 69 70 // All insets must be zero. 71 EXPECT_EQ(0, insets.top()); 72 EXPECT_EQ(0, insets.bottom()); 73 EXPECT_EQ(0, insets.left()); 74 EXPECT_EQ(0, insets.right()); 75 76 CloseAppWindow(app_window); 77 } 78 79 } // namespace 80 81 } // namespace apps 82