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

Side by Side Diff: chrome/renderer/extensions/webrtc_native_handler.cc

Issue 83043005: Cast Extensions API: Factory method for creating a cast session (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove castSendTransport.create Created 7 years, 1 month 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
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/extensions/webrtc_native_handler.h" 5 #include "chrome/renderer/extensions/webrtc_native_handler.h"
6 6
7 #include <functional> 7 #include <functional>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/common/extensions/api/webrtc_cast_send_transport.h" 10 #include "chrome/common/extensions/api/webrtc_cast_send_transport.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 ext_payload_params.get()); 140 ext_payload_params.get());
141 ext_params->payloads.push_back(ext_payload_params); 141 ext_params->payloads.push_back(ext_payload_params);
142 } 142 }
143 } 143 }
144 144
145 } // namespace 145 } // namespace
146 146
147 WebRtcNativeHandler::WebRtcNativeHandler(ChromeV8Context* context) 147 WebRtcNativeHandler::WebRtcNativeHandler(ChromeV8Context* context)
148 : ObjectBackedNativeHandler(context), 148 : ObjectBackedNativeHandler(context),
149 last_transport_id_(0) { 149 last_transport_id_(0) {
150 RouteFunction("CreateCastSendTransport", 150 RouteFunction("CreateSession",
151 base::Bind(&WebRtcNativeHandler::CreateCastSendTransport, 151 base::Bind(&WebRtcNativeHandler::CreateCastSession,
152 base::Unretained(this))); 152 base::Unretained(this)));
153 RouteFunction("DestroyCastSendTransport", 153 RouteFunction("DestroyCastSendTransport",
154 base::Bind(&WebRtcNativeHandler::DestroyCastSendTransport, 154 base::Bind(&WebRtcNativeHandler::DestroyCastSendTransport,
155 base::Unretained(this))); 155 base::Unretained(this)));
156 RouteFunction("GetCapsCastSendTransport", 156 RouteFunction("GetCapsCastSendTransport",
157 base::Bind(&WebRtcNativeHandler::GetCapsCastSendTransport, 157 base::Bind(&WebRtcNativeHandler::GetCapsCastSendTransport,
158 base::Unretained(this))); 158 base::Unretained(this)));
159 RouteFunction("StartCastSendTransport", 159 RouteFunction("StartCastSendTransport",
160 base::Bind(&WebRtcNativeHandler::StartCastSendTransport, 160 base::Bind(&WebRtcNativeHandler::StartCastSendTransport,
161 base::Unretained(this))); 161 base::Unretained(this)));
162 RouteFunction("StopCastSendTransport", 162 RouteFunction("StopCastSendTransport",
163 base::Bind(&WebRtcNativeHandler::StopCastSendTransport, 163 base::Bind(&WebRtcNativeHandler::StopCastSendTransport,
164 base::Unretained(this))); 164 base::Unretained(this)));
165 RouteFunction("CreateCastUdpTransport",
166 base::Bind(&WebRtcNativeHandler::CreateCastUdpTransport,
167 base::Unretained(this)));
168 RouteFunction("DestroyCastUdpTransport", 165 RouteFunction("DestroyCastUdpTransport",
169 base::Bind(&WebRtcNativeHandler::DestroyCastUdpTransport, 166 base::Bind(&WebRtcNativeHandler::DestroyCastUdpTransport,
170 base::Unretained(this))); 167 base::Unretained(this)));
171 RouteFunction("StartCastUdpTransport", 168 RouteFunction("StartCastUdpTransport",
172 base::Bind(&WebRtcNativeHandler::StartCastUdpTransport, 169 base::Bind(&WebRtcNativeHandler::StartCastUdpTransport,
173 base::Unretained(this))); 170 base::Unretained(this)));
174 } 171 }
175 172
176 WebRtcNativeHandler::~WebRtcNativeHandler() { 173 WebRtcNativeHandler::~WebRtcNativeHandler() {
177 } 174 }
178 175
179 void WebRtcNativeHandler::CreateCastSendTransport( 176 void WebRtcNativeHandler::CreateCastSession(
180 const v8::FunctionCallbackInfo<v8::Value>& args) { 177 const v8::FunctionCallbackInfo<v8::Value>& args) {
181 CHECK_EQ(3, args.Length()); 178 CHECK_EQ(3, args.Length());
182 CHECK(args[0]->IsInt32()); 179 CHECK(args[0]->IsObject());
183 CHECK(args[1]->IsObject()); 180 CHECK(args[1]->IsObject());
184 CHECK(args[2]->IsFunction()); 181 CHECK(args[2]->IsFunction());
185 182
186 const int inner_transport_id = args[0]->ToInt32()->Value(); 183 blink::WebDOMMediaStreamTrack track1 =
187 CastUdpTransport* inner_transport = GetUdpTransportOrThrow( 184 blink::WebDOMMediaStreamTrack::fromV8Value(args[0]);
188 inner_transport_id); 185 if (track1.isNull())
189 if (!inner_transport) 186 return;
187 blink::WebDOMMediaStreamTrack track2 =
188 blink::WebDOMMediaStreamTrack::fromV8Value(args[1]);
189 if (track2.isNull())
190 return; 190 return;
191 191
192 blink::WebDOMMediaStreamTrack track = 192 scoped_refptr<CastSession> session(new CastSession());
193 blink::WebDOMMediaStreamTrack::fromV8Value(args[1]); 193
194 if (track.isNull()) 194 const int stream1_id = last_transport_id_++;
195 return; 195 send_transport_map_[stream1_id] =
196 const int transport_id = last_transport_id_++;
197 send_transport_map_[transport_id] =
198 linked_ptr<CastSendTransport>( 196 linked_ptr<CastSendTransport>(
199 new CastSendTransport(inner_transport, track.component())); 197 new CastSendTransport(track1.component(), session));
198 const int stream2_id = last_transport_id_++;
199 send_transport_map_[stream2_id] =
200 linked_ptr<CastSendTransport>(
201 new CastSendTransport(track2.component(), session));
202 const int udp_id = last_transport_id_++;
203 udp_transport_map_[udp_id] =
204 linked_ptr<CastUdpTransport>(new CastUdpTransport(session));
200 205
201 v8::Handle<v8::Value> transport_id_v8 = v8::Integer::New(transport_id); 206 v8::Handle<v8::Value> callback_args[3];
202 context()->CallFunction(v8::Handle<v8::Function>::Cast(args[2]), 1, 207 callback_args[0] = v8::Integer::New(stream1_id);
203 &transport_id_v8); 208 callback_args[1] = v8::Integer::New(stream2_id);
209 callback_args[2] = v8::Integer::New(udp_id);
210 context()->CallFunction(v8::Handle<v8::Function>::Cast(args[2]),
211 3, callback_args);
not at google - send to devlin 2013/11/25 19:41:11 so this will definitely be async eventually, right
Alpha Left Google 2013/11/26 04:22:45 Okay done.
204 } 212 }
205 213
206 void WebRtcNativeHandler::DestroyCastSendTransport( 214 void WebRtcNativeHandler::DestroyCastSendTransport(
207 const v8::FunctionCallbackInfo<v8::Value>& args) { 215 const v8::FunctionCallbackInfo<v8::Value>& args) {
208 CHECK_EQ(1, args.Length()); 216 CHECK_EQ(1, args.Length());
209 CHECK(args[0]->IsInt32()); 217 CHECK(args[0]->IsInt32());
210 218
211 const int transport_id = args[0]->ToInt32()->Value(); 219 const int transport_id = args[0]->ToInt32()->Value();
212 if (!GetSendTransportOrThrow(transport_id)) 220 if (!GetSendTransportOrThrow(transport_id))
213 return; 221 return;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 CHECK_EQ(1, args.Length()); 278 CHECK_EQ(1, args.Length());
271 CHECK(args[0]->IsInt32()); 279 CHECK(args[0]->IsInt32());
272 280
273 const int transport_id = args[0]->ToInt32()->Value(); 281 const int transport_id = args[0]->ToInt32()->Value();
274 CastSendTransport* transport = GetSendTransportOrThrow(transport_id); 282 CastSendTransport* transport = GetSendTransportOrThrow(transport_id);
275 if (!transport) 283 if (!transport)
276 return; 284 return;
277 transport->Stop(); 285 transport->Stop();
278 } 286 }
279 287
280 void WebRtcNativeHandler::CreateCastUdpTransport(
281 const v8::FunctionCallbackInfo<v8::Value>& args) {
282 CHECK_EQ(1, args.Length());
283 CHECK(args[0]->IsFunction());
284
285 const int transport_id = last_transport_id_++;
286 udp_transport_map_[transport_id] =
287 linked_ptr<CastUdpTransport>(new CastUdpTransport());
288
289 v8::Handle<v8::Value> transport_id_v8 = v8::Integer::New(transport_id);
290 context()->CallFunction(v8::Handle<v8::Function>::Cast(args[0]), 1,
291 &transport_id_v8);
292 }
293
294 void WebRtcNativeHandler::DestroyCastUdpTransport( 288 void WebRtcNativeHandler::DestroyCastUdpTransport(
295 const v8::FunctionCallbackInfo<v8::Value>& args) { 289 const v8::FunctionCallbackInfo<v8::Value>& args) {
296 CHECK_EQ(1, args.Length()); 290 CHECK_EQ(1, args.Length());
297 CHECK(args[0]->IsInt32()); 291 CHECK(args[0]->IsInt32());
298 292
299 const int transport_id = args[0]->ToInt32()->Value(); 293 const int transport_id = args[0]->ToInt32()->Value();
300 if (!GetUdpTransportOrThrow(transport_id)) 294 if (!GetUdpTransportOrThrow(transport_id))
301 return; 295 return;
302 udp_transport_map_.erase(transport_id); 296 udp_transport_map_.erase(transport_id);
303 } 297 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 UdpTransportMap::const_iterator iter = udp_transport_map_.find( 340 UdpTransportMap::const_iterator iter = udp_transport_map_.find(
347 transport_id); 341 transport_id);
348 if (iter != udp_transport_map_.end()) 342 if (iter != udp_transport_map_.end())
349 return iter->second.get(); 343 return iter->second.get();
350 v8::ThrowException(v8::Exception::RangeError(v8::String::New( 344 v8::ThrowException(v8::Exception::RangeError(v8::String::New(
351 kUdpTransportNotFound))); 345 kUdpTransportNotFound)));
352 return NULL; 346 return NULL;
353 } 347 }
354 348
355 } // namespace extensions 349 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698