Index: content/browser/media/capture/desktop_capture_device_unittest.cc |
diff --git a/content/browser/media/capture/desktop_capture_device_unittest.cc b/content/browser/media/capture/desktop_capture_device_unittest.cc |
index 683f0603e213459c38eb1913862d7f1d1aef42f3..0c1a360e2923a54142d95e17a3823a83db1789b1 100644 |
--- a/content/browser/media/capture/desktop_capture_device_unittest.cc |
+++ b/content/browser/media/capture/desktop_capture_device_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "base/synchronization/waitable_event.h" |
#include "base/test/test_timeouts.h" |
#include "base/threading/sequenced_worker_pool.h" |
+#include "base/threading/thread.h" |
#include "base/time/time.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -132,18 +133,28 @@ class FakeScreenCapturer : public webrtc::ScreenCapturer { |
bool generate_inverted_frames_; |
}; |
+} // namespace |
+ |
class DesktopCaptureDeviceTest : public testing::Test { |
public: |
virtual void SetUp() OVERRIDE { |
worker_pool_ = new base::SequencedWorkerPool(3, "TestCaptureThread"); |
} |
+ void CreateScreenCaptureDevice(scoped_ptr<webrtc::DesktopCapturer> capturer) { |
+ capture_device_.reset(new DesktopCaptureDevice( |
+ worker_pool_->GetSequencedTaskRunner(worker_pool_->GetSequenceToken()), |
+ thread_.Pass(), |
+ capturer.Pass(), |
+ DesktopMediaID::TYPE_SCREEN)); |
+ } |
+ |
protected: |
scoped_refptr<base::SequencedWorkerPool> worker_pool_; |
+ scoped_ptr<base::Thread> thread_; |
+ scoped_ptr<DesktopCaptureDevice> capture_device_; |
}; |
-} // namespace |
- |
// There is currently no screen capturer implementation for ozone. So disable |
// the test that uses a real screen-capturer instead of FakeScreenCapturer. |
// http://crbug.com/260318 |
@@ -155,10 +166,8 @@ class DesktopCaptureDeviceTest : public testing::Test { |
TEST_F(DesktopCaptureDeviceTest, MAYBE_Capture) { |
scoped_ptr<webrtc::DesktopCapturer> capturer( |
webrtc::ScreenCapturer::Create()); |
- DesktopCaptureDevice capture_device( |
- worker_pool_->GetSequencedTaskRunner(worker_pool_->GetSequenceToken()), |
- capturer.Pass(), |
- DesktopMediaID::TYPE_SCREEN); |
+ CreateScreenCaptureDevice(capturer.Pass()); |
+ |
media::VideoCaptureFormat format; |
base::WaitableEvent done_event(false, false); |
int frame_size; |
@@ -175,10 +184,10 @@ TEST_F(DesktopCaptureDeviceTest, MAYBE_Capture) { |
capture_params.requested_format.frame_rate = kFrameRate; |
capture_params.requested_format.pixel_format = media::PIXEL_FORMAT_I420; |
capture_params.allow_resolution_change = false; |
- capture_device.AllocateAndStart( |
+ capture_device_->AllocateAndStart( |
capture_params, client.PassAs<media::VideoCaptureDevice::Client>()); |
EXPECT_TRUE(done_event.TimedWait(TestTimeouts::action_max_timeout())); |
- capture_device.StopAndDeAllocate(); |
+ capture_device_->StopAndDeAllocate(); |
EXPECT_GT(format.frame_size.width(), 0); |
EXPECT_GT(format.frame_size.height(), 0); |
@@ -194,10 +203,7 @@ TEST_F(DesktopCaptureDeviceTest, MAYBE_Capture) { |
TEST_F(DesktopCaptureDeviceTest, ScreenResolutionChangeConstantResolution) { |
FakeScreenCapturer* mock_capturer = new FakeScreenCapturer(); |
- DesktopCaptureDevice capture_device( |
- worker_pool_->GetSequencedTaskRunner(worker_pool_->GetSequenceToken()), |
- scoped_ptr<webrtc::DesktopCapturer>(mock_capturer), |
- DesktopMediaID::TYPE_SCREEN); |
+ CreateScreenCaptureDevice(scoped_ptr<webrtc::DesktopCapturer>(mock_capturer)); |
media::VideoCaptureFormat format; |
base::WaitableEvent done_event(false, false); |
@@ -217,7 +223,7 @@ TEST_F(DesktopCaptureDeviceTest, ScreenResolutionChangeConstantResolution) { |
capture_params.requested_format.pixel_format = media::PIXEL_FORMAT_I420; |
capture_params.allow_resolution_change = false; |
- capture_device.AllocateAndStart( |
+ capture_device_->AllocateAndStart( |
capture_params, client.PassAs<media::VideoCaptureDevice::Client>()); |
// Capture at least two frames, to ensure that the source frame size has |
@@ -226,7 +232,7 @@ TEST_F(DesktopCaptureDeviceTest, ScreenResolutionChangeConstantResolution) { |
done_event.Reset(); |
EXPECT_TRUE(done_event.TimedWait(TestTimeouts::action_max_timeout())); |
- capture_device.StopAndDeAllocate(); |
+ capture_device_->StopAndDeAllocate(); |
EXPECT_EQ(kTestFrameWidth1, format.frame_size.width()); |
EXPECT_EQ(kTestFrameHeight1, format.frame_size.height()); |
@@ -242,10 +248,7 @@ TEST_F(DesktopCaptureDeviceTest, ScreenResolutionChangeConstantResolution) { |
TEST_F(DesktopCaptureDeviceTest, ScreenResolutionChangeVariableResolution) { |
FakeScreenCapturer* mock_capturer = new FakeScreenCapturer(); |
- DesktopCaptureDevice capture_device( |
- worker_pool_->GetSequencedTaskRunner(worker_pool_->GetSequenceToken()), |
- scoped_ptr<webrtc::DesktopCapturer>(mock_capturer), |
- DesktopMediaID::TYPE_SCREEN); |
+ CreateScreenCaptureDevice(scoped_ptr<webrtc::DesktopCapturer>(mock_capturer)); |
media::VideoCaptureFormat format; |
base::WaitableEvent done_event(false, false); |
@@ -263,7 +266,7 @@ TEST_F(DesktopCaptureDeviceTest, ScreenResolutionChangeVariableResolution) { |
capture_params.requested_format.pixel_format = media::PIXEL_FORMAT_I420; |
capture_params.allow_resolution_change = false; |
- capture_device.AllocateAndStart( |
+ capture_device_->AllocateAndStart( |
capture_params, client.PassAs<media::VideoCaptureDevice::Client>()); |
// Capture at least three frames, to ensure that the source frame size has |
@@ -274,7 +277,7 @@ TEST_F(DesktopCaptureDeviceTest, ScreenResolutionChangeVariableResolution) { |
done_event.Reset(); |
EXPECT_TRUE(done_event.TimedWait(TestTimeouts::action_max_timeout())); |
- capture_device.StopAndDeAllocate(); |
+ capture_device_->StopAndDeAllocate(); |
EXPECT_EQ(kTestFrameWidth1, format.frame_size.width()); |
EXPECT_EQ(kTestFrameHeight1, format.frame_size.height()); |