Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / remoting / host / fake_host_extension.cc
blob7f5c8c3f1259179aa97b627d841a57edad4c30ba
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"
7 #include <string>
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"
15 namespace remoting {
17 class FakeExtension::Session : public HostExtensionSession {
18 public:
19 Session(FakeExtension* extension, const std::string& message_type);
20 virtual ~Session() {}
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;
32 private:
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_) {
50 capturer.reset();
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;
71 return true;
73 return false;
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 {
91 return capability_;
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