Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / content / shell / renderer / test_runner / mock_webrtc_peer_connection_handler.h
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.
4
5 #ifndef CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCKWEBRTCPEERCONNECTIONHANDLER_H_
6 #define CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCKWEBRTCPEERCONNECTIONHANDLER_H_
7
8 #include <map>
9
10 #include "base/basictypes.h"
11 #include "content/shell/renderer/test_runner/web_task.h"
12 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandler.h"
13 #include "third_party/WebKit/public/platform/WebRTCSessionDescription.h"
14 #include "third_party/WebKit/public/platform/WebRTCSessionDescriptionRequest.h"
15 #include "third_party/WebKit/public/platform/WebRTCStatsRequest.h"
16
17 namespace blink {
18 class WebRTCPeerConnectionHandlerClient;
19 };
20
21 namespace content {
22
23 class TestInterfaces;
24
25 class MockWebRTCPeerConnectionHandler
26     : public blink::WebRTCPeerConnectionHandler {
27  public:
28   MockWebRTCPeerConnectionHandler(
29       blink::WebRTCPeerConnectionHandlerClient* client,
30       TestInterfaces* interfaces);
31   virtual ~MockWebRTCPeerConnectionHandler();
32
33   // WebRTCPeerConnectionHandler related methods
34   virtual bool initialize(
35       const blink::WebRTCConfiguration& configuration,
36       const blink::WebMediaConstraints& constraints) override;
37
38   virtual void createOffer(
39       const blink::WebRTCSessionDescriptionRequest& request,
40       const blink::WebMediaConstraints& constraints) override;
41   virtual void createOffer(
42       const blink::WebRTCSessionDescriptionRequest& request,
43       const blink::WebRTCOfferOptions& options) override;
44   virtual void createAnswer(
45       const blink::WebRTCSessionDescriptionRequest& request,
46       const blink::WebMediaConstraints& constraints) override;
47   virtual void setLocalDescription(
48       const blink::WebRTCVoidRequest& request,
49       const blink::WebRTCSessionDescription& local_description) override;
50   virtual void setRemoteDescription(
51       const blink::WebRTCVoidRequest& request,
52       const blink::WebRTCSessionDescription& remote_description) override;
53   virtual blink::WebRTCSessionDescription localDescription() override;
54   virtual blink::WebRTCSessionDescription remoteDescription() override;
55   virtual bool updateICE(
56       const blink::WebRTCConfiguration& configuration,
57       const blink::WebMediaConstraints& constraints) override;
58   virtual bool addICECandidate(
59       const blink::WebRTCICECandidate& ice_candidate) override;
60   virtual bool addICECandidate(
61       const blink::WebRTCVoidRequest& request,
62       const blink::WebRTCICECandidate& ice_candidate) override;
63   virtual bool addStream(
64       const blink::WebMediaStream& stream,
65       const blink::WebMediaConstraints& constraints) override;
66   virtual void removeStream(const blink::WebMediaStream& stream) override;
67   virtual void getStats(const blink::WebRTCStatsRequest& request) override;
68   virtual blink::WebRTCDataChannelHandler* createDataChannel(
69       const blink::WebString& label,
70       const blink::WebRTCDataChannelInit& init) override;
71   virtual blink::WebRTCDTMFSenderHandler* createDTMFSender(
72       const blink::WebMediaStreamTrack& track) override;
73   virtual void stop() override;
74
75   // WebTask related methods
76   WebTaskList* mutable_task_list() { return &task_list_; }
77
78  private:
79   MockWebRTCPeerConnectionHandler();
80
81   // UpdateRemoteStreams uses the collection of |local_streams_| to create
82   // remote MediaStreams with the same number of tracks and notifies |client_|
83   // about added and removed streams. It's triggered when setRemoteDescription
84   // is called.
85   void UpdateRemoteStreams();
86
87   blink::WebRTCPeerConnectionHandlerClient* client_;
88   bool stopped_;
89   WebTaskList task_list_;
90   blink::WebRTCSessionDescription local_description_;
91   blink::WebRTCSessionDescription remote_description_;
92   int stream_count_;
93   TestInterfaces* interfaces_;
94   typedef std::map<std::string, blink::WebMediaStream> StreamMap;
95   StreamMap local_streams_;
96   StreamMap remote_streams_;
97
98   DISALLOW_COPY_AND_ASSIGN(MockWebRTCPeerConnectionHandler);
99 };
100
101 }  // namespace content
102
103 #endif  // CONTENT_SHELL_RENDERER_TEST_RUNNER_MOCKWEBRTCPEERCONNECTIONHANDLER_H_