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

Side by Side Diff: ui/wm/core/shadow_controller_unittest.cc

Issue 1868363002: Replace scoped_ptr with std::unique_ptr in //ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scopedptrcc
Patch Set: scopedptrui: rebase-make_scoped_ptr Created 4 years, 8 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
« no previous file with comments | « ui/wm/core/shadow.h ('k') | ui/wm/core/shadow_unittest.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 (c) 2012 The Chromium Authors. All rights reserved. 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 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 "ui/wm/core/shadow_controller.h" 5 #include "ui/wm/core/shadow_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory>
8 #include <vector> 9 #include <vector>
9 10
10 #include "base/macros.h" 11 #include "base/macros.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "ui/aura/client/aura_constants.h" 12 #include "ui/aura/client/aura_constants.h"
13 #include "ui/aura/client/window_tree_client.h" 13 #include "ui/aura/client/window_tree_client.h"
14 #include "ui/aura/test/aura_test_base.h" 14 #include "ui/aura/test/aura_test_base.h"
15 #include "ui/aura/window.h" 15 #include "ui/aura/window.h"
16 #include "ui/aura/window_event_dispatcher.h" 16 #include "ui/aura/window_event_dispatcher.h"
17 #include "ui/compositor/layer.h" 17 #include "ui/compositor/layer.h"
18 #include "ui/wm/core/default_activation_client.h" 18 #include "ui/wm/core/default_activation_client.h"
19 #include "ui/wm/core/shadow.h" 19 #include "ui/wm/core/shadow.h"
20 #include "ui/wm/core/shadow_types.h" 20 #include "ui/wm/core/shadow_types.h"
21 #include "ui/wm/core/window_util.h" 21 #include "ui/wm/core/window_util.h"
(...skipping 25 matching lines...) Expand all
47 ShadowController* shadow_controller() { return shadow_controller_.get(); } 47 ShadowController* shadow_controller() { return shadow_controller_.get(); }
48 48
49 void ActivateWindow(aura::Window* window) { 49 void ActivateWindow(aura::Window* window) {
50 DCHECK(window); 50 DCHECK(window);
51 DCHECK(window->GetRootWindow()); 51 DCHECK(window->GetRootWindow());
52 aura::client::GetActivationClient(window->GetRootWindow())->ActivateWindow( 52 aura::client::GetActivationClient(window->GetRootWindow())->ActivateWindow(
53 window); 53 window);
54 } 54 }
55 55
56 private: 56 private:
57 scoped_ptr<ShadowController> shadow_controller_; 57 std::unique_ptr<ShadowController> shadow_controller_;
58 scoped_ptr<wm::WMState> wm_state_; 58 std::unique_ptr<wm::WMState> wm_state_;
59 59
60 DISALLOW_COPY_AND_ASSIGN(ShadowControllerTest); 60 DISALLOW_COPY_AND_ASSIGN(ShadowControllerTest);
61 }; 61 };
62 62
63 // Tests that various methods in Window update the Shadow object as expected. 63 // Tests that various methods in Window update the Shadow object as expected.
64 TEST_F(ShadowControllerTest, Shadow) { 64 TEST_F(ShadowControllerTest, Shadow) {
65 scoped_ptr<aura::Window> window(new aura::Window(NULL)); 65 std::unique_ptr<aura::Window> window(new aura::Window(NULL));
66 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); 66 window->SetType(ui::wm::WINDOW_TYPE_NORMAL);
67 window->Init(ui::LAYER_TEXTURED); 67 window->Init(ui::LAYER_TEXTURED);
68 ParentWindow(window.get()); 68 ParentWindow(window.get());
69 69
70 // We should create the shadow before the window is visible (the shadow's 70 // We should create the shadow before the window is visible (the shadow's
71 // layer won't get drawn yet since it's a child of the window's layer). 71 // layer won't get drawn yet since it's a child of the window's layer).
72 ShadowController::TestApi api(shadow_controller()); 72 ShadowController::TestApi api(shadow_controller());
73 const Shadow* shadow = api.GetShadowForWindow(window.get()); 73 const Shadow* shadow = api.GetShadowForWindow(window.get());
74 ASSERT_TRUE(shadow != NULL); 74 ASSERT_TRUE(shadow != NULL);
75 EXPECT_TRUE(shadow->layer()->visible()); 75 EXPECT_TRUE(shadow->layer()->visible());
(...skipping 15 matching lines...) Expand all
91 EXPECT_EQ(window->layer(), shadow->layer()->parent()); 91 EXPECT_EQ(window->layer(), shadow->layer()->parent());
92 92
93 window->parent()->RemoveChild(window.get()); 93 window->parent()->RemoveChild(window.get());
94 aura::Window* window_ptr = window.get(); 94 aura::Window* window_ptr = window.get();
95 window.reset(); 95 window.reset();
96 EXPECT_TRUE(api.GetShadowForWindow(window_ptr) == NULL); 96 EXPECT_TRUE(api.GetShadowForWindow(window_ptr) == NULL);
97 } 97 }
98 98
99 // Tests that the window's shadow's bounds are updated correctly. 99 // Tests that the window's shadow's bounds are updated correctly.
100 TEST_F(ShadowControllerTest, ShadowBounds) { 100 TEST_F(ShadowControllerTest, ShadowBounds) {
101 scoped_ptr<aura::Window> window(new aura::Window(NULL)); 101 std::unique_ptr<aura::Window> window(new aura::Window(NULL));
102 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); 102 window->SetType(ui::wm::WINDOW_TYPE_NORMAL);
103 window->Init(ui::LAYER_TEXTURED); 103 window->Init(ui::LAYER_TEXTURED);
104 ParentWindow(window.get()); 104 ParentWindow(window.get());
105 window->Show(); 105 window->Show();
106 106
107 const gfx::Rect kOldBounds(20, 30, 400, 300); 107 const gfx::Rect kOldBounds(20, 30, 400, 300);
108 window->SetBounds(kOldBounds); 108 window->SetBounds(kOldBounds);
109 109
110 // When the shadow is first created, it should use the window's size (but 110 // When the shadow is first created, it should use the window's size (but
111 // remain at the origin, since it's a child of the window's layer). 111 // remain at the origin, since it's a child of the window's layer).
112 SetShadowType(window.get(), SHADOW_TYPE_RECTANGULAR); 112 SetShadowType(window.get(), SHADOW_TYPE_RECTANGULAR);
113 ShadowController::TestApi api(shadow_controller()); 113 ShadowController::TestApi api(shadow_controller());
114 const Shadow* shadow = api.GetShadowForWindow(window.get()); 114 const Shadow* shadow = api.GetShadowForWindow(window.get());
115 ASSERT_TRUE(shadow != NULL); 115 ASSERT_TRUE(shadow != NULL);
116 EXPECT_EQ(gfx::Rect(kOldBounds.size()).ToString(), 116 EXPECT_EQ(gfx::Rect(kOldBounds.size()).ToString(),
117 shadow->content_bounds().ToString()); 117 shadow->content_bounds().ToString());
118 118
119 // When we change the window's bounds, the shadow's should be updated too. 119 // When we change the window's bounds, the shadow's should be updated too.
120 gfx::Rect kNewBounds(50, 60, 500, 400); 120 gfx::Rect kNewBounds(50, 60, 500, 400);
121 window->SetBounds(kNewBounds); 121 window->SetBounds(kNewBounds);
122 EXPECT_EQ(gfx::Rect(kNewBounds.size()).ToString(), 122 EXPECT_EQ(gfx::Rect(kNewBounds.size()).ToString(),
123 shadow->content_bounds().ToString()); 123 shadow->content_bounds().ToString());
124 } 124 }
125 125
126 // Tests that activating a window changes the shadow style. 126 // Tests that activating a window changes the shadow style.
127 TEST_F(ShadowControllerTest, ShadowStyle) { 127 TEST_F(ShadowControllerTest, ShadowStyle) {
128 ShadowController::TestApi api(shadow_controller()); 128 ShadowController::TestApi api(shadow_controller());
129 129
130 scoped_ptr<aura::Window> window1(new aura::Window(NULL)); 130 std::unique_ptr<aura::Window> window1(new aura::Window(NULL));
131 window1->SetType(ui::wm::WINDOW_TYPE_NORMAL); 131 window1->SetType(ui::wm::WINDOW_TYPE_NORMAL);
132 window1->Init(ui::LAYER_TEXTURED); 132 window1->Init(ui::LAYER_TEXTURED);
133 ParentWindow(window1.get()); 133 ParentWindow(window1.get());
134 window1->SetBounds(gfx::Rect(10, 20, 300, 400)); 134 window1->SetBounds(gfx::Rect(10, 20, 300, 400));
135 window1->Show(); 135 window1->Show();
136 ActivateWindow(window1.get()); 136 ActivateWindow(window1.get());
137 137
138 // window1 is active, so style should have active appearance. 138 // window1 is active, so style should have active appearance.
139 Shadow* shadow1 = api.GetShadowForWindow(window1.get()); 139 Shadow* shadow1 = api.GetShadowForWindow(window1.get());
140 ASSERT_TRUE(shadow1 != NULL); 140 ASSERT_TRUE(shadow1 != NULL);
141 EXPECT_EQ(Shadow::STYLE_ACTIVE, shadow1->style()); 141 EXPECT_EQ(Shadow::STYLE_ACTIVE, shadow1->style());
142 142
143 // Create another window and activate it. 143 // Create another window and activate it.
144 scoped_ptr<aura::Window> window2(new aura::Window(NULL)); 144 std::unique_ptr<aura::Window> window2(new aura::Window(NULL));
145 window2->SetType(ui::wm::WINDOW_TYPE_NORMAL); 145 window2->SetType(ui::wm::WINDOW_TYPE_NORMAL);
146 window2->Init(ui::LAYER_TEXTURED); 146 window2->Init(ui::LAYER_TEXTURED);
147 ParentWindow(window2.get()); 147 ParentWindow(window2.get());
148 window2->SetBounds(gfx::Rect(11, 21, 301, 401)); 148 window2->SetBounds(gfx::Rect(11, 21, 301, 401));
149 window2->Show(); 149 window2->Show();
150 ActivateWindow(window2.get()); 150 ActivateWindow(window2.get());
151 151
152 // window1 is now inactive, so shadow should go inactive. 152 // window1 is now inactive, so shadow should go inactive.
153 Shadow* shadow2 = api.GetShadowForWindow(window2.get()); 153 Shadow* shadow2 = api.GetShadowForWindow(window2.get());
154 ASSERT_TRUE(shadow2 != NULL); 154 ASSERT_TRUE(shadow2 != NULL);
155 EXPECT_EQ(Shadow::STYLE_INACTIVE, shadow1->style()); 155 EXPECT_EQ(Shadow::STYLE_INACTIVE, shadow1->style());
156 EXPECT_EQ(Shadow::STYLE_ACTIVE, shadow2->style()); 156 EXPECT_EQ(Shadow::STYLE_ACTIVE, shadow2->style());
157 } 157 }
158 158
159 // Tests that shadow gets updated when the window show state changes. 159 // Tests that shadow gets updated when the window show state changes.
160 TEST_F(ShadowControllerTest, ShowState) { 160 TEST_F(ShadowControllerTest, ShowState) {
161 ShadowController::TestApi api(shadow_controller()); 161 ShadowController::TestApi api(shadow_controller());
162 162
163 scoped_ptr<aura::Window> window(new aura::Window(NULL)); 163 std::unique_ptr<aura::Window> window(new aura::Window(NULL));
164 window->SetType(ui::wm::WINDOW_TYPE_NORMAL); 164 window->SetType(ui::wm::WINDOW_TYPE_NORMAL);
165 window->Init(ui::LAYER_TEXTURED); 165 window->Init(ui::LAYER_TEXTURED);
166 ParentWindow(window.get()); 166 ParentWindow(window.get());
167 window->Show(); 167 window->Show();
168 168
169 Shadow* shadow = api.GetShadowForWindow(window.get()); 169 Shadow* shadow = api.GetShadowForWindow(window.get());
170 ASSERT_TRUE(shadow != NULL); 170 ASSERT_TRUE(shadow != NULL);
171 EXPECT_EQ(Shadow::STYLE_INACTIVE, shadow->style()); 171 EXPECT_EQ(Shadow::STYLE_INACTIVE, shadow->style());
172 172
173 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); 173 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
174 EXPECT_FALSE(shadow->layer()->visible()); 174 EXPECT_FALSE(shadow->layer()->visible());
175 175
176 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); 176 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
177 EXPECT_TRUE(shadow->layer()->visible()); 177 EXPECT_TRUE(shadow->layer()->visible());
178 178
179 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); 179 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
180 EXPECT_FALSE(shadow->layer()->visible()); 180 EXPECT_FALSE(shadow->layer()->visible());
181 } 181 }
182 182
183 // Tests that we use smaller shadows for tooltips and menus. 183 // Tests that we use smaller shadows for tooltips and menus.
184 TEST_F(ShadowControllerTest, SmallShadowsForTooltipsAndMenus) { 184 TEST_F(ShadowControllerTest, SmallShadowsForTooltipsAndMenus) {
185 ShadowController::TestApi api(shadow_controller()); 185 ShadowController::TestApi api(shadow_controller());
186 186
187 scoped_ptr<aura::Window> tooltip_window(new aura::Window(NULL)); 187 std::unique_ptr<aura::Window> tooltip_window(new aura::Window(NULL));
188 tooltip_window->SetType(ui::wm::WINDOW_TYPE_TOOLTIP); 188 tooltip_window->SetType(ui::wm::WINDOW_TYPE_TOOLTIP);
189 tooltip_window->Init(ui::LAYER_TEXTURED); 189 tooltip_window->Init(ui::LAYER_TEXTURED);
190 ParentWindow(tooltip_window.get()); 190 ParentWindow(tooltip_window.get());
191 tooltip_window->SetBounds(gfx::Rect(10, 20, 300, 400)); 191 tooltip_window->SetBounds(gfx::Rect(10, 20, 300, 400));
192 tooltip_window->Show(); 192 tooltip_window->Show();
193 193
194 Shadow* tooltip_shadow = api.GetShadowForWindow(tooltip_window.get()); 194 Shadow* tooltip_shadow = api.GetShadowForWindow(tooltip_window.get());
195 ASSERT_TRUE(tooltip_shadow != NULL); 195 ASSERT_TRUE(tooltip_shadow != NULL);
196 EXPECT_EQ(Shadow::STYLE_SMALL, tooltip_shadow->style()); 196 EXPECT_EQ(Shadow::STYLE_SMALL, tooltip_shadow->style());
197 197
198 scoped_ptr<aura::Window> menu_window(new aura::Window(NULL)); 198 std::unique_ptr<aura::Window> menu_window(new aura::Window(NULL));
199 menu_window->SetType(ui::wm::WINDOW_TYPE_MENU); 199 menu_window->SetType(ui::wm::WINDOW_TYPE_MENU);
200 menu_window->Init(ui::LAYER_TEXTURED); 200 menu_window->Init(ui::LAYER_TEXTURED);
201 ParentWindow(menu_window.get()); 201 ParentWindow(menu_window.get());
202 menu_window->SetBounds(gfx::Rect(10, 20, 300, 400)); 202 menu_window->SetBounds(gfx::Rect(10, 20, 300, 400));
203 menu_window->Show(); 203 menu_window->Show();
204 204
205 Shadow* menu_shadow = api.GetShadowForWindow(tooltip_window.get()); 205 Shadow* menu_shadow = api.GetShadowForWindow(tooltip_window.get());
206 ASSERT_TRUE(menu_shadow != NULL); 206 ASSERT_TRUE(menu_shadow != NULL);
207 EXPECT_EQ(Shadow::STYLE_SMALL, menu_shadow->style()); 207 EXPECT_EQ(Shadow::STYLE_SMALL, menu_shadow->style());
208 } 208 }
209 209
210 // http://crbug.com/120210 - transient parents of certain types of transients 210 // http://crbug.com/120210 - transient parents of certain types of transients
211 // should not lose their shadow when they lose activation to the transient. 211 // should not lose their shadow when they lose activation to the transient.
212 TEST_F(ShadowControllerTest, TransientParentKeepsActiveShadow) { 212 TEST_F(ShadowControllerTest, TransientParentKeepsActiveShadow) {
213 ShadowController::TestApi api(shadow_controller()); 213 ShadowController::TestApi api(shadow_controller());
214 214
215 scoped_ptr<aura::Window> window1(new aura::Window(NULL)); 215 std::unique_ptr<aura::Window> window1(new aura::Window(NULL));
216 window1->SetType(ui::wm::WINDOW_TYPE_NORMAL); 216 window1->SetType(ui::wm::WINDOW_TYPE_NORMAL);
217 window1->Init(ui::LAYER_TEXTURED); 217 window1->Init(ui::LAYER_TEXTURED);
218 ParentWindow(window1.get()); 218 ParentWindow(window1.get());
219 window1->SetBounds(gfx::Rect(10, 20, 300, 400)); 219 window1->SetBounds(gfx::Rect(10, 20, 300, 400));
220 window1->Show(); 220 window1->Show();
221 ActivateWindow(window1.get()); 221 ActivateWindow(window1.get());
222 222
223 // window1 is active, so style should have active appearance. 223 // window1 is active, so style should have active appearance.
224 Shadow* shadow1 = api.GetShadowForWindow(window1.get()); 224 Shadow* shadow1 = api.GetShadowForWindow(window1.get());
225 ASSERT_TRUE(shadow1 != NULL); 225 ASSERT_TRUE(shadow1 != NULL);
226 EXPECT_EQ(Shadow::STYLE_ACTIVE, shadow1->style()); 226 EXPECT_EQ(Shadow::STYLE_ACTIVE, shadow1->style());
227 227
228 // Create a window that is transient to window1, and that has the 'hide on 228 // Create a window that is transient to window1, and that has the 'hide on
229 // deactivate' property set. Upon activation, window1 should still have an 229 // deactivate' property set. Upon activation, window1 should still have an
230 // active shadow. 230 // active shadow.
231 scoped_ptr<aura::Window> window2(new aura::Window(NULL)); 231 std::unique_ptr<aura::Window> window2(new aura::Window(NULL));
232 window2->SetType(ui::wm::WINDOW_TYPE_NORMAL); 232 window2->SetType(ui::wm::WINDOW_TYPE_NORMAL);
233 window2->Init(ui::LAYER_TEXTURED); 233 window2->Init(ui::LAYER_TEXTURED);
234 ParentWindow(window2.get()); 234 ParentWindow(window2.get());
235 window2->SetBounds(gfx::Rect(11, 21, 301, 401)); 235 window2->SetBounds(gfx::Rect(11, 21, 301, 401));
236 AddTransientChild(window1.get(), window2.get()); 236 AddTransientChild(window1.get(), window2.get());
237 aura::client::SetHideOnDeactivate(window2.get(), true); 237 aura::client::SetHideOnDeactivate(window2.get(), true);
238 window2->Show(); 238 window2->Show();
239 ActivateWindow(window2.get()); 239 ActivateWindow(window2.get());
240 240
241 // window1 is now inactive, but its shadow should still appear active. 241 // window1 is now inactive, but its shadow should still appear active.
242 EXPECT_EQ(Shadow::STYLE_ACTIVE, shadow1->style()); 242 EXPECT_EQ(Shadow::STYLE_ACTIVE, shadow1->style());
243 } 243 }
244 244
245 } // namespace wm 245 } // namespace wm
OLDNEW
« no previous file with comments | « ui/wm/core/shadow.h ('k') | ui/wm/core/shadow_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698