Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / content / renderer / media / mock_peer_connection_impl.h
1 // Copyright (c) 2012 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.
4
5 #ifndef CONTENT_RENDERER_MEDIA_MOCK_PEER_CONNECTION_IMPL_H_
6 #define CONTENT_RENDERER_MEDIA_MOCK_PEER_CONNECTION_IMPL_H_
7
8 #include <string>
9
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "third_party/libjingle/source/talk/app/webrtc/peerconnectioninterface.h"
15
16 namespace content {
17
18 class MockMediaStreamDependencyFactory;
19 class MockStreamCollection;
20
21 class MockPeerConnectionImpl : public webrtc::PeerConnectionInterface {
22  public:
23   explicit MockPeerConnectionImpl(MockMediaStreamDependencyFactory* factory);
24
25   // PeerConnectionInterface implementation.
26   virtual talk_base::scoped_refptr<webrtc::StreamCollectionInterface>
27       local_streams() OVERRIDE;
28   virtual talk_base::scoped_refptr<webrtc::StreamCollectionInterface>
29       remote_streams() OVERRIDE;
30   virtual bool AddStream(
31       webrtc::MediaStreamInterface* local_stream,
32       const webrtc::MediaConstraintsInterface* constraints) OVERRIDE;
33   virtual void RemoveStream(
34       webrtc::MediaStreamInterface* local_stream) OVERRIDE;
35   virtual talk_base::scoped_refptr<webrtc::DtmfSenderInterface>
36       CreateDtmfSender(webrtc::AudioTrackInterface* track) OVERRIDE;
37   virtual talk_base::scoped_refptr<webrtc::DataChannelInterface>
38       CreateDataChannel(const std::string& label,
39                         const webrtc::DataChannelInit* config) OVERRIDE;
40
41   virtual bool GetStats(webrtc::StatsObserver* observer,
42                         webrtc::MediaStreamTrackInterface* track) {
43     return false;
44   }
45   virtual bool GetStats(webrtc::StatsObserver* observer,
46                         webrtc::MediaStreamTrackInterface* track,
47                         StatsOutputLevel level) OVERRIDE;
48
49   // Set Call this function to make sure next call to GetStats fail.
50   void SetGetStatsResult(bool result) { getstats_result_ = result; }
51
52   virtual SignalingState signaling_state() OVERRIDE {
53     NOTIMPLEMENTED();
54     return PeerConnectionInterface::kStable;
55   }
56   virtual IceState ice_state() OVERRIDE {
57     NOTIMPLEMENTED();
58     return PeerConnectionInterface::kIceNew;
59   }
60   virtual IceConnectionState ice_connection_state() OVERRIDE {
61     NOTIMPLEMENTED();
62     return PeerConnectionInterface::kIceConnectionNew;
63   }
64   virtual IceGatheringState ice_gathering_state() OVERRIDE {
65     NOTIMPLEMENTED();
66     return PeerConnectionInterface::kIceGatheringNew;
67   }
68   virtual void Close() OVERRIDE {
69     NOTIMPLEMENTED();
70   }
71
72   virtual const webrtc::SessionDescriptionInterface* local_description()
73       const OVERRIDE;
74   virtual const webrtc::SessionDescriptionInterface* remote_description()
75       const OVERRIDE;
76
77   // JSEP01 APIs
78   virtual void CreateOffer(
79       webrtc::CreateSessionDescriptionObserver* observer,
80       const webrtc::MediaConstraintsInterface* constraints) OVERRIDE;
81   virtual void CreateAnswer(
82       webrtc::CreateSessionDescriptionObserver* observer,
83       const webrtc::MediaConstraintsInterface* constraints) OVERRIDE;
84   MOCK_METHOD2(SetLocalDescription,
85                void(webrtc::SetSessionDescriptionObserver* observer,
86                     webrtc::SessionDescriptionInterface* desc));
87   void SetLocalDescriptionWorker(
88       webrtc::SetSessionDescriptionObserver* observer,
89       webrtc::SessionDescriptionInterface* desc) ;
90   MOCK_METHOD2(SetRemoteDescription,
91                void(webrtc::SetSessionDescriptionObserver* observer,
92                     webrtc::SessionDescriptionInterface* desc));
93   void SetRemoteDescriptionWorker(
94       webrtc::SetSessionDescriptionObserver* observer,
95       webrtc::SessionDescriptionInterface* desc);
96   virtual bool UpdateIce(
97       const IceServers& configuration,
98       const webrtc::MediaConstraintsInterface* constraints) OVERRIDE;
99   virtual bool AddIceCandidate(
100       const webrtc::IceCandidateInterface* candidate) OVERRIDE;
101   virtual void RegisterUMAObserver(webrtc::UMAObserver* observer) OVERRIDE;
102
103   void AddRemoteStream(webrtc::MediaStreamInterface* stream);
104
105   const std::string& stream_label() const { return stream_label_; }
106   bool hint_audio() const { return hint_audio_; }
107   bool hint_video() const { return hint_video_; }
108   const std::string& description_sdp() const { return description_sdp_; }
109   const std::string& sdp_mid() const { return sdp_mid_; }
110   int sdp_mline_index() const { return sdp_mline_index_; }
111   const std::string& ice_sdp() const { return ice_sdp_; }
112   webrtc::SessionDescriptionInterface* created_session_description() const {
113     return created_sessiondescription_.get();
114   }
115   static const char kDummyOffer[];
116   static const char kDummyAnswer[];
117
118  protected:
119   virtual ~MockPeerConnectionImpl();
120
121  private:
122   // Used for creating MockSessionDescription.
123   MockMediaStreamDependencyFactory* dependency_factory_;
124
125   std::string stream_label_;
126   talk_base::scoped_refptr<MockStreamCollection> local_streams_;
127   talk_base::scoped_refptr<MockStreamCollection> remote_streams_;
128   scoped_ptr<webrtc::SessionDescriptionInterface> local_desc_;
129   scoped_ptr<webrtc::SessionDescriptionInterface> remote_desc_;
130   scoped_ptr<webrtc::SessionDescriptionInterface> created_sessiondescription_;
131   bool hint_audio_;
132   bool hint_video_;
133   bool getstats_result_;
134   std::string description_sdp_;
135   std::string sdp_mid_;
136   int sdp_mline_index_;
137   std::string ice_sdp_;
138
139   DISALLOW_COPY_AND_ASSIGN(MockPeerConnectionImpl);
140 };
141
142 }  // namespace content
143
144 #endif  // CONTENT_RENDERER_MEDIA_MOCK_PEER_CONNECTION_IMPL_H_