| 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 | 
|  |