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

Side by Side Diff: ash/wm/header_painter_unittest.cc

Issue 123023002: Remove "solo window" feature (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « ash/wm/header_painter.cc ('k') | ash/wm/panels/panel_frame_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/wm/header_painter.h" 5 #include "ash/wm/header_painter.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/test/ash_test_base.h" 8 #include "ash/test/ash_test_base.h"
9 #include "ash/wm/caption_buttons/frame_caption_button_container_view.h" 9 #include "ash/wm/caption_buttons/frame_caption_button_container_view.h"
10 #include "ash/wm/window_state.h" 10 #include "ash/wm/window_state.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "grit/ash_resources.h" 12 #include "grit/ash_resources.h"
13 #include "ui/gfx/font.h" 13 #include "ui/gfx/font.h"
14 #include "ui/views/widget/widget.h" 14 #include "ui/views/widget/widget.h"
15 #include "ui/views/window/non_client_view.h" 15 #include "ui/views/window/non_client_view.h"
16 16
17 using ash::HeaderPainter; 17 using ash::HeaderPainter;
18 using views::NonClientFrameView; 18 using views::NonClientFrameView;
19 using views::Widget; 19 using views::Widget;
20 20
21 namespace {
22
23 // Modifies the values of kInactiveWindowOpacity, kActiveWindowOpacity, and
24 // kSoloWindowOpacity for the lifetime of the class. This is useful so that
25 // the constants each have different values.
26 class ScopedOpacityConstantModifier {
27 public:
28 ScopedOpacityConstantModifier()
29 : initial_active_window_opacity_(
30 ash::HeaderPainter::kActiveWindowOpacity),
31 initial_inactive_window_opacity_(
32 ash::HeaderPainter::kInactiveWindowOpacity),
33 initial_solo_window_opacity_(ash::HeaderPainter::kSoloWindowOpacity) {
34 ash::HeaderPainter::kActiveWindowOpacity = 100;
35 ash::HeaderPainter::kInactiveWindowOpacity = 120;
36 ash::HeaderPainter::kSoloWindowOpacity = 140;
37 }
38 ~ScopedOpacityConstantModifier() {
39 ash::HeaderPainter::kActiveWindowOpacity = initial_active_window_opacity_;
40 ash::HeaderPainter::kInactiveWindowOpacity =
41 initial_inactive_window_opacity_;
42 ash::HeaderPainter::kSoloWindowOpacity = initial_solo_window_opacity_;
43 }
44
45 private:
46 int initial_active_window_opacity_;
47 int initial_inactive_window_opacity_;
48 int initial_solo_window_opacity_;
49
50 DISALLOW_COPY_AND_ASSIGN(ScopedOpacityConstantModifier);
51 };
52
53 // Creates a new HeaderPainter with empty buttons. Caller owns the memory.
54 HeaderPainter* CreateTestPainter(Widget* widget) {
55 HeaderPainter* painter = new HeaderPainter();
56 NonClientFrameView* frame_view = widget->non_client_view()->frame_view();
57 ash::FrameCaptionButtonContainerView* container =
58 new ash::FrameCaptionButtonContainerView(
59 widget,
60 ash::FrameCaptionButtonContainerView::MINIMIZE_ALLOWED);
61 // Add the container to the widget's non-client frame view so that it will be
62 // deleted when the widget is destroyed.
63 frame_view->AddChildView(container);
64 painter->Init(widget, frame_view, NULL, container);
65 return painter;
66 }
67
68 } // namespace
69
70 namespace ash { 21 namespace ash {
71 22
72 class HeaderPainterTest : public ash::test::AshTestBase { 23 class HeaderPainterTest : public ash::test::AshTestBase {
73 public: 24 public:
74 // Creates a test widget that owns its native widget. 25 // Creates a test widget that owns its native widget.
75 Widget* CreateTestWidget() { 26 Widget* CreateTestWidget() {
76 Widget* widget = new Widget; 27 Widget* widget = new Widget;
77 Widget::InitParams params; 28 Widget::InitParams params;
78 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 29 params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
79 params.context = CurrentContext(); 30 params.context = CurrentContext();
80 widget->Init(params); 31 widget->Init(params);
81 return widget; 32 return widget;
82 } 33 }
83 }; 34 };
84 35
85 TEST_F(HeaderPainterTest, GetHeaderOpacity) {
86 // Create a widget and a painter for it.
87 scoped_ptr<Widget> w1(CreateTestWidget());
88 scoped_ptr<HeaderPainter> p1(CreateTestPainter(w1.get()));
89 w1->Show();
90
91 // Modify the values of the opacity constants so that they each have a
92 // different value.
93 ScopedOpacityConstantModifier opacity_constant_modifier;
94
95 // Solo active window has solo window opacity.
96 EXPECT_EQ(HeaderPainter::kSoloWindowOpacity,
97 p1->GetHeaderOpacity(HeaderPainter::ACTIVE,
98 IDR_AURA_WINDOW_HEADER_BASE_ACTIVE,
99 0));
100
101 // Create a second widget and painter.
102 scoped_ptr<Widget> w2(CreateTestWidget());
103 scoped_ptr<HeaderPainter> p2(CreateTestPainter(w2.get()));
104 w2->Show();
105
106 // Active window has active window opacity.
107 EXPECT_EQ(HeaderPainter::kActiveWindowOpacity,
108 p2->GetHeaderOpacity(HeaderPainter::ACTIVE,
109 IDR_AURA_WINDOW_HEADER_BASE_ACTIVE,
110 0));
111
112 // Inactive window has inactive window opacity.
113 EXPECT_EQ(HeaderPainter::kInactiveWindowOpacity,
114 p2->GetHeaderOpacity(HeaderPainter::INACTIVE,
115 IDR_AURA_WINDOW_HEADER_BASE_INACTIVE,
116 0));
117
118 // Regular maximized windows are fully opaque.
119 wm::GetWindowState(w1->GetNativeWindow())->Maximize();
120 EXPECT_EQ(255,
121 p1->GetHeaderOpacity(HeaderPainter::ACTIVE,
122 IDR_AURA_WINDOW_HEADER_BASE_ACTIVE,
123 0));
124 }
125
126 // Ensure the title text is vertically aligned with the window icon. 36 // Ensure the title text is vertically aligned with the window icon.
127 TEST_F(HeaderPainterTest, TitleIconAlignment) { 37 TEST_F(HeaderPainterTest, TitleIconAlignment) {
128 scoped_ptr<Widget> w(CreateTestWidget()); 38 scoped_ptr<Widget> w(CreateTestWidget());
129 HeaderPainter p; 39 HeaderPainter p;
130 ash::FrameCaptionButtonContainerView container(w.get(), 40 ash::FrameCaptionButtonContainerView container(w.get(),
131 ash::FrameCaptionButtonContainerView::MINIMIZE_ALLOWED); 41 ash::FrameCaptionButtonContainerView::MINIMIZE_ALLOWED);
132 views::View window_icon; 42 views::View window_icon;
133 window_icon.SetBounds(0, 0, 16, 16); 43 window_icon.SetBounds(0, 0, 16, 16);
134 p.Init(w.get(), 44 p.Init(w.get(),
135 w->non_client_view()->frame_view(), 45 w->non_client_view()->frame_view(),
(...skipping 10 matching lines...) Expand all
146 large_header_title_bounds.CenterPoint().y()); 56 large_header_title_bounds.CenterPoint().y());
147 57
148 // Title and icon are aligned when shorter_header is true. 58 // Title and icon are aligned when shorter_header is true.
149 p.LayoutHeader(true); 59 p.LayoutHeader(true);
150 gfx::Rect short_header_title_bounds = p.GetTitleBounds(default_font); 60 gfx::Rect short_header_title_bounds = p.GetTitleBounds(default_font);
151 EXPECT_EQ(window_icon.bounds().CenterPoint().y(), 61 EXPECT_EQ(window_icon.bounds().CenterPoint().y(),
152 short_header_title_bounds.CenterPoint().y()); 62 short_header_title_bounds.CenterPoint().y());
153 } 63 }
154 64
155 } // namespace ash 65 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/header_painter.cc ('k') | ash/wm/panels/panel_frame_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698