| Index: remoting/protocol/connection_unittest.cc
|
| diff --git a/remoting/protocol/connection_unittest.cc b/remoting/protocol/connection_unittest.cc
|
| index 1262435695bf60d661a78f9ef7eb623814054769..9f35abdf746c50c7cc9794eaef5b67b04ad801d1 100644
|
| --- a/remoting/protocol/connection_unittest.cc
|
| +++ b/remoting/protocol/connection_unittest.cc
|
| @@ -15,10 +15,13 @@
|
| #include "remoting/protocol/ice_connection_to_host.h"
|
| #include "remoting/protocol/protocol_mock_objects.h"
|
| #include "remoting/protocol/transport_context.h"
|
| +#include "remoting/protocol/video_stream.h"
|
| #include "remoting/protocol/webrtc_connection_to_client.h"
|
| #include "remoting/protocol/webrtc_connection_to_host.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
|
| +#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
|
|
|
| using ::testing::_;
|
| using ::testing::InvokeWithoutArgs;
|
| @@ -57,6 +60,29 @@ class MockConnectionToHostEventCallback
|
| const TransportRoute& route));
|
| };
|
|
|
| +class TestScreenCapturer : public webrtc::DesktopCapturer {
|
| + public:
|
| + TestScreenCapturer() {}
|
| + ~TestScreenCapturer() override {}
|
| +
|
| + // webrtc::DesktopCapturer interface.
|
| + void Start(Callback* callback) override {
|
| + callback_ = callback;
|
| + }
|
| + void Capture(const webrtc::DesktopRegion& region) override {
|
| + // Return black 10x10 frame.
|
| + scoped_ptr<webrtc::DesktopFrame> frame(
|
| + new webrtc::BasicDesktopFrame(webrtc::DesktopSize(100, 100)));
|
| + memset(frame->data(), 0, frame->stride() * frame->size().height());
|
| + frame->mutable_updated_region()->SetRect(
|
| + webrtc::DesktopRect::MakeSize(frame->size()));
|
| + callback_->OnCaptureCompleted(frame.release());
|
| + }
|
| +
|
| + private:
|
| + Callback* callback_ = nullptr;
|
| +};
|
| +
|
| } // namespace
|
|
|
| class ConnectionTest : public testing::Test,
|
| @@ -65,14 +91,16 @@ class ConnectionTest : public testing::Test,
|
| ConnectionTest() {}
|
|
|
| protected:
|
| + bool is_using_webrtc() { return GetParam(); }
|
| +
|
| void SetUp() override {
|
| // Create fake sessions.
|
| host_session_ = new FakeSession();
|
| owned_client_session_.reset(new FakeSession());
|
| client_session_ = owned_client_session_.get();
|
|
|
| - // Create Connection objects
|
| - if (GetParam()) {
|
| + // Create Connection objects.
|
| + if (is_using_webrtc()) {
|
| host_connection_.reset(new WebrtcConnectionToClient(
|
| make_scoped_ptr(host_session_),
|
| TransportContext::ForTests(protocol::TransportRole::SERVER)));
|
| @@ -248,5 +276,41 @@ TEST_P(ConnectionTest, Events) {
|
| run_loop.Run();
|
| }
|
|
|
| +TEST_P(ConnectionTest, Video) {
|
| + Connect();
|
| +
|
| + scoped_ptr<VideoStream> video_stream = host_connection_->StartVideoStream(
|
| + make_scoped_ptr(new TestScreenCapturer()));
|
| +
|
| + base::RunLoop run_loop;
|
| +
|
| + // Expect frames to be passed to FrameConsumer when WebRTC is used, or to
|
| + // VideoStub otherwise.
|
| + if (is_using_webrtc()) {
|
| + client_video_renderer_.GetFrameConsumer()->set_on_frame_callback(
|
| + base::Bind(&base::RunLoop::Quit, base::Unretained(&run_loop)));
|
| + } else {
|
| + client_video_renderer_.GetVideoStub()->set_on_frame_callback(
|
| + base::Bind(&base::RunLoop::Quit, base::Unretained(&run_loop)));
|
| + }
|
| +
|
| + run_loop.Run();
|
| +
|
| + if (is_using_webrtc()) {
|
| + EXPECT_EQ(
|
| + client_video_renderer_.GetFrameConsumer()->received_frames().size(),
|
| + 1U);
|
| + EXPECT_EQ(client_video_renderer_.GetVideoStub()->received_packets().size(),
|
| + 0U);
|
| + } else {
|
| + EXPECT_EQ(
|
| + client_video_renderer_.GetFrameConsumer()->received_frames().size(),
|
| + 0U);
|
| + EXPECT_EQ(client_video_renderer_.GetVideoStub()->received_packets().size(),
|
| + 1U);
|
| + }
|
| +
|
| +}
|
| +
|
| } // namespace protocol
|
| } // namespace remoting
|
|
|