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

Unified Diff: ash/wm/video_detector_unittest.cc

Issue 10905026: Add is_fullscreen to video updates (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: ash/wm/video_detector_unittest.cc
diff --git a/ash/wm/video_detector_unittest.cc b/ash/wm/video_detector_unittest.cc
index 0730ee7b7e50968ca9b08da0b23939667fa989c7..01688e640893881a41b8ab4aabb512bab3034d1f 100644
--- a/ash/wm/video_detector_unittest.cc
+++ b/ash/wm/video_detector_unittest.cc
@@ -6,6 +6,7 @@
#include "ash/shell.h"
#include "ash/test/ash_test_base.h"
+#include "ash/wm/mock_video_detector_observer.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/time.h"
@@ -16,28 +17,11 @@
#include "ui/aura/window.h"
#include "ui/gfx/rect.h"
+using ::testing::StrictMock;
+
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 AshTestBase {
public:
VideoDetectorTest() {}
@@ -45,7 +29,6 @@ class VideoDetectorTest : public AshTestBase {
virtual void SetUp() OVERRIDE {
AshTestBase::SetUp();
- observer_.reset(new TestVideoDetectorObserver);
detector_ = Shell::GetInstance()->video_detector();
detector_->AddObserver(observer_.get());
@@ -67,7 +50,7 @@ class VideoDetectorTest : public AshTestBase {
VideoDetector* detector_; // not owned
- scoped_ptr<TestVideoDetectorObserver> observer_;
+ StrictMock<MockVideoDetectorObserver> observer_;
base::TimeTicks now_;
@@ -87,34 +70,33 @@ TEST_F(VideoDetectorTest, Basic) {
VideoDetector::kMinUpdateHeight));
for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(0, observer_->num_invocations());
+ EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer_));
// 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());
+ Mock::VerifyAndClearExpectations(&observer_);
// We should get notified after the next update, but not in response to
// additional updates.
+ observer_.ExpectOnVideoDetected(false);
detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
+ Mock::VerifyAndClearExpectations(&observer_);
+ observer_.ExpectOnVideoDetected(false);
detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
+ Mock::VerifyAndClearExpectations(&observer_);
// 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) {
@@ -134,18 +116,17 @@ TEST_F(VideoDetectorTest, WindowNotVisible) {
VideoDetector::kMinUpdateHeight));
for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(0, observer_->num_invocations());
+ Mock::VerifyAndClearExpectations(&observer_);
// Make the window visible and send more updates.
- observer_->reset_stats();
AdvanceTime(base::TimeDelta::FromSeconds(2));
window->Show();
+ observer_.ExpectOnVideoDetected(false);
for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
+ Mock::VerifyAndClearExpectations(&observer_);
// 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(Shell::GetPrimaryRootWindow()->bounds().width(), 0),
@@ -154,7 +135,6 @@ TEST_F(VideoDetectorTest, WindowNotVisible) {
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) {
@@ -171,11 +151,11 @@ TEST_F(VideoDetectorTest, MultipleWindows) {
gfx::Point(),
gfx::Size(VideoDetector::kMinUpdateWidth,
VideoDetector::kMinUpdateHeight));
+ observer_.ExpectOnVideoDetected(false);
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.
@@ -188,17 +168,33 @@ TEST_F(VideoDetectorTest, RepeatedNotifications) {
gfx::Point(),
gfx::Size(VideoDetector::kMinUpdateWidth,
VideoDetector::kMinUpdateHeight));
+ observer_.ExpectOnVideoDetected(false);
for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
detector_->OnWindowPaintScheduled(window.get(), update_region);
- EXPECT_EQ(1, observer_->num_invocations());
+ Mock::VerifyAndClearExpectations(&observer_);
// Let enough time pass that a second notification should be sent.
- observer_->reset_stats();
+ observer_.ExpectOnVideoDetected(false);
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());
+}
+
+// Test that the observer receives a true value when the window is fullscreen.
+TEST_F(VideoDetectorTest, FullscreenWindow) {
+ gfx::Rect window_bounds(gfx::Point(), gfx::Size(1024, 768));
+ scoped_ptr<aura::Window> window(
+ aura::test::CreateTestWindow(SK_ColorRED, 12345, window_bounds, NULL));
+ window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
+
+ gfx::Rect update_region(
+ gfx::Point(),
+ gfx::Size(VideoDetector::kMinUpdateWidth,
+ VideoDetector::kMinUpdateHeight));
+ observer_.ExpectOnVideoDetected(true);
+ for (int i = 0; i < VideoDetector::kMinFramesPerSecond; ++i)
+ detector_->OnWindowPaintScheduled(window.get(), update_region);
}
} // namespace test

Powered by Google App Engine
This is Rietveld 408576698