Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(576)

Side by Side Diff: chrome/browser/ui/views/panels/panel_view_browsertest.cc

Issue 2263863002: Remove implementation of Panels on OSes other than ChromeOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CR feedback Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 "build/build_config.h"
6 #include "chrome/browser/ui/panels/base_panel_browser_test.h"
7 #include "chrome/browser/ui/panels/panel.h"
8 #include "chrome/browser/ui/panels/panel_constants.h"
9 #include "chrome/browser/ui/views/panels/panel_frame_view.h"
10 #include "chrome/browser/ui/views/panels/panel_view.h"
11 #include "chrome/browser/ui/views/tab_icon_view.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "ui/views/controls/button/image_button.h"
14 #include "ui/views/controls/button/menu_button.h"
15 #include "ui/views/controls/image_view.h"
16 #include "ui/views/controls/label.h"
17 #include "ui/views/controls/link.h"
18 #include "ui/views/controls/textfield/textfield.h"
19
20 #if defined(OS_WIN)
21 #include "ui/views/win/hwnd_util.h"
22 #endif
23
24 // BasePanelBrowserTest now creates refactored Panels. Refactor
25 // has only been done for Mac panels so far.
26 class PanelViewTest : public BasePanelBrowserTest {
27 public:
28 PanelViewTest() : BasePanelBrowserTest() { }
29
30 protected:
31 PanelView* GetPanelView(Panel* panel) const {
32 return static_cast<PanelView*>(panel->native_panel());
33 }
34 };
35
36 IN_PROC_BROWSER_TEST_F(PanelViewTest, ActivePanelWindowProperties) {
37 CreatePanelParams params("1", gfx::Rect(0, 0, 200, 150), SHOW_AS_ACTIVE);
38 Panel* panel = CreatePanelWithParams(params);
39 EXPECT_TRUE(panel->IsActive());
40
41 // Validate window styles. We want to ensure that the window is created
42 // with expected styles regardless of its active state.
43 #if defined(OS_WIN)
44 HWND native_window = views::HWNDForWidget(GetPanelView(panel)->window());
45
46 LONG styles = ::GetWindowLong(native_window, GWL_STYLE);
47 EXPECT_EQ(0, styles & WS_MAXIMIZEBOX);
48 EXPECT_EQ(0, styles & WS_MINIMIZEBOX);
49
50 LONG ext_styles = ::GetWindowLong(native_window, GWL_EXSTYLE);
51 EXPECT_EQ(WS_EX_TOPMOST, ext_styles & WS_EX_TOPMOST);
52
53 RECT window_rect;
54 EXPECT_TRUE(::GetWindowRect(native_window, &window_rect));
55 EXPECT_EQ(200, window_rect.right - window_rect.left);
56 EXPECT_EQ(150, window_rect.bottom - window_rect.top);
57
58 EXPECT_TRUE(::IsWindowVisible(native_window));
59 #endif
60
61 panel->Close();
62 }
63
64 IN_PROC_BROWSER_TEST_F(PanelViewTest, InactivePanelWindowProperties) {
65 CreatePanelParams params("1", gfx::Rect(0, 0, 200, 150), SHOW_AS_INACTIVE);
66 Panel* panel = CreatePanelWithParams(params);
67 EXPECT_FALSE(panel->IsActive());
68
69 // Validate window styles. We want to ensure that the window is created
70 // with expected styles regardless of its active state.
71 #if defined(OS_WIN)
72 HWND native_window = views::HWNDForWidget(GetPanelView(panel)->window());
73
74 LONG styles = ::GetWindowLong(native_window, GWL_STYLE);
75 EXPECT_EQ(0, styles & WS_MAXIMIZEBOX);
76 EXPECT_EQ(0, styles & WS_MINIMIZEBOX);
77
78 LONG ext_styles = ::GetWindowLong(native_window, GWL_EXSTYLE);
79 EXPECT_EQ(WS_EX_TOPMOST, ext_styles & WS_EX_TOPMOST);
80
81 RECT window_rect;
82 EXPECT_TRUE(::GetWindowRect(native_window, &window_rect));
83 EXPECT_EQ(200, window_rect.right - window_rect.left);
84 EXPECT_EQ(150, window_rect.bottom - window_rect.top);
85
86 EXPECT_TRUE(::IsWindowVisible(native_window));
87 #endif
88
89 panel->Close();
90 }
91
92 IN_PROC_BROWSER_TEST_F(PanelViewTest, PanelLayout) {
93 // Create a fixed-size panel to avoid possible collapsing of the title
94 // if the enforced min sizes are too small.
95 Panel* panel = CreatePanelWithBounds("PanelTest", gfx::Rect(0, 0, 200, 50));
96 PanelFrameView* frame_view = GetPanelView(panel)->GetFrameView();
97
98 TabIconView* title_icon = frame_view->title_icon();
99 views::View* title_text = frame_view->title_label();
100 views::View* close_button = frame_view->close_button();
101 views::View* minimize_button = frame_view->minimize_button();
102 views::View* restore_button = frame_view->restore_button();
103
104 // We should have icon, text, minimize, restore and close buttons. Only one of
105 // minimize and restore buttons are visible.
106 EXPECT_EQ(5, frame_view->child_count());
107 EXPECT_TRUE(frame_view->Contains(title_icon));
108 EXPECT_TRUE(frame_view->Contains(title_text));
109 EXPECT_TRUE(frame_view->Contains(close_button));
110 EXPECT_TRUE(frame_view->Contains(minimize_button));
111 EXPECT_TRUE(frame_view->Contains(restore_button));
112
113 // These controls should be visible.
114 EXPECT_TRUE(title_icon->visible());
115 EXPECT_TRUE(title_text->visible());
116 EXPECT_TRUE(close_button->visible());
117 EXPECT_TRUE(minimize_button->visible());
118 EXPECT_FALSE(restore_button->visible());
119
120 // Validate their layouts.
121 int titlebar_height = panel::kTitlebarHeight;
122 EXPECT_GT(title_icon->width(), 0);
123 EXPECT_GT(title_icon->height(), 0);
124 EXPECT_LT(title_icon->height(), titlebar_height);
125 EXPECT_GT(title_text->width(), 0);
126 EXPECT_GT(title_text->height(), 0);
127 EXPECT_LT(title_text->height(), titlebar_height);
128 EXPECT_GT(minimize_button->width(), 0);
129 EXPECT_GT(minimize_button->height(), 0);
130 EXPECT_LT(minimize_button->height(), titlebar_height);
131 EXPECT_GT(close_button->width(), 0);
132 EXPECT_GT(close_button->height(), 0);
133 EXPECT_LT(close_button->height(), titlebar_height);
134 EXPECT_LT(title_icon->x() + title_icon->width(), title_text->x());
135 EXPECT_LT(title_text->x() + title_text->width(), minimize_button->x());
136 EXPECT_LT(minimize_button->x() + minimize_button->width(), close_button->x());
137 }
138
139 IN_PROC_BROWSER_TEST_F(PanelViewTest, CheckTitleOnlyHeight) {
140 gfx::Rect bounds(0, 0, 200, 50);
141 Panel* panel = CreatePanelWithBounds("PanelTest", bounds);
142
143 // Change panel to title-only and check its height.
144 panel->SetExpansionState(Panel::TITLE_ONLY);
145 WaitForBoundsAnimationFinished(panel);
146 EXPECT_EQ(panel->TitleOnlyHeight(), panel->GetBounds().height());
147 EXPECT_EQ(0, GetPanelView(panel)->height()); // client area height.
148
149 panel->Close();
150 }
151
152 IN_PROC_BROWSER_TEST_F(PanelViewTest, CheckMinimizedHeight) {
153 gfx::Rect bounds(0, 0, 200, 50);
154 Panel* panel = CreatePanelWithBounds("PanelTest", bounds);
155
156 // Change panel to minimized and check its height.
157 panel->SetExpansionState(Panel::MINIMIZED);
158 WaitForBoundsAnimationFinished(panel);
159 EXPECT_EQ(panel::kMinimizedPanelHeight, panel->GetBounds().height());
160 EXPECT_EQ(0, GetPanelView(panel)->height()); // client area height.
161
162 panel->Close();
163 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/panels/panel_view.cc ('k') | chrome/browser/ui/views/panels/taskbar_window_thumbnailer_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698