summaryrefslogtreecommitdiffstats
path: root/ash/wm/video_detector_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ash/wm/video_detector_unittest.cc')
-rw-r--r--ash/wm/video_detector_unittest.cc196
1 files changed, 0 insertions, 196 deletions
diff --git a/ash/wm/video_detector_unittest.cc b/ash/wm/video_detector_unittest.cc
deleted file mode 100644
index 0b82208..0000000
--- a/ash/wm/video_detector_unittest.cc
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/wm/video_detector.h"
-
-#include "ash/shell.h"
-#include "ash/test/aura_shell_test_base.h"
-#include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/time.h"
-#include "third_party/skia/include/core/SkColor.h"
-#include "ui/aura/client/window_types.h"
-#include "ui/aura/root_window.h"
-#include "ui/aura/test/test_windows.h"
-#include "ui/aura/window.h"
-#include "ui/gfx/rect.h"
-
-namespace ash {
-namespace test {
-
-// Implementation that just counts the number of times we've been told that a
-// video is playing.
-class TestVideoDetectorObserver : public VideoDetectorObserver {
- public:
- TestVideoDetectorObserver() : num_invocations_(0) {}
-
- int num_invocations() const { return num_invocations_; }
- void reset_stats() { num_invocations_ = 0; }
-
- // VideoDetectorObserver implementation.
- virtual void OnVideoDetected() OVERRIDE { num_invocations_++; }
-
- private:
- // Number of times that OnVideoDetected() has been called.
- int num_invocations_;
-
- DISALLOW_COPY_AND_ASSIGN(TestVideoDetectorObserver);
-};
-
-class VideoDetectorTest : public AuraShellTestBase {
- public:
- VideoDetectorTest() {}
- virtual ~VideoDetectorTest() {}
-
- void SetUp() OVERRIDE {
- AuraShellTestBase::SetUp();
- observer_.reset(new TestVideoDetectorObserver);
- detector_ = Shell::GetInstance()->video_detector();
- detector_->AddObserver(observer_.get());
-
- now_ = base::TimeTicks::Now();
- detector_->set_now_for_test(now_);
- }
-
- protected:
- // Move |detector_|'s idea of the current time forward by |delta|.
- void AdvanceTime(base::TimeDelta delta) {
- now_ += delta;
- detector_->set_now_for_test(now_);
- }
-
- VideoDetector* detector_; // not owned
-
- scoped_ptr<TestVideoDetectorObserver> observer_;
-
- base::TimeTicks now_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(VideoDetectorTest);
-};
-
-TEST_F(VideoDetectorTest, Basic) {
- gfx::Rect window_bounds(gfx::Point(), gfx::Size(1024, 768));
- scoped_ptr<aura::Window> window(
- aura::test::CreateTestWindow(SK_ColorRED, 12345, window_bounds, NULL));
-
- // Send enough updates, but make them be too small to trigger detection.
- gfx::Rect update_region(
- gfx::Point(),
- gfx::Size(VideoDetector::kMinUpdateWidth - 1,
- VideoDetector::kMinUpdateHeight));
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(0, observer_->num_invocations());
-
- // Send not-quite-enough adaquately-sized updates.
- observer_->reset_stats();
- AdvanceTime(base::TimeDelta::FromSeconds(2));
- update_region.set_size(
- gfx::Size(VideoDetector::kMinUpdateWidth,
- VideoDetector::kMinUpdateHeight));
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond - 1; ++i)
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(0, observer_->num_invocations());
-
- // We should get notified after the next update, but not in response to
- // additional updates.
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
-
- // Spread out the frames over two seconds; we shouldn't detect video.
- observer_->reset_stats();
- AdvanceTime(base::TimeDelta::FromSeconds(2));
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond - 1; ++i)
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- AdvanceTime(base::TimeDelta::FromSeconds(1));
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond - 1; ++i)
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(0, observer_->num_invocations());
-}
-
-TEST_F(VideoDetectorTest, WindowNotVisible) {
- gfx::Rect window_bounds(gfx::Point(), gfx::Size(1024, 768));
- scoped_ptr<aura::Window> window(
- aura::test::CreateTestWindow(SK_ColorRED, 12345, window_bounds, NULL));
- gfx::Rect update_region(
- gfx::Point(),
- gfx::Size(VideoDetector::kMinUpdateWidth,
- VideoDetector::kMinUpdateHeight));
-
- // We shouldn't report video that's played in a hidden window.
- window->Hide();
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(0, observer_->num_invocations());
-
- // Make the window visible and send more updates.
- observer_->reset_stats();
- AdvanceTime(base::TimeDelta::FromSeconds(2));
- window->Show();
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
-
- // We also shouldn't report video in a window that's fully offscreen.
- observer_->reset_stats();
- AdvanceTime(base::TimeDelta::FromSeconds(2));
- gfx::Rect offscreen_bounds(
- gfx::Point(aura::RootWindow::GetInstance()->bounds().width(), 0),
- window_bounds.size());
- window->SetBounds(offscreen_bounds);
- ASSERT_EQ(offscreen_bounds, window->bounds());
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(0, observer_->num_invocations());
-}
-
-TEST_F(VideoDetectorTest, MultipleWindows) {
- // Create two windows.
- gfx::Rect window_bounds(gfx::Point(), gfx::Size(1024, 768));
- scoped_ptr<aura::Window> window1(
- aura::test::CreateTestWindow(SK_ColorRED, 12345, window_bounds, NULL));
- scoped_ptr<aura::Window> window2(
- aura::test::CreateTestWindow(SK_ColorBLUE, 23456, window_bounds, NULL));
-
- // Even if there's video playing in both, the observer should only receive a
- // single notification.
- gfx::Rect update_region(
- gfx::Point(),
- gfx::Size(VideoDetector::kMinUpdateWidth,
- VideoDetector::kMinUpdateHeight));
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
- detector_->OnWindowPaintScheduled(window1.get(), update_region);
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
- detector_->OnWindowPaintScheduled(window2.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
-}
-
-// Test that the observer receives repeated notifications.
-TEST_F(VideoDetectorTest, RepeatedNotifications) {
- gfx::Rect window_bounds(gfx::Point(), gfx::Size(1024, 768));
- scoped_ptr<aura::Window> window(
- aura::test::CreateTestWindow(SK_ColorRED, 12345, window_bounds, NULL));
-
- gfx::Rect update_region(
- gfx::Point(),
- gfx::Size(VideoDetector::kMinUpdateWidth,
- VideoDetector::kMinUpdateHeight));
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
-
- // Let enough time pass that a second notification should be sent.
- observer_->reset_stats();
- AdvanceTime(base::TimeDelta::FromSeconds(
- static_cast<int64>(VideoDetector::kNotifyIntervalSec + 1)));
- for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
- detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
-}
-
-} // namespace test
-} // namespace ash