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

Side by Side Diff: content/shell/renderer/test_runner/mock_webrtc_peer_connection_handler.cc

Issue 316093005: test_runner: Migrate MockWebRTCPeerConnectionHandler to Chromium C++ style (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 6 months 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
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/mock_webrtc_peer_connection_handler .h"
6
7 #include "content/shell/renderer/test_runner/TestInterfaces.h"
8 #include "content/shell/renderer/test_runner/WebTestDelegate.h"
9 #include "content/shell/renderer/test_runner/mock_constraints.h"
10 #include "content/shell/renderer/test_runner/mock_webrtc_data_channel_handler.h"
11 #include "content/shell/renderer/test_runner/mock_webrtc_dtmf_sender_handler.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 content {
25
26 class RTCSessionDescriptionRequestSuccededTask
27 : public WebMethodTask<MockWebRTCPeerConnectionHandler> {
28 public:
29 RTCSessionDescriptionRequestSuccededTask(
30 MockWebRTCPeerConnectionHandler* object,
31 const WebRTCSessionDescriptionRequest& request,
32 const WebRTCSessionDescription& result)
33 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object),
34 request_(request),
35 result_(result) {}
36
37 virtual void runIfValid() OVERRIDE { request_.requestSucceeded(result_); }
38
39 private:
40 WebRTCSessionDescriptionRequest request_;
41 WebRTCSessionDescription result_;
42 };
43
44 class RTCSessionDescriptionRequestFailedTask
45 : public WebMethodTask<MockWebRTCPeerConnectionHandler> {
46 public:
47 RTCSessionDescriptionRequestFailedTask(
48 MockWebRTCPeerConnectionHandler* object,
49 const WebRTCSessionDescriptionRequest& request)
50 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object),
51 request_(request) {}
52
53 virtual void runIfValid() OVERRIDE { request_.requestFailed("TEST_ERROR"); }
54
55 private:
56 WebRTCSessionDescriptionRequest request_;
57 };
58
59 class RTCStatsRequestSucceededTask
60 : public WebMethodTask<MockWebRTCPeerConnectionHandler> {
61 public:
62 RTCStatsRequestSucceededTask(MockWebRTCPeerConnectionHandler* object,
63 const blink::WebRTCStatsRequest& request,
64 const blink::WebRTCStatsResponse& response)
65 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object),
66 request_(request),
67 response_(response) {}
68
69 virtual void runIfValid() OVERRIDE { request_.requestSucceeded(response_); }
70
71 private:
72 blink::WebRTCStatsRequest request_;
73 blink::WebRTCStatsResponse response_;
74 };
75
76 class RTCVoidRequestTask
77 : public WebMethodTask<MockWebRTCPeerConnectionHandler> {
78 public:
79 RTCVoidRequestTask(MockWebRTCPeerConnectionHandler* object,
80 const WebRTCVoidRequest& request,
81 bool succeeded)
82 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object),
83 request_(request),
84 succeeded_(succeeded) {}
85
86 virtual void runIfValid() OVERRIDE {
87 if (succeeded_)
88 request_.requestSucceeded();
89 else
90 request_.requestFailed("TEST_ERROR");
91 }
92
93 private:
94 WebRTCVoidRequest request_;
95 bool succeeded_;
96 };
97
98 class RTCPeerConnectionStateTask
99 : public WebMethodTask<MockWebRTCPeerConnectionHandler> {
100 public:
101 RTCPeerConnectionStateTask(
102 MockWebRTCPeerConnectionHandler* object,
103 WebRTCPeerConnectionHandlerClient* client,
104 WebRTCPeerConnectionHandlerClient::ICEConnectionState connection_state,
105 WebRTCPeerConnectionHandlerClient::ICEGatheringState gathering_state)
106 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object),
107 client_(client),
108 connection_state_(connection_state),
109 gathering_state_(gathering_state) {}
110
111 virtual void runIfValid() OVERRIDE {
112 client_->didChangeICEGatheringState(gathering_state_);
113 client_->didChangeICEConnectionState(connection_state_);
114 }
115
116 private:
117 WebRTCPeerConnectionHandlerClient* client_;
118 WebRTCPeerConnectionHandlerClient::ICEConnectionState connection_state_;
119 WebRTCPeerConnectionHandlerClient::ICEGatheringState gathering_state_;
120 };
121
122 class RemoteDataChannelTask
123 : public WebMethodTask<MockWebRTCPeerConnectionHandler> {
124 public:
125 RemoteDataChannelTask(MockWebRTCPeerConnectionHandler* object,
126 WebRTCPeerConnectionHandlerClient* client,
127 WebTestDelegate* delegate)
128 : WebMethodTask<MockWebRTCPeerConnectionHandler>(object),
129 client_(client),
130 delegate_(delegate) {}
131
132 virtual void runIfValid() OVERRIDE {
133 WebRTCDataChannelInit init;
134 WebRTCDataChannelHandler* remote_data_channel =
135 new MockWebRTCDataChannelHandler(
136 "MockRemoteDataChannel", init, delegate_);
137 client_->didAddRemoteDataChannel(remote_data_channel);
138 }
139
140 private:
141 WebRTCPeerConnectionHandlerClient* client_;
142 WebTestDelegate* delegate_;
143 };
144
145 /////////////////////
146
147 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler() {
148 }
149
150 MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler(
151 WebRTCPeerConnectionHandlerClient* client,
152 TestInterfaces* interfaces)
153 : client_(client),
154 stopped_(false),
155 stream_count_(0),
156 interfaces_(interfaces) {
157 }
158
159 bool MockWebRTCPeerConnectionHandler::initialize(
160 const WebRTCConfiguration& configuration,
161 const WebMediaConstraints& constraints) {
162 if (MockConstraints::VerifyConstraints(constraints)) {
163 interfaces_->delegate()->postTask(new RTCPeerConnectionStateTask(
164 this,
165 client_,
166 WebRTCPeerConnectionHandlerClient::ICEConnectionStateCompleted,
167 WebRTCPeerConnectionHandlerClient::ICEGatheringStateComplete));
168 return true;
169 }
170
171 return false;
172 }
173
174 void MockWebRTCPeerConnectionHandler::createOffer(
175 const WebRTCSessionDescriptionRequest& request,
176 const WebMediaConstraints& constraints) {
177 WebString should_succeed;
178 if (constraints.getMandatoryConstraintValue("succeed", should_succeed) &&
179 should_succeed == "true") {
180 WebRTCSessionDescription session_description;
181 session_description.initialize("offer", "local");
182 interfaces_->delegate()->postTask(
183 new RTCSessionDescriptionRequestSuccededTask(
184 this, request, session_description));
185 } else
186 interfaces_->delegate()->postTask(
187 new RTCSessionDescriptionRequestFailedTask(this, request));
188 }
189
190 void MockWebRTCPeerConnectionHandler::createAnswer(
191 const WebRTCSessionDescriptionRequest& request,
192 const WebMediaConstraints& constraints) {
193 if (!remote_description_.isNull()) {
194 WebRTCSessionDescription session_description;
195 session_description.initialize("answer", "local");
196 interfaces_->delegate()->postTask(
197 new RTCSessionDescriptionRequestSuccededTask(
198 this, request, session_description));
199 } else
200 interfaces_->delegate()->postTask(
201 new RTCSessionDescriptionRequestFailedTask(this, request));
202 }
203
204 void MockWebRTCPeerConnectionHandler::setLocalDescription(
205 const WebRTCVoidRequest& request,
206 const WebRTCSessionDescription& local_description) {
207 if (!local_description.isNull() && local_description.sdp() == "local") {
208 local_description_ = local_description;
209 interfaces_->delegate()->postTask(
210 new RTCVoidRequestTask(this, request, true));
211 } else
212 interfaces_->delegate()->postTask(
213 new RTCVoidRequestTask(this, request, false));
214 }
215
216 void MockWebRTCPeerConnectionHandler::setRemoteDescription(
217 const WebRTCVoidRequest& request,
218 const WebRTCSessionDescription& remote_description) {
219 if (!remote_description.isNull() && remote_description.sdp() == "remote") {
220 remote_description_ = remote_description;
221 interfaces_->delegate()->postTask(
222 new RTCVoidRequestTask(this, request, true));
223 } else
224 interfaces_->delegate()->postTask(
225 new RTCVoidRequestTask(this, request, false));
226 }
227
228 WebRTCSessionDescription MockWebRTCPeerConnectionHandler::localDescription() {
229 return local_description_;
230 }
231
232 WebRTCSessionDescription MockWebRTCPeerConnectionHandler::remoteDescription() {
233 return remote_description_;
234 }
235
236 bool MockWebRTCPeerConnectionHandler::updateICE(const WebRTCConfiguration& confi guration,
237 const WebMediaConstraints& const raints) {
238 return true;
239 }
240
241 bool MockWebRTCPeerConnectionHandler::addICECandidate(
242 const WebRTCICECandidate& ice_candidate) {
243 client_->didGenerateICECandidate(ice_candidate);
244 return true;
245 }
246
247 bool MockWebRTCPeerConnectionHandler::addICECandidate(
248 const WebRTCVoidRequest& request,
249 const WebRTCICECandidate& ice_candidate) {
250 interfaces_->delegate()->postTask(
251 new RTCVoidRequestTask(this, request, true));
252 return true;
253 }
254
255 bool MockWebRTCPeerConnectionHandler::addStream(const WebMediaStream& stream,
256 const WebMediaConstraints& const raints) {
257 ++stream_count_;
258 client_->negotiationNeeded();
259 return true;
260 }
261
262 void MockWebRTCPeerConnectionHandler::removeStream(
263 const WebMediaStream& stream) {
264 --stream_count_;
265 client_->negotiationNeeded();
266 }
267
268 void MockWebRTCPeerConnectionHandler::getStats(
269 const WebRTCStatsRequest& request) {
270 WebRTCStatsResponse response = request.createResponse();
271 double current_date = interfaces_->delegate()->getCurrentTimeInMillisecond();
272 if (request.hasSelector()) {
273 // FIXME: There is no check that the fetched values are valid.
274 size_t report_index = response.addReport("Mock video", "ssrc", current_date) ;
275 response.addStatistic(report_index, "type", "video");
276 } else {
277 for (int i = 0; i < stream_count_; ++i) {
278 size_t report_index =
279 response.addReport("Mock audio", "ssrc", current_date);
280 response.addStatistic(report_index, "type", "audio");
281 report_index = response.addReport("Mock video", "ssrc", current_date);
282 response.addStatistic(report_index, "type", "video");
283 }
284 }
285 interfaces_->delegate()->postTask(
286 new RTCStatsRequestSucceededTask(this, request, response));
287 }
288
289 WebRTCDataChannelHandler* MockWebRTCPeerConnectionHandler::createDataChannel(
290 const WebString& label,
291 const blink::WebRTCDataChannelInit& init) {
292 interfaces_->delegate()->postTask(
293 new RemoteDataChannelTask(this, client_, interfaces_->delegate()));
294
295 return new MockWebRTCDataChannelHandler(
296 label, init, interfaces_->delegate());
297 }
298
299 WebRTCDTMFSenderHandler* MockWebRTCPeerConnectionHandler::createDTMFSender(
300 const WebMediaStreamTrack& track) {
301 return new MockWebRTCDTMFSenderHandler(track, interfaces_->delegate());
302 }
303
304 void MockWebRTCPeerConnectionHandler::stop() {
305 stopped_ = true;
306 }
307
308 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698