Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1003)

Side by Side Diff: content/shell/renderer/test_runner/MockWebRTCPeerConnectionHandler.cpp

Issue 110533009: Import TestRunner library into chromium. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 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 #include "content/shell/renderer/test_runner/MockWebRTCPeerConnectionHandler.h"
6
7 #include "content/shell/renderer/test_runner/MockConstraints.h"
8 #include "content/shell/renderer/test_runner/MockWebRTCDTMFSenderHandler.h"
9 #include "content/shell/renderer/test_runner/MockWebRTCDataChannelHandler.h"
10 #include "content/shell/renderer/test_runner/TestInterfaces.h"
11 #include "content/shell/renderer/test_runner/WebTestDelegate.h"
12 #include "third_party/WebKit/public/platform/WebMediaConstraints.h"
13 #include "third_party/WebKit/public/platform/WebMediaStream.h"
14 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
15 #include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h"
16 #include "third_party/WebKit/public/platform/WebRTCPeerConnectionHandlerClient.h "
17 #include "third_party/WebKit/public/platform/WebRTCStatsResponse.h"
18 #include "third_party/WebKit/public/platform/WebRTCVoidRequest.h"
19 #include "third_party/WebKit/public/platform/WebString.h"
20 #include "third_party/WebKit/public/platform/WebVector.h"
21
22 using namespace blink;
23
24 namespace WebTestRunner {
25
26 class RTCSessionDescriptionRequestSuccededTask : public WebMethodTask<MockWebRTC PeerConnectionHandler> {
27 public:
28 RTCSessionDescriptionRequestSuccededTask(MockWebRTCPeerConnectionHandler* ob ject, const WebRTCSessionDescriptionRequest& request, const WebRTCSessionDescrip tion& result)
29 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object)
30 , m_request(request)
31 , m_result(result)
32 {
33 }
34
35 virtual void runIfValid() OVERRIDE
36 {
37 m_request.requestSucceeded(m_result);
38 }
39
40 private:
41 WebRTCSessionDescriptionRequest m_request;
42 WebRTCSessionDescription m_result;
43 };
44
45 class RTCSessionDescriptionRequestFailedTask : public WebMethodTask<MockWebRTCPe erConnectionHandler> {
46 public:
47 RTCSessionDescriptionRequestFailedTask(MockWebRTCPeerConnectionHandler* obje ct, const WebRTCSessionDescriptionRequest& request)
48 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object)
49 , m_request(request)
50 {
51 }
52
53 virtual void runIfValid() OVERRIDE
54 {
55 m_request.requestFailed("TEST_ERROR");
56 }
57
58 private:
59 WebRTCSessionDescriptionRequest m_request;
60 };
61
62 class RTCStatsRequestSucceededTask : public WebMethodTask<MockWebRTCPeerConnecti onHandler> {
63 public:
64 RTCStatsRequestSucceededTask(MockWebRTCPeerConnectionHandler* object, const blink::WebRTCStatsRequest& request, const blink::WebRTCStatsResponse& response)
65 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object)
66 , m_request(request)
67 , m_response(response)
68 {
69 }
70
71 virtual void runIfValid() OVERRIDE
72 {
73 m_request.requestSucceeded(m_response);
74 }
75
76 private:
77 blink::WebRTCStatsRequest m_request;
78 blink::WebRTCStatsResponse m_response;
79 };
80
81 class RTCVoidRequestTask : public WebMethodTask<MockWebRTCPeerConnectionHandler> {
82 public:
83 RTCVoidRequestTask(MockWebRTCPeerConnectionHandler* object, const WebRTCVoid Request& request, bool succeeded)
84 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object)
85 , m_request(request)
86 , m_succeeded(succeeded)
87 {
88 }
89
90 virtual void runIfValid() OVERRIDE
91 {
92 if (m_succeeded)
93 m_request.requestSucceeded();
94 else
95 m_request.requestFailed("TEST_ERROR");
96 }
97
98 private:
99 WebRTCVoidRequest m_request;
100 bool m_succeeded;
101 };
102
103 class RTCPeerConnectionStateTask : public WebMethodTask<MockWebRTCPeerConnection Handler> {
104 public:
105 RTCPeerConnectionStateTask(MockWebRTCPeerConnectionHandler* object, WebRTCPe erConnectionHandlerClient* client, WebRTCPeerConnectionHandlerClient::ICEConnect ionState connectionState, WebRTCPeerConnectionHandlerClient::ICEGatheringState g atheringState)
106 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object)
107 , m_client(client)
108 , m_connectionState(connectionState)
109 , m_gatheringState(gatheringState)
110 {
111 }
112
113 virtual void runIfValid() OVERRIDE
114 {
115 m_client->didChangeICEGatheringState(m_gatheringState);
116 m_client->didChangeICEConnectionState(m_connectionState);
117 }
118
119 private:
120 WebRTCPeerConnectionHandlerClient* m_client;
121 WebRTCPeerConnectionHandlerClient::ICEConnectionState m_connectionState;
122 WebRTCPeerConnectionHandlerClient::ICEGatheringState m_gatheringState;
123 };
124
125 class RemoteDataChannelTask : public WebMethodTask<MockWebRTCPeerConnectionHandl er> {
126 public:
127 RemoteDataChannelTask(MockWebRTCPeerConnectionHandler* object, WebRTCPeerCon nectionHandlerClient* client, WebTestDelegate* delegate)
128 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object)
129 , m_client(client)
130 , m_delegate(delegate)
131 {
132 }
133
134 virtual void runIfValid() OVERRIDE
135 {
136 WebRTCDataChannelInit init;
137 WebRTCDataChannelHandler* remoteDataChannel = new MockWebRTCDataChannelH andler("MockRemoteDataChannel", init, m_delegate);
138 m_client->didAddRemoteDataChannel(remoteDataChannel);
139 }
140
141 private:
142 WebRTCPeerConnectionHandlerClient* m_client;
143 WebTestDelegate* m_delegate;
144 };
145
146 /////////////////////
147
148 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler(WebRTCPeerConne ctionHandlerClient* client, TestInterfaces* interfaces)
149 : m_client(client)
150 , m_stopped(false)
151 , m_streamCount(0)
152 , m_interfaces(interfaces)
153 {
154 }
155
156 bool MockWebRTCPeerConnectionHandler::initialize(const WebRTCConfiguration&, con st WebMediaConstraints& constraints)
157 {
158 if (MockConstraints::verifyConstraints(constraints)) {
159 m_interfaces->delegate()->postTask(new RTCPeerConnectionStateTask(this, m_client, WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted, WebRTC PeerConnectionHandlerClient::ICEGatheringStateComplete));
160 return true;
161 }
162
163 return false;
164 }
165
166 void MockWebRTCPeerConnectionHandler::createOffer(const WebRTCSessionDescription Request& request, const WebMediaConstraints& constraints)
167 {
168 WebString shouldSucceed;
169 if (constraints.getMandatoryConstraintValue("succeed", shouldSucceed) && sho uldSucceed == "true") {
170 WebRTCSessionDescription sessionDescription;
171 sessionDescription.initialize("offer", "local");
172 m_interfaces->delegate()->postTask(new RTCSessionDescriptionRequestSucce dedTask(this, request, sessionDescription));
173 } else
174 m_interfaces->delegate()->postTask(new RTCSessionDescriptionRequestFaile dTask(this, request));
175 }
176
177 void MockWebRTCPeerConnectionHandler::createAnswer(const WebRTCSessionDescriptio nRequest& request, const WebMediaConstraints&)
178 {
179 if (!m_remoteDescription.isNull()) {
180 WebRTCSessionDescription sessionDescription;
181 sessionDescription.initialize("answer", "local");
182 m_interfaces->delegate()->postTask(new RTCSessionDescriptionRequestSucce dedTask(this, request, sessionDescription));
183 } else
184 m_interfaces->delegate()->postTask(new RTCSessionDescriptionRequestFaile dTask(this, request));
185 }
186
187 void MockWebRTCPeerConnectionHandler::setLocalDescription(const WebRTCVoidReques t& request, const WebRTCSessionDescription& localDescription)
188 {
189 if (!localDescription.isNull() && localDescription.sdp() == "local") {
190 m_localDescription = localDescription;
191 m_interfaces->delegate()->postTask(new RTCVoidRequestTask(this, request, true));
192 } else
193 m_interfaces->delegate()->postTask(new RTCVoidRequestTask(this, request, false));
194 }
195
196 void MockWebRTCPeerConnectionHandler::setRemoteDescription(const WebRTCVoidReque st& request, const WebRTCSessionDescription& remoteDescription)
197 {
198 if (!remoteDescription.isNull() && remoteDescription.sdp() == "remote") {
199 m_remoteDescription = remoteDescription;
200 m_interfaces->delegate()->postTask(new RTCVoidRequestTask(this, request, true));
201 } else
202 m_interfaces->delegate()->postTask(new RTCVoidRequestTask(this, request, false));
203 }
204
205 WebRTCSessionDescription MockWebRTCPeerConnectionHandler::localDescription()
206 {
207 return m_localDescription;
208 }
209
210 WebRTCSessionDescription MockWebRTCPeerConnectionHandler::remoteDescription()
211 {
212 return m_remoteDescription;
213 }
214
215 bool MockWebRTCPeerConnectionHandler::updateICE(const WebRTCConfiguration&, cons t WebMediaConstraints&)
216 {
217 return true;
218 }
219
220 bool MockWebRTCPeerConnectionHandler::addICECandidate(const WebRTCICECandidate& iceCandidate)
221 {
222 m_client->didGenerateICECandidate(iceCandidate);
223 return true;
224 }
225
226 bool MockWebRTCPeerConnectionHandler::addICECandidate(const WebRTCVoidRequest& r equest, const WebRTCICECandidate& iceCandidate)
227 {
228 m_interfaces->delegate()->postTask(new RTCVoidRequestTask(this, request, tru e));
229 return true;
230 }
231
232 bool MockWebRTCPeerConnectionHandler::addStream(const WebMediaStream& stream, co nst WebMediaConstraints&)
233 {
234 ++m_streamCount;
235 m_client->negotiationNeeded();
236 return true;
237 }
238
239 void MockWebRTCPeerConnectionHandler::removeStream(const WebMediaStream& stream)
240 {
241 --m_streamCount;
242 m_client->negotiationNeeded();
243 }
244
245 void MockWebRTCPeerConnectionHandler::getStats(const WebRTCStatsRequest& request )
246 {
247 WebRTCStatsResponse response = request.createResponse();
248 double currentDate = m_interfaces->delegate()->getCurrentTimeInMillisecond() ;
249 if (request.hasSelector()) {
250 // FIXME: There is no check that the fetched values are valid.
251 size_t reportIndex = response.addReport("Mock video", "ssrc", currentDat e);
252 response.addStatistic(reportIndex, "type", "video");
253 } else {
254 for (int i = 0; i < m_streamCount; ++i) {
255 size_t reportIndex = response.addReport("Mock audio", "ssrc", curren tDate);
256 response.addStatistic(reportIndex, "type", "audio");
257 reportIndex = response.addReport("Mock video", "ssrc", currentDate);
258 response.addStatistic(reportIndex, "type", "video");
259 }
260 }
261 m_interfaces->delegate()->postTask(new RTCStatsRequestSucceededTask(this, re quest, response));
262 }
263
264 WebRTCDataChannelHandler* MockWebRTCPeerConnectionHandler::createDataChannel(con st WebString& label, const blink::WebRTCDataChannelInit& init)
265 {
266 m_interfaces->delegate()->postTask(new RemoteDataChannelTask(this, m_client, m_interfaces->delegate()));
267
268 return new MockWebRTCDataChannelHandler(label, init, m_interfaces->delegate( ));
269 }
270
271 WebRTCDTMFSenderHandler* MockWebRTCPeerConnectionHandler::createDTMFSender(const WebMediaStreamTrack& track)
272 {
273 return new MockWebRTCDTMFSenderHandler(track, m_interfaces->delegate());
274 }
275
276 void MockWebRTCPeerConnectionHandler::stop()
277 {
278 m_stopped = true;
279 }
280
281 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698