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

Side by Side Diff: media/video/capture/screen/screen_capture_device_unittest.cc

Issue 13983010: Use webrtc::DesktopCapturer for screen capturer implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "media/video/capture/screen/screen_capture_device.h" 5 #include "media/video/capture/screen/screen_capture_device.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/sequenced_task_runner.h" 8 #include "base/sequenced_task_runner.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
11 #include "base/threading/sequenced_worker_pool.h" 11 #include "base/threading/sequenced_worker_pool.h"
12 #include "base/time.h" 12 #include "base/time.h"
13 #include "media/video/capture/screen/screen_capture_data.h"
14 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
16 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
16 17
17 using ::testing::_; 18 using ::testing::_;
18 using ::testing::DoAll; 19 using ::testing::DoAll;
19 using ::testing::InvokeWithoutArgs; 20 using ::testing::InvokeWithoutArgs;
20 using ::testing::SaveArg; 21 using ::testing::SaveArg;
21 22
22 namespace media { 23 namespace media {
23 24
24 namespace { 25 namespace {
25 26
(...skipping 18 matching lines...) Expand all
44 bool flip_horiz)); 45 bool flip_horiz));
45 MOCK_METHOD2(OnIncomingCapturedVideoFrame, 46 MOCK_METHOD2(OnIncomingCapturedVideoFrame,
46 void(const scoped_refptr<media::VideoFrame>& frame, 47 void(const scoped_refptr<media::VideoFrame>& frame,
47 base::Time timestamp)); 48 base::Time timestamp));
48 }; 49 };
49 50
50 // TODO(sergeyu): Move this to a separate file where it can be reused. 51 // TODO(sergeyu): Move this to a separate file where it can be reused.
51 class FakeScreenCapturer : public ScreenCapturer { 52 class FakeScreenCapturer : public ScreenCapturer {
52 public: 53 public:
53 FakeScreenCapturer() 54 FakeScreenCapturer()
54 : delegate_(NULL), 55 : callback_(NULL),
55 frame_index_(0) { 56 frame_index_(0) {
56 buffer_.reset(new uint8[kBufferSize]);
57 frames_[0] = new ScreenCaptureData(
58 buffer_.get(), kTestFrameWidth1 * ScreenCaptureData::kBytesPerPixel,
59 SkISize::Make(kTestFrameWidth1, kTestFrameHeight1));
60 frames_[1] = new ScreenCaptureData(
61 buffer_.get(), kTestFrameWidth2 * ScreenCaptureData::kBytesPerPixel,
62 SkISize::Make(kTestFrameWidth2, kTestFrameHeight2));
63 } 57 }
64 virtual ~FakeScreenCapturer() {} 58 virtual ~FakeScreenCapturer() {}
65 59
66 // VideoFrameCapturer interface. 60 // VideoFrameCapturer interface.
67 virtual void Start(Delegate* delegate) OVERRIDE { 61 virtual void Start(Callback* callback) OVERRIDE {
68 delegate_ = delegate; 62 callback_ = callback;
69 } 63 }
70 virtual void CaptureFrame() OVERRIDE { 64
71 scoped_refptr<ScreenCaptureData> frame = 65 virtual void Capture(const webrtc::DesktopRegion& region) OVERRIDE {
72 frames_[frame_index_ % arraysize(frames_)]; 66 webrtc::DesktopSize size;
67 if (frame_index_ % 2 == 0) {
68 size = webrtc::DesktopSize(kTestFrameWidth1, kTestFrameHeight1);
69 } else {
70 size = webrtc::DesktopSize(kTestFrameWidth2, kTestFrameHeight2);
71 }
73 frame_index_++; 72 frame_index_++;
74 delegate_->OnCaptureCompleted(frame); 73 callback_->OnCaptureCompleted(new webrtc::BasicDesktopFrame(size));
74 }
75
76 virtual void SetMouseShapeObserver(
77 MouseShapeObserver* mouse_shape_observer) OVERRIDE {
75 } 78 }
76 79
77 private: 80 private:
78 Delegate* delegate_; 81 Callback* callback_;
79 scoped_ptr<uint8[]> buffer_;
80 scoped_refptr<ScreenCaptureData> frames_[2];
81 int frame_index_; 82 int frame_index_;
82 }; 83 };
83 84
84 class ScreenCaptureDeviceTest : public testing::Test { 85 class ScreenCaptureDeviceTest : public testing::Test {
85 public: 86 public:
86 virtual void SetUp() OVERRIDE { 87 virtual void SetUp() OVERRIDE {
87 worker_pool_ = new base::SequencedWorkerPool(3, "TestCaptureThread"); 88 worker_pool_ = new base::SequencedWorkerPool(3, "TestCaptureThread");
88 } 89 }
89 90
90 protected: 91 protected:
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 EXPECT_EQ(kTestFrameWidth1, caps.width); 162 EXPECT_EQ(kTestFrameWidth1, caps.width);
162 EXPECT_EQ(kTestFrameHeight1, caps.height); 163 EXPECT_EQ(kTestFrameHeight1, caps.height);
163 EXPECT_EQ(kFrameRate, caps.frame_rate); 164 EXPECT_EQ(kFrameRate, caps.frame_rate);
164 EXPECT_EQ(VideoCaptureCapability::kARGB, caps.color); 165 EXPECT_EQ(VideoCaptureCapability::kARGB, caps.color);
165 EXPECT_FALSE(caps.interlaced); 166 EXPECT_FALSE(caps.interlaced);
166 167
167 EXPECT_EQ(caps.width * caps.height * 4, frame_size); 168 EXPECT_EQ(caps.width * caps.height * 4, frame_size);
168 } 169 }
169 170
170 } // namespace media 171 } // namespace media
OLDNEW
« no previous file with comments | « media/video/capture/screen/screen_capture_device.cc ('k') | media/video/capture/screen/screen_capture_frame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698