Index: remoting/host/video_frame_capturer_unittest.cc |
diff --git a/remoting/host/video_frame_capturer_unittest.cc b/remoting/host/video_frame_capturer_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4e857dfbe11bd349ae04cda3f0bd348d01e51add |
--- /dev/null |
+++ b/remoting/host/video_frame_capturer_unittest.cc |
@@ -0,0 +1,86 @@ |
+// 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 "remoting/host/video_frame_capturer.h" |
+ |
+#include "base/bind.h" |
+#if defined(OS_MACOSX) |
+#include "base/mac/mac_util.h" |
+#endif // defined(OS_MACOSX) |
+#include "remoting/base/capture_data.h" |
+#include "remoting/host/host_mock_objects.h" |
+#include "remoting/protocol/protocol_mock_objects.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace remoting { |
+ |
+namespace { |
+ |
+bool IsOsSupported() { |
+#if defined(OS_MACOSX) |
+ // Verify that the OS is at least Snow Leopard (10.6). |
+ // Chromoting doesn't support 10.5 or earlier. |
+ return base::mac::IsOSSnowLeopardOrLater(); |
+#else |
+ return true; |
+#endif |
+} |
+ |
+void IgnoreCursorShapeChanged(scoped_ptr<protocol::CursorShapeInfo> info) { |
+} |
+ |
+} // namespace |
+ |
+MATCHER(DirtyRegionIsNonEmptyRect, "") { |
+ const SkRegion& dirty_region = arg->dirty_region(); |
+ const SkIRect& dirty_region_bounds = dirty_region.getBounds(); |
+ if (dirty_region_bounds.isEmpty()) { |
+ return false; |
+ } |
+ return dirty_region == SkRegion(dirty_region_bounds); |
+} |
+ |
+class VideoFrameCapturerTest : public testing::Test { |
+ protected: |
+ virtual void SetUp() OVERRIDE { |
+ capturer_.reset(VideoFrameCapturer::Create()); |
+ } |
+ |
+ scoped_ptr<VideoFrameCapturer> capturer_; |
+ MockCaptureCompletedCallback capture_completed_callback_; |
+}; |
+ |
+TEST_F(VideoFrameCapturerTest, StartCapturer) { |
+ if (!IsOsSupported()) { |
+ return; |
+ } |
+ |
+ capturer_->Start(base::Bind(&IgnoreCursorShapeChanged)); |
+ capturer_->Stop(); |
+} |
+ |
+#if defined(OS_MACOSX) |
+#define MAYBE_Capture DISABLED_Capture |
+#else |
+#define MAYBE_Capture Capture |
+#endif |
+ |
+TEST_F(VideoFrameCapturerTest, MAYBE_Capture) { |
+ if (!IsOsSupported()) { |
+ return; |
+ } |
+ |
+ // Assume that Start() treats the screen as invalid initially. |
+ EXPECT_CALL(capture_completed_callback_, |
+ CaptureCompletedPtr(DirtyRegionIsNonEmptyRect())); |
+ |
+ capturer_->Start(base::Bind(&IgnoreCursorShapeChanged)); |
+ capturer_->CaptureInvalidRegion(base::Bind( |
+ &MockCaptureCompletedCallback::CaptureCompleted, |
+ base::Unretained(&capture_completed_callback_))); |
+ capturer_->Stop(); |
+} |
+ |
+} // namespace remoting |