Linux Sandbox: make sure Credentials test pass on TSAN
[chromium-blink-merge.git] / ash / screen_util_unittest.cc
blob9ab36005d8b9dccdb19085590b7731f87efb4256
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.
5 #include "ash/screen_util.h"
7 #include "ash/root_window_controller.h"
8 #include "ash/shelf/shelf_layout_manager.h"
9 #include "ash/shelf/shelf_widget.h"
10 #include "ash/shell.h"
11 #include "ash/test/ash_test_base.h"
12 #include "ash/wm/window_util.h"
13 #include "ui/aura/env.h"
14 #include "ui/aura/window.h"
15 #include "ui/aura/window_event_dispatcher.h"
16 #include "ui/views/widget/widget.h"
17 #include "ui/views/widget/widget_delegate.h"
19 namespace ash {
20 namespace test {
22 typedef test::AshTestBase ScreenUtilTest;
24 TEST_F(ScreenUtilTest, Bounds) {
25 if (!SupportsMultipleDisplays())
26 return;
28 UpdateDisplay("600x600,500x500");
29 Shell::GetPrimaryRootWindowController()->GetShelfLayoutManager()->
30 SetAutoHideBehavior(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
32 views::Widget* primary = views::Widget::CreateWindowWithContextAndBounds(
33 NULL, CurrentContext(), gfx::Rect(10, 10, 100, 100));
34 primary->Show();
35 views::Widget* secondary = views::Widget::CreateWindowWithContextAndBounds(
36 NULL, CurrentContext(), gfx::Rect(610, 10, 100, 100));
37 secondary->Show();
39 // Maximized bounds
40 EXPECT_EQ("0,0 600x597",
41 ScreenUtil::GetMaximizedWindowBoundsInParent(
42 primary->GetNativeView()).ToString());
43 EXPECT_EQ("0,0 500x453",
44 ScreenUtil::GetMaximizedWindowBoundsInParent(
45 secondary->GetNativeView()).ToString());
47 // Display bounds
48 EXPECT_EQ("0,0 600x600",
49 ScreenUtil::GetDisplayBoundsInParent(
50 primary->GetNativeView()).ToString());
51 EXPECT_EQ("0,0 500x500",
52 ScreenUtil::GetDisplayBoundsInParent(
53 secondary->GetNativeView()).ToString());
55 // Work area bounds
56 EXPECT_EQ("0,0 600x597",
57 ScreenUtil::GetDisplayWorkAreaBoundsInParent(
58 primary->GetNativeView()).ToString());
59 EXPECT_EQ("0,0 500x453",
60 ScreenUtil::GetDisplayWorkAreaBoundsInParent(
61 secondary->GetNativeView()).ToString());
64 // Test verifies a stable handling of secondary screen widget changes
65 // (crbug.com/226132).
66 TEST_F(ScreenUtilTest, StabilityTest) {
67 if (!SupportsMultipleDisplays())
68 return;
70 UpdateDisplay("600x600,500x500");
71 views::Widget* secondary = views::Widget::CreateWindowWithContextAndBounds(
72 NULL, CurrentContext(), gfx::Rect(610, 10, 100, 100));
73 EXPECT_EQ(Shell::GetAllRootWindows()[1],
74 secondary->GetNativeView()->GetRootWindow());
75 secondary->Show();
76 secondary->Maximize();
77 secondary->Show();
78 secondary->SetFullscreen(true);
79 secondary->Hide();
80 secondary->Close();
83 TEST_F(ScreenUtilTest, ConvertRect) {
84 if (!SupportsMultipleDisplays())
85 return;
87 UpdateDisplay("600x600,500x500");
89 views::Widget* primary = views::Widget::CreateWindowWithContextAndBounds(
90 NULL, CurrentContext(), gfx::Rect(10, 10, 100, 100));
91 primary->Show();
92 views::Widget* secondary = views::Widget::CreateWindowWithContextAndBounds(
93 NULL, CurrentContext(), gfx::Rect(610, 10, 100, 100));
94 secondary->Show();
96 EXPECT_EQ(
97 "0,0 100x100",
98 ScreenUtil::ConvertRectFromScreen(
99 primary->GetNativeView(), gfx::Rect(10, 10, 100, 100)).ToString());
100 EXPECT_EQ(
101 "10,10 100x100",
102 ScreenUtil::ConvertRectFromScreen(
103 secondary->GetNativeView(), gfx::Rect(620, 20, 100, 100)).ToString());
105 EXPECT_EQ(
106 "40,40 100x100",
107 ScreenUtil::ConvertRectToScreen(
108 primary->GetNativeView(), gfx::Rect(30, 30, 100, 100)).ToString());
109 EXPECT_EQ(
110 "650,50 100x100",
111 ScreenUtil::ConvertRectToScreen(
112 secondary->GetNativeView(), gfx::Rect(40, 40, 100, 100)).ToString());
115 } // namespace test
116 } // namespace ash