1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "remoting/host/fake_host_extension.h"
9 #include "base/logging.h"
10 #include "remoting/codec/video_encoder.h"
11 #include "remoting/host/host_extension_session.h"
12 #include "remoting/proto/control.pb.h"
13 #include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
17 class FakeExtension::Session
: public HostExtensionSession
{
19 Session(FakeExtension
* extension
, const std::string
& message_type
);
22 virtual scoped_ptr
<webrtc::DesktopCapturer
> OnCreateVideoCapturer(
23 scoped_ptr
<webrtc::DesktopCapturer
> encoder
) OVERRIDE
;
24 virtual scoped_ptr
<VideoEncoder
> OnCreateVideoEncoder(
25 scoped_ptr
<VideoEncoder
> encoder
) OVERRIDE
;
26 virtual bool ModifiesVideoPipeline() const OVERRIDE
;
27 virtual bool OnExtensionMessage(
28 ClientSessionControl
* client_session_control
,
29 protocol::ClientStub
* client_stub
,
30 const protocol::ExtensionMessage
& message
) OVERRIDE
;
33 FakeExtension
* extension_
;
34 std::string message_type_
;
36 DISALLOW_COPY_AND_ASSIGN(Session
);
39 FakeExtension::Session::Session(
40 FakeExtension
* extension
, const std::string
& message_type
)
41 : extension_(extension
),
42 message_type_(message_type
) {
45 scoped_ptr
<webrtc::DesktopCapturer
>
46 FakeExtension::Session::OnCreateVideoCapturer(
47 scoped_ptr
<webrtc::DesktopCapturer
> capturer
) {
48 extension_
->has_wrapped_video_capturer_
= true;
49 if (extension_
->steal_video_capturer_
) {
52 return capturer
.Pass();
55 scoped_ptr
<VideoEncoder
> FakeExtension::Session::OnCreateVideoEncoder(
56 scoped_ptr
<VideoEncoder
> encoder
) {
57 extension_
->has_wrapped_video_encoder_
= true;
58 return encoder
.Pass();
61 bool FakeExtension::Session::ModifiesVideoPipeline() const {
62 return extension_
->steal_video_capturer_
;
65 bool FakeExtension::Session::OnExtensionMessage(
66 ClientSessionControl
* client_session_control
,
67 protocol::ClientStub
* client_stub
,
68 const protocol::ExtensionMessage
& message
) {
69 if (message
.type() == message_type_
) {
70 extension_
->has_handled_message_
= true;
76 FakeExtension::FakeExtension(const std::string
& message_type
,
77 const std::string
& capability
)
78 : message_type_(message_type
),
79 capability_(capability
),
80 steal_video_capturer_(false),
81 has_handled_message_(false),
82 has_wrapped_video_encoder_(false),
83 has_wrapped_video_capturer_(false),
84 was_instantiated_(false) {
87 FakeExtension::~FakeExtension() {
90 std::string
FakeExtension::capability() const {
94 scoped_ptr
<HostExtensionSession
> FakeExtension::CreateExtensionSession(
95 ClientSessionControl
* client_session_control
,
96 protocol::ClientStub
* client_stub
) {
97 DCHECK(!was_instantiated());
98 was_instantiated_
= true;
99 scoped_ptr
<HostExtensionSession
> session(new Session(this, message_type_
));
100 return session
.Pass();
103 void FakeExtension::set_steal_video_capturer(bool steal_video_capturer
) {
104 steal_video_capturer_
= steal_video_capturer
;
107 bool FakeExtension::has_wrapped_video_encoder() {
108 DCHECK(was_instantiated());
109 return has_wrapped_video_encoder_
;
112 bool FakeExtension::has_wrapped_video_capturer() {
113 DCHECK(was_instantiated());
114 return has_wrapped_video_capturer_
;
117 bool FakeExtension::has_handled_message() {
118 DCHECK(was_instantiated());
119 return has_handled_message_
;
122 } // namespace remoting