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

Side by Side Diff: ash/rotator/screen_rotation_animator_unittest.cc

Issue 2815043002: Removes ShellPort::IsRunningInMash() (Closed)
Patch Set: dont set instance_ in constructor Created 3 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 | « ash/root_window_controller_unittest.cc ('k') | ash/screen_util_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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/rotator/screen_rotation_animator.h" 5 #include "ash/rotator/screen_rotation_animator.h"
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "ash/public/cpp/config.h"
8 #include "ash/rotator/screen_rotation_animator_observer.h" 9 #include "ash/rotator/screen_rotation_animator_observer.h"
9 #include "ash/rotator/test/screen_rotation_animator_test_api.h" 10 #include "ash/rotator/test/screen_rotation_animator_test_api.h"
10 #include "ash/shell.h" 11 #include "ash/shell.h"
11 #include "ash/shell_port.h" 12 #include "ash/shell_port.h"
12 #include "ash/test/ash_test_base.h" 13 #include "ash/test/ash_test_base.h"
13 #include "base/callback_forward.h" 14 #include "base/callback_forward.h"
14 #include "base/command_line.h" 15 #include "base/command_line.h"
15 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
16 #include "base/run_loop.h" 17 #include "base/run_loop.h"
17 #include "cc/output/copy_output_request.h" 18 #include "cc/output/copy_output_request.h"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 base::MakeUnique<test::ScreenRotationAnimatorTestApi>(animator_.get()); 159 base::MakeUnique<test::ScreenRotationAnimatorTestApi>(animator_.get());
159 test_api()->DisableAnimationTimers(); 160 test_api()->DisableAnimationTimers();
160 } 161 }
161 162
162 void ScreenRotationAnimatorTest::WaitForCopyCallback() { 163 void ScreenRotationAnimatorTest::WaitForCopyCallback() {
163 run_loop_->Run(); 164 run_loop_->Run();
164 } 165 }
165 166
166 TEST_F(ScreenRotationAnimatorTest, ShouldNotifyObserver) { 167 TEST_F(ScreenRotationAnimatorTest, ShouldNotifyObserver) {
167 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480. 168 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480.
168 if (ShellPort::Get()->IsRunningInMash()) { 169 if (Shell::GetAshConfig() == Config::MASH) {
169 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() != 170 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() !=
170 display_id()); 171 display_id());
171 return; 172 return;
172 } 173 }
173 174
174 SetDisplayRotation(display_id(), display::Display::ROTATE_0); 175 SetDisplayRotation(display_id(), display::Display::ROTATE_0);
175 AnimationObserver observer; 176 AnimationObserver observer;
176 animator()->AddScreenRotationAnimatorObserver(&observer); 177 animator()->AddScreenRotationAnimatorObserver(&observer);
177 EXPECT_FALSE(observer.notified()); 178 EXPECT_FALSE(observer.notified());
178 179
179 animator()->Rotate(display::Display::ROTATE_90, 180 animator()->Rotate(display::Display::ROTATE_90,
180 display::Display::RotationSource::ROTATION_SOURCE_USER); 181 display::Display::RotationSource::ROTATION_SOURCE_USER);
181 EXPECT_FALSE(observer.notified()); 182 EXPECT_FALSE(observer.notified());
182 183
183 test_api()->CompleteAnimations(); 184 test_api()->CompleteAnimations();
184 EXPECT_TRUE(observer.notified()); 185 EXPECT_TRUE(observer.notified());
185 EXPECT_FALSE(test_api()->HasActiveAnimations()); 186 EXPECT_FALSE(test_api()->HasActiveAnimations());
186 animator()->RemoveScreenRotationAnimatorObserver(&observer); 187 animator()->RemoveScreenRotationAnimatorObserver(&observer);
187 } 188 }
188 189
189 TEST_F(ScreenRotationAnimatorTest, ShouldNotifyObserverOnce) { 190 TEST_F(ScreenRotationAnimatorTest, ShouldNotifyObserverOnce) {
190 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480. 191 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480.
191 if (ShellPort::Get()->IsRunningInMash()) { 192 if (Shell::GetAshConfig() == Config::MASH) {
192 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() != 193 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() !=
193 display_id()); 194 display_id());
194 return; 195 return;
195 } 196 }
196 197
197 SetDisplayRotation(display_id(), display::Display::ROTATE_0); 198 SetDisplayRotation(display_id(), display::Display::ROTATE_0);
198 AnimationObserver observer; 199 AnimationObserver observer;
199 animator()->AddScreenRotationAnimatorObserver(&observer); 200 animator()->AddScreenRotationAnimatorObserver(&observer);
200 EXPECT_FALSE(observer.notified()); 201 EXPECT_FALSE(observer.notified());
201 202
202 animator()->Rotate(display::Display::ROTATE_90, 203 animator()->Rotate(display::Display::ROTATE_90,
203 display::Display::RotationSource::ROTATION_SOURCE_USER); 204 display::Display::RotationSource::ROTATION_SOURCE_USER);
204 EXPECT_FALSE(observer.notified()); 205 EXPECT_FALSE(observer.notified());
205 206
206 animator()->Rotate(display::Display::ROTATE_180, 207 animator()->Rotate(display::Display::ROTATE_180,
207 display::Display::RotationSource::ROTATION_SOURCE_USER); 208 display::Display::RotationSource::ROTATION_SOURCE_USER);
208 EXPECT_FALSE(observer.notified()); 209 EXPECT_FALSE(observer.notified());
209 210
210 test_api()->CompleteAnimations(); 211 test_api()->CompleteAnimations();
211 EXPECT_TRUE(observer.notified()); 212 EXPECT_TRUE(observer.notified());
212 EXPECT_FALSE(test_api()->HasActiveAnimations()); 213 EXPECT_FALSE(test_api()->HasActiveAnimations());
213 animator()->RemoveScreenRotationAnimatorObserver(&observer); 214 animator()->RemoveScreenRotationAnimatorObserver(&observer);
214 } 215 }
215 216
216 TEST_F(ScreenRotationAnimatorTest, RotatesToDifferentRotation) { 217 TEST_F(ScreenRotationAnimatorTest, RotatesToDifferentRotation) {
217 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480. 218 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480.
218 if (ShellPort::Get()->IsRunningInMash()) { 219 if (Shell::GetAshConfig() == Config::MASH) {
219 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() != 220 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() !=
220 display_id()); 221 display_id());
221 return; 222 return;
222 } 223 }
223 224
224 SetDisplayRotation(display_id(), display::Display::ROTATE_0); 225 SetDisplayRotation(display_id(), display::Display::ROTATE_0);
225 animator()->Rotate(display::Display::ROTATE_90, 226 animator()->Rotate(display::Display::ROTATE_90,
226 display::Display::RotationSource::ROTATION_SOURCE_USER); 227 display::Display::RotationSource::ROTATION_SOURCE_USER);
227 EXPECT_TRUE(test_api()->HasActiveAnimations()); 228 EXPECT_TRUE(test_api()->HasActiveAnimations());
228 229
229 test_api()->CompleteAnimations(); 230 test_api()->CompleteAnimations();
230 EXPECT_FALSE(test_api()->HasActiveAnimations()); 231 EXPECT_FALSE(test_api()->HasActiveAnimations());
231 } 232 }
232 233
233 TEST_F(ScreenRotationAnimatorTest, ShouldNotRotateTheSameRotation) { 234 TEST_F(ScreenRotationAnimatorTest, ShouldNotRotateTheSameRotation) {
234 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480. 235 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480.
235 if (ShellPort::Get()->IsRunningInMash()) { 236 if (Shell::GetAshConfig() == Config::MASH) {
236 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() != 237 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() !=
237 display_id()); 238 display_id());
238 return; 239 return;
239 } 240 }
240 241
241 SetDisplayRotation(display_id(), display::Display::ROTATE_0); 242 SetDisplayRotation(display_id(), display::Display::ROTATE_0);
242 animator()->Rotate(display::Display::ROTATE_0, 243 animator()->Rotate(display::Display::ROTATE_0,
243 display::Display::RotationSource::ROTATION_SOURCE_USER); 244 display::Display::RotationSource::ROTATION_SOURCE_USER);
244 EXPECT_FALSE(test_api()->HasActiveAnimations()); 245 EXPECT_FALSE(test_api()->HasActiveAnimations());
245 } 246 }
246 247
247 // Simulates the situation that if there is a new rotation request during 248 // Simulates the situation that if there is a new rotation request during
248 // animation, it should stop the animation immediately and add the new rotation 249 // animation, it should stop the animation immediately and add the new rotation
249 // request to the |last_pending_request_|. 250 // request to the |last_pending_request_|.
250 TEST_F(ScreenRotationAnimatorTest, RotatesDuringRotation) { 251 TEST_F(ScreenRotationAnimatorTest, RotatesDuringRotation) {
251 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480. 252 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480.
252 if (ShellPort::Get()->IsRunningInMash()) { 253 if (Shell::GetAshConfig() == Config::MASH) {
253 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() != 254 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() !=
254 display_id()); 255 display_id());
255 return; 256 return;
256 } 257 }
257 258
258 SetDisplayRotation(display_id(), display::Display::ROTATE_0); 259 SetDisplayRotation(display_id(), display::Display::ROTATE_0);
259 animator()->Rotate(display::Display::ROTATE_90, 260 animator()->Rotate(display::Display::ROTATE_90,
260 display::Display::RotationSource::ROTATION_SOURCE_USER); 261 display::Display::RotationSource::ROTATION_SOURCE_USER);
261 animator()->Rotate(display::Display::ROTATE_180, 262 animator()->Rotate(display::Display::ROTATE_180,
262 display::Display::RotationSource::ROTATION_SOURCE_USER); 263 display::Display::RotationSource::ROTATION_SOURCE_USER);
263 EXPECT_TRUE(test_api()->HasActiveAnimations()); 264 EXPECT_TRUE(test_api()->HasActiveAnimations());
264 265
265 test_api()->CompleteAnimations(); 266 test_api()->CompleteAnimations();
266 EXPECT_FALSE(test_api()->HasActiveAnimations()); 267 EXPECT_FALSE(test_api()->HasActiveAnimations());
267 EXPECT_EQ(display::Display::ROTATE_180, GetDisplayRotation(display_id())); 268 EXPECT_EQ(display::Display::ROTATE_180, GetDisplayRotation(display_id()));
268 } 269 }
269 270
270 // If there are multiple requests queued during animation, it should process the 271 // If there are multiple requests queued during animation, it should process the
271 // last request and finish the rotation animation. 272 // last request and finish the rotation animation.
272 TEST_F(ScreenRotationAnimatorTest, ShouldCompleteAnimations) { 273 TEST_F(ScreenRotationAnimatorTest, ShouldCompleteAnimations) {
273 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480. 274 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480.
274 if (ShellPort::Get()->IsRunningInMash()) { 275 if (Shell::GetAshConfig() == Config::MASH) {
275 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() != 276 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() !=
276 display_id()); 277 display_id());
277 return; 278 return;
278 } 279 }
279 280
280 SetDisplayRotation(display_id(), display::Display::ROTATE_0); 281 SetDisplayRotation(display_id(), display::Display::ROTATE_0);
281 animator()->Rotate(display::Display::ROTATE_90, 282 animator()->Rotate(display::Display::ROTATE_90,
282 display::Display::RotationSource::ROTATION_SOURCE_USER); 283 display::Display::RotationSource::ROTATION_SOURCE_USER);
283 EXPECT_TRUE(test_api()->HasActiveAnimations()); 284 EXPECT_TRUE(test_api()->HasActiveAnimations());
284 285
285 animator()->Rotate(display::Display::ROTATE_180, 286 animator()->Rotate(display::Display::ROTATE_180,
286 display::Display::RotationSource::ROTATION_SOURCE_USER); 287 display::Display::RotationSource::ROTATION_SOURCE_USER);
287 EXPECT_TRUE(test_api()->HasActiveAnimations()); 288 EXPECT_TRUE(test_api()->HasActiveAnimations());
288 289
289 animator()->Rotate(display::Display::ROTATE_270, 290 animator()->Rotate(display::Display::ROTATE_270,
290 display::Display::RotationSource::ROTATION_SOURCE_USER); 291 display::Display::RotationSource::ROTATION_SOURCE_USER);
291 EXPECT_TRUE(test_api()->HasActiveAnimations()); 292 EXPECT_TRUE(test_api()->HasActiveAnimations());
292 293
293 test_api()->CompleteAnimations(); 294 test_api()->CompleteAnimations();
294 EXPECT_FALSE(test_api()->HasActiveAnimations()); 295 EXPECT_FALSE(test_api()->HasActiveAnimations());
295 EXPECT_EQ(display::Display::ROTATE_270, GetDisplayRotation(display_id())); 296 EXPECT_EQ(display::Display::ROTATE_270, GetDisplayRotation(display_id()));
296 } 297 }
297 298
298 // Test enable smooth screen rotation code path. 299 // Test enable smooth screen rotation code path.
299 TEST_F(ScreenRotationAnimatorTest, RotatesToDifferentRotationWithCopyCallback) { 300 TEST_F(ScreenRotationAnimatorTest, RotatesToDifferentRotationWithCopyCallback) {
300 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480. 301 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480.
301 if (ShellPort::Get()->IsRunningInMash()) { 302 if (Shell::GetAshConfig() == Config::MASH) {
302 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() != 303 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() !=
303 display_id()); 304 display_id());
304 return; 305 return;
305 } 306 }
306 307
307 SetDisplayRotation(display_id(), display::Display::ROTATE_0); 308 SetDisplayRotation(display_id(), display::Display::ROTATE_0);
308 base::CommandLine::ForCurrentProcess()->AppendSwitch( 309 base::CommandLine::ForCurrentProcess()->AppendSwitch(
309 switches::kAshEnableSmoothScreenRotation); 310 switches::kAshEnableSmoothScreenRotation);
310 animator()->Rotate(display::Display::ROTATE_90, 311 animator()->Rotate(display::Display::ROTATE_90,
311 display::Display::RotationSource::ROTATION_SOURCE_USER); 312 display::Display::RotationSource::ROTATION_SOURCE_USER);
312 WaitForCopyCallback(); 313 WaitForCopyCallback();
313 EXPECT_TRUE(test_api()->HasActiveAnimations()); 314 EXPECT_TRUE(test_api()->HasActiveAnimations());
314 315
315 test_api()->CompleteAnimations(); 316 test_api()->CompleteAnimations();
316 EXPECT_FALSE(test_api()->HasActiveAnimations()); 317 EXPECT_FALSE(test_api()->HasActiveAnimations());
317 } 318 }
318 319
319 // If the external display is removed, it should not crash. 320 // If the external display is removed, it should not crash.
320 TEST_F(ScreenRotationAnimatorTest, RemoveSecondaryDisplayAfterCopyCallback) { 321 TEST_F(ScreenRotationAnimatorTest, RemoveSecondaryDisplayAfterCopyCallback) {
321 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480. 322 // TODO(wutao): needs GetDisplayInfo http://crbug.com/622480.
322 if (ShellPort::Get()->IsRunningInMash()) { 323 if (Shell::GetAshConfig() == Config::MASH) {
323 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() != 324 ASSERT_TRUE(ShellPort::Get()->GetDisplayInfo(display_id()).id() !=
324 display_id()); 325 display_id());
325 return; 326 return;
326 } 327 }
327 328
328 UpdateDisplay("640x480,800x600"); 329 UpdateDisplay("640x480,800x600");
329 EXPECT_EQ(2U, display_manager()->GetNumDisplays()); 330 EXPECT_EQ(2U, display_manager()->GetNumDisplays());
330 331
331 const unsigned int primary_display_id = 332 const unsigned int primary_display_id =
332 display_manager()->GetDisplayAt(0).id(); 333 display_manager()->GetDisplayAt(0).id();
333 SetScreenRotationAnimator( 334 SetScreenRotationAnimator(
334 display_manager()->GetDisplayAt(1).id(), 335 display_manager()->GetDisplayAt(1).id(),
335 base::Bind(&ScreenRotationAnimatorTest::RemoveSecondaryDisplay, 336 base::Bind(&ScreenRotationAnimatorTest::RemoveSecondaryDisplay,
336 base::Unretained(this), "640x480")); 337 base::Unretained(this), "640x480"));
337 base::CommandLine::ForCurrentProcess()->AppendSwitch( 338 base::CommandLine::ForCurrentProcess()->AppendSwitch(
338 switches::kAshEnableSmoothScreenRotation); 339 switches::kAshEnableSmoothScreenRotation);
339 SetDisplayRotation(display_manager()->GetDisplayAt(1).id(), 340 SetDisplayRotation(display_manager()->GetDisplayAt(1).id(),
340 display::Display::ROTATE_0); 341 display::Display::ROTATE_0);
341 animator()->Rotate(display::Display::ROTATE_90, 342 animator()->Rotate(display::Display::ROTATE_90,
342 display::Display::RotationSource::ROTATION_SOURCE_USER); 343 display::Display::RotationSource::ROTATION_SOURCE_USER);
343 WaitForCopyCallback(); 344 WaitForCopyCallback();
344 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); 345 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
345 EXPECT_EQ(primary_display_id, display_manager()->GetDisplayAt(0).id()); 346 EXPECT_EQ(primary_display_id, display_manager()->GetDisplayAt(0).id());
346 } 347 }
347 348
348 } // namespace ash 349 } // namespace ash
OLDNEW
« no previous file with comments | « ash/root_window_controller_unittest.cc ('k') | ash/screen_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698