// Copyright 2016 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. #ifndef REMOTING_PROTOCOL_FAKE_VIDEO_RENDERER_H_ #define REMOTING_PROTOCOL_FAKE_VIDEO_RENDERER_H_ #include #include "base/callback.h" #include "base/memory/scoped_ptr.h" #include "base/threading/thread_checker.h" #include "remoting/protocol/frame_consumer.h" #include "remoting/protocol/video_renderer.h" #include "remoting/protocol/video_stub.h" namespace remoting { namespace protocol { class FakeVideoStub : public VideoStub { public: FakeVideoStub(); ~FakeVideoStub() override; const std::list>& received_packets() { return received_packets_; } void set_on_frame_callback(base::Closure on_frame_callback); // VideoStub interface. void ProcessVideoPacket(scoped_ptr video_packet, const base::Closure& done) override; private: base::ThreadChecker thread_checker_; std::list> received_packets_; base::Closure on_frame_callback_; }; class FakeFrameConsumer : public FrameConsumer { public: FakeFrameConsumer(); ~FakeFrameConsumer() override; const std::list>& received_frames() { return received_frames_; } void set_on_frame_callback(base::Closure on_frame_callback); // FrameConsumer interface. scoped_ptr AllocateFrame( const webrtc::DesktopSize& size) override; void DrawFrame(scoped_ptr frame, const base::Closure& done) override; PixelFormat GetPixelFormat() override; private: base::ThreadChecker thread_checker_; std::list> received_frames_; base::Closure on_frame_callback_; }; class FakeVideoRenderer : public VideoRenderer { public: FakeVideoRenderer(); ~FakeVideoRenderer() override; // VideoRenderer interface. void OnSessionConfig(const SessionConfig& config) override; FakeVideoStub* GetVideoStub() override; FakeFrameConsumer* GetFrameConsumer() override; private: base::ThreadChecker thread_checker_; FakeVideoStub video_stub_; FakeFrameConsumer frame_consumer_; }; } // namespace protocol } // namespace remoting #endif // REMOTING_PROTOCOL_FAKE_VIDEO_RENDERER_H_