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

Unified Diff: remoting/host/video_frame_pump_unittest.cc

Issue 1462063004: Move VideoFramePump to remoting/protocol (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « remoting/host/video_frame_pump.cc ('k') | remoting/protocol/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/video_frame_pump_unittest.cc
diff --git a/remoting/host/video_frame_pump_unittest.cc b/remoting/host/video_frame_pump_unittest.cc
deleted file mode 100644
index d6490f41a43948c7e19861b40dadd81db13c9a11..0000000000000000000000000000000000000000
--- a/remoting/host/video_frame_pump_unittest.cc
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright 2015 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_pump.h"
-
-#include "base/bind.h"
-#include "base/message_loop/message_loop.h"
-#include "base/run_loop.h"
-#include "base/single_thread_task_runner.h"
-#include "remoting/base/auto_thread.h"
-#include "remoting/base/auto_thread_task_runner.h"
-#include "remoting/codec/video_encoder.h"
-#include "remoting/codec/video_encoder_verbatim.h"
-#include "remoting/host/desktop_capturer_proxy.h"
-#include "remoting/host/fake_desktop_capturer.h"
-#include "remoting/host/host_mock_objects.h"
-#include "remoting/proto/control.pb.h"
-#include "remoting/proto/video.pb.h"
-#include "remoting/protocol/protocol_mock_objects.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
-#include "third_party/webrtc/modules/desktop_capture/screen_capturer_mock_objects.h"
-
-using ::remoting::protocol::MockVideoStub;
-
-using ::testing::_;
-using ::testing::AtLeast;
-using ::testing::DoAll;
-using ::testing::Expectation;
-using ::testing::InvokeWithoutArgs;
-using ::testing::Return;
-
-namespace remoting {
-
-namespace {
-
-ACTION(FinishSend) {
- arg1.Run();
-}
-
-scoped_ptr<webrtc::DesktopFrame> CreateNullFrame(
- webrtc::DesktopCapturer::Callback*) {
- return nullptr;
-}
-
-scoped_ptr<webrtc::DesktopFrame> CreateUnchangedFrame(
- webrtc::DesktopCapturer::Callback*) {
- const webrtc::DesktopSize kSize(800, 640);
- // updated_region() is already empty by default in new BasicDesktopFrames.
- return make_scoped_ptr(new webrtc::BasicDesktopFrame(kSize));
-}
-
-} // namespace
-
-static const int kWidth = 640;
-static const int kHeight = 480;
-
-class ThreadCheckVideoEncoder : public VideoEncoderVerbatim {
- public:
- ThreadCheckVideoEncoder(
- scoped_refptr<base::SingleThreadTaskRunner> task_runner)
- : task_runner_(task_runner) {
- }
- ~ThreadCheckVideoEncoder() override {
- EXPECT_TRUE(task_runner_->BelongsToCurrentThread());
- }
-
- scoped_ptr<VideoPacket> Encode(const webrtc::DesktopFrame& frame) override {
- return make_scoped_ptr(new VideoPacket());
- }
-
- private:
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-
- DISALLOW_COPY_AND_ASSIGN(ThreadCheckVideoEncoder);
-};
-
-class ThreadCheckDesktopCapturer : public webrtc::DesktopCapturer {
- public:
- ThreadCheckDesktopCapturer(
- scoped_refptr<base::SingleThreadTaskRunner> task_runner)
- : task_runner_(task_runner), callback_(nullptr) {}
- ~ThreadCheckDesktopCapturer() override {
- EXPECT_TRUE(task_runner_->BelongsToCurrentThread());
- }
-
- void Start(Callback* callback) override {
- EXPECT_TRUE(task_runner_->BelongsToCurrentThread());
- EXPECT_FALSE(callback_);
- EXPECT_TRUE(callback);
-
- callback_ = callback;
- }
-
- void Capture(const webrtc::DesktopRegion& rect) override {
- EXPECT_TRUE(task_runner_->BelongsToCurrentThread());
-
- scoped_ptr<webrtc::DesktopFrame> frame(
- new webrtc::BasicDesktopFrame(webrtc::DesktopSize(kWidth, kHeight)));
- frame->mutable_updated_region()->SetRect(
- webrtc::DesktopRect::MakeXYWH(0, 0, 10, 10));
- callback_->OnCaptureCompleted(frame.release());
- }
-
- private:
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
- webrtc::DesktopCapturer::Callback* callback_;
-
- DISALLOW_COPY_AND_ASSIGN(ThreadCheckDesktopCapturer);
-};
-
-class VideoFramePumpTest : public testing::Test {
- public:
- void SetUp() override;
- void TearDown() override;
-
- void StartVideoFramePump(
- scoped_ptr<webrtc::DesktopCapturer> capturer,
- scoped_ptr<VideoEncoder> encoder);
-
- protected:
- base::MessageLoop message_loop_;
- base::RunLoop run_loop_;
- scoped_refptr<AutoThreadTaskRunner> capture_task_runner_;
- scoped_refptr<AutoThreadTaskRunner> encode_task_runner_;
- scoped_refptr<AutoThreadTaskRunner> main_task_runner_;
- scoped_ptr<VideoFramePump> pump_;
-
- MockVideoStub video_stub_;
-};
-
-void VideoFramePumpTest::SetUp() {
- main_task_runner_ = new AutoThreadTaskRunner(
- message_loop_.task_runner(), run_loop_.QuitClosure());
- capture_task_runner_ = AutoThread::Create("capture", main_task_runner_);
- encode_task_runner_ = AutoThread::Create("encode", main_task_runner_);
-}
-
-void VideoFramePumpTest::TearDown() {
- pump_.reset();
-
- // Release the task runners, so that the test can quit.
- capture_task_runner_ = nullptr;
- encode_task_runner_ = nullptr;
- main_task_runner_ = nullptr;
-
- // Run the MessageLoop until everything has torn down.
- run_loop_.Run();
-}
-
-// This test mocks capturer, encoder and network layer to simulate one capture
-// cycle.
-TEST_F(VideoFramePumpTest, StartAndStop) {
- scoped_ptr<ThreadCheckDesktopCapturer> capturer(
- new ThreadCheckDesktopCapturer(capture_task_runner_));
- scoped_ptr<ThreadCheckVideoEncoder> encoder(
- new ThreadCheckVideoEncoder(encode_task_runner_));
-
- base::RunLoop run_loop;
-
- // When the first ProcessVideoPacket is received we stop the VideoFramePump.
- EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _))
- .WillOnce(DoAll(
- FinishSend(),
- InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)))
- .RetiresOnSaturation();
-
- // Start video frame capture.
- pump_.reset(new VideoFramePump(encode_task_runner_,
- make_scoped_ptr(new DesktopCapturerProxy(
- capture_task_runner_, capturer.Pass())),
- encoder.Pass(), &video_stub_));
-
- // Run MessageLoop until the first frame is received.
- run_loop.Run();
-}
-
-// Tests that the pump handles null frames returned by the capturer.
-TEST_F(VideoFramePumpTest, NullFrame) {
- scoped_ptr<FakeDesktopCapturer> capturer(new FakeDesktopCapturer);
- scoped_ptr<MockVideoEncoder> encoder(new MockVideoEncoder);
-
- base::RunLoop run_loop;
-
- // Set up the capturer to return null frames.
- capturer->set_frame_generator(base::Bind(&CreateNullFrame));
-
- // Expect that the VideoEncoder::Encode() method is never called.
- EXPECT_CALL(*encoder, EncodePtr(_)).Times(0);
-
- // When the first ProcessVideoPacket is received we stop the VideoFramePump.
- EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _))
- .WillOnce(DoAll(FinishSend(),
- InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)))
- .RetiresOnSaturation();
-
- // Start video frame capture.
- pump_.reset(new VideoFramePump(encode_task_runner_,
- make_scoped_ptr(new DesktopCapturerProxy(
- capture_task_runner_, capturer.Pass())),
- encoder.Pass(), &video_stub_));
-
- // Run MessageLoop until the first frame is received..
- run_loop.Run();
-}
-
-// Tests how the pump handles unchanged frames returned by the capturer.
-TEST_F(VideoFramePumpTest, UnchangedFrame) {
- scoped_ptr<FakeDesktopCapturer> capturer(new FakeDesktopCapturer);
- scoped_ptr<MockVideoEncoder> encoder(new MockVideoEncoder);
-
- base::RunLoop run_loop;
-
- // Set up the capturer to return unchanged frames.
- capturer->set_frame_generator(base::Bind(&CreateUnchangedFrame));
-
- // Expect that the VideoEncoder::Encode() method is called.
- EXPECT_CALL(*encoder, EncodePtr(_)).WillRepeatedly(Return(nullptr));
-
- // When the first ProcessVideoPacket is received we stop the VideoFramePump.
- // TODO(wez): Verify that the generated packet has no content here.
- EXPECT_CALL(video_stub_, ProcessVideoPacketPtr(_, _))
- .WillOnce(DoAll(FinishSend(),
- InvokeWithoutArgs(&run_loop, &base::RunLoop::Quit)))
- .RetiresOnSaturation();
-
- // Start video frame capture.
- pump_.reset(new VideoFramePump(encode_task_runner_,
- make_scoped_ptr(new DesktopCapturerProxy(
- capture_task_runner_, capturer.Pass())),
- encoder.Pass(), &video_stub_));
-
- // Run MessageLoop until the first frame is received..
- run_loop.Run();
-}
-
-} // namespace remoting
« no previous file with comments | « remoting/host/video_frame_pump.cc ('k') | remoting/protocol/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698