OLD | NEW |
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 "ash/wm/video_detector.h" | 5 #include "ash/wm/video_detector.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/window_state.h" | 9 #include "ash/wm/window_state.h" |
10 #include "ash/wm/wm_event.h" | 10 #include "ash/wm/wm_event.h" |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 // Test that the observer receives a true value when the window is fullscreen. | 277 // Test that the observer receives a true value when the window is fullscreen. |
278 TEST_F(VideoDetectorTest, FullscreenWindow) { | 278 TEST_F(VideoDetectorTest, FullscreenWindow) { |
279 if (!SupportsMultipleDisplays()) | 279 if (!SupportsMultipleDisplays()) |
280 return; | 280 return; |
281 | 281 |
282 UpdateDisplay("1024x768,1024x768"); | 282 UpdateDisplay("1024x768,1024x768"); |
283 | 283 |
284 const gfx::Rect kLeftBounds(gfx::Point(), gfx::Size(1024, 768)); | 284 const gfx::Rect kLeftBounds(gfx::Point(), gfx::Size(1024, 768)); |
285 scoped_ptr<aura::Window> window( | 285 scoped_ptr<aura::Window> window( |
286 CreateTestWindowInShell(SK_ColorRED, 12345, kLeftBounds)); | 286 CreateTestWindowInShell(SK_ColorRED, 12345, kLeftBounds)); |
287 wm::WindowState window_state(window.get()); | 287 wm::WindowState* window_state = wm::GetWindowState(window.get()); |
288 const wm::WMEvent toggle_fullscreen_event(wm::WM_EVENT_TOGGLE_FULLSCREEN); | 288 const wm::WMEvent toggle_fullscreen_event(wm::WM_EVENT_TOGGLE_FULLSCREEN); |
289 window_state.OnWMEvent(&toggle_fullscreen_event); | 289 window_state->OnWMEvent(&toggle_fullscreen_event); |
290 ASSERT_TRUE(window_state.IsFullscreen()); | 290 ASSERT_TRUE(window_state->IsFullscreen()); |
291 window->Focus(); | 291 window->Focus(); |
292 const gfx::Rect kUpdateRegion( | 292 const gfx::Rect kUpdateRegion( |
293 gfx::Point(), | 293 gfx::Point(), |
294 gfx::Size(VideoDetector::kMinUpdateWidth, | 294 gfx::Size(VideoDetector::kMinUpdateWidth, |
295 VideoDetector::kMinUpdateHeight)); | 295 VideoDetector::kMinUpdateHeight)); |
296 for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i) | 296 for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i) |
297 detector_->OnWindowPaintScheduled(window.get(), kUpdateRegion); | 297 detector_->OnWindowPaintScheduled(window.get(), kUpdateRegion); |
298 EXPECT_EQ(1, observer_->num_invocations()); | 298 EXPECT_EQ(1, observer_->num_invocations()); |
299 EXPECT_EQ(1, observer_->num_fullscreens()); | 299 EXPECT_EQ(1, observer_->num_fullscreens()); |
300 EXPECT_EQ(0, observer_->num_not_fullscreens()); | 300 EXPECT_EQ(0, observer_->num_not_fullscreens()); |
301 | 301 |
302 // Make the first window non-fullscreen and open a second fullscreen window on | 302 // Make the first window non-fullscreen and open a second fullscreen window on |
303 // a different desktop. | 303 // a different desktop. |
304 window_state.OnWMEvent(&toggle_fullscreen_event); | 304 window_state->OnWMEvent(&toggle_fullscreen_event); |
305 ASSERT_FALSE(window_state.IsFullscreen()); | 305 ASSERT_FALSE(window_state->IsFullscreen()); |
306 const gfx::Rect kRightBounds(gfx::Point(1024, 0), gfx::Size(1024, 768)); | 306 const gfx::Rect kRightBounds(gfx::Point(1024, 0), gfx::Size(1024, 768)); |
307 scoped_ptr<aura::Window> other_window( | 307 scoped_ptr<aura::Window> other_window( |
308 CreateTestWindowInShell(SK_ColorBLUE, 6789, kRightBounds)); | 308 CreateTestWindowInShell(SK_ColorBLUE, 6789, kRightBounds)); |
309 wm::WindowState other_window_state(other_window.get()); | 309 wm::WindowState* other_window_state = wm::GetWindowState(other_window.get()); |
310 other_window_state.OnWMEvent(&toggle_fullscreen_event); | 310 other_window_state->OnWMEvent(&toggle_fullscreen_event); |
311 ASSERT_TRUE(other_window_state.IsFullscreen()); | 311 ASSERT_TRUE(other_window_state->IsFullscreen()); |
312 | 312 |
313 // When video is detected in the first (now non-fullscreen) window, fullscreen | 313 // When video is detected in the first (now non-fullscreen) window, fullscreen |
314 // video should still be reported due to the second window being fullscreen. | 314 // video should still be reported due to the second window being fullscreen. |
315 // This avoids situations where non-fullscreen video could be reported when | 315 // This avoids situations where non-fullscreen video could be reported when |
316 // multiple videos are playing in fullscreen and non-fullscreen windows. | 316 // multiple videos are playing in fullscreen and non-fullscreen windows. |
317 observer_->reset_stats(); | 317 observer_->reset_stats(); |
318 AdvanceTime(base::TimeDelta::FromSeconds(2)); | 318 AdvanceTime(base::TimeDelta::FromSeconds(2)); |
319 for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i) | 319 for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i) |
320 detector_->OnWindowPaintScheduled(window.get(), kUpdateRegion); | 320 detector_->OnWindowPaintScheduled(window.get(), kUpdateRegion); |
321 EXPECT_EQ(1, observer_->num_invocations()); | 321 EXPECT_EQ(1, observer_->num_invocations()); |
322 EXPECT_EQ(1, observer_->num_fullscreens()); | 322 EXPECT_EQ(1, observer_->num_fullscreens()); |
323 EXPECT_EQ(0, observer_->num_not_fullscreens()); | 323 EXPECT_EQ(0, observer_->num_not_fullscreens()); |
324 | 324 |
325 // Make the second window non-fullscreen and check that the next video report | 325 // Make the second window non-fullscreen and check that the next video report |
326 // is non-fullscreen. | 326 // is non-fullscreen. |
327 other_window_state.OnWMEvent(&toggle_fullscreen_event); | 327 other_window_state->OnWMEvent(&toggle_fullscreen_event); |
328 ASSERT_FALSE(other_window_state.IsFullscreen()); | 328 ASSERT_FALSE(other_window_state->IsFullscreen()); |
329 observer_->reset_stats(); | 329 observer_->reset_stats(); |
330 AdvanceTime(base::TimeDelta::FromSeconds(2)); | 330 AdvanceTime(base::TimeDelta::FromSeconds(2)); |
331 for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i) | 331 for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i) |
332 detector_->OnWindowPaintScheduled(window.get(), kUpdateRegion); | 332 detector_->OnWindowPaintScheduled(window.get(), kUpdateRegion); |
333 EXPECT_EQ(1, observer_->num_invocations()); | 333 EXPECT_EQ(1, observer_->num_invocations()); |
334 EXPECT_EQ(0, observer_->num_fullscreens()); | 334 EXPECT_EQ(0, observer_->num_fullscreens()); |
335 EXPECT_EQ(1, observer_->num_not_fullscreens()); | 335 EXPECT_EQ(1, observer_->num_not_fullscreens()); |
336 } | 336 } |
337 | 337 |
338 } // namespace test | 338 } // namespace test |
339 } // namespace ash | 339 } // namespace ash |
OLD | NEW |