Home | History | Annotate | Download | only in apps
      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