OLD | NEW |
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/cast_streaming_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 "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
11 #include "chrome/common/extensions/api/webrtc_cast_send_transport.h" | 11 #include "chrome/common/extensions/api/cast_streaming_rtp_stream.h" |
12 #include "chrome/common/extensions/api/webrtc_cast_udp_transport.h" | 12 #include "chrome/common/extensions/api/cast_streaming_udp_transport.h" |
13 #include "chrome/renderer/extensions/chrome_v8_context.h" | 13 #include "chrome/renderer/extensions/chrome_v8_context.h" |
14 #include "chrome/renderer/media/cast_send_transport.h" | 14 #include "chrome/renderer/media/cast_rtp_stream.h" |
15 #include "chrome/renderer/media/cast_session.h" | 15 #include "chrome/renderer/media/cast_session.h" |
16 #include "chrome/renderer/media/cast_udp_transport.h" | 16 #include "chrome/renderer/media/cast_udp_transport.h" |
17 #include "content/public/renderer/v8_value_converter.h" | 17 #include "content/public/renderer/v8_value_converter.h" |
18 #include "net/base/host_port_pair.h" | 18 #include "net/base/host_port_pair.h" |
19 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" | 19 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
20 #include "third_party/WebKit/public/web/WebDOMMediaStreamTrack.h" | 20 #include "third_party/WebKit/public/web/WebDOMMediaStreamTrack.h" |
21 | 21 |
22 using content::V8ValueConverter; | 22 using content::V8ValueConverter; |
23 | 23 |
24 // Extension types. | 24 // Extension types. |
25 using extensions::api::webrtc_cast_send_transport::CodecSpecificParams; | 25 using extensions::api::cast_streaming_rtp_stream::CodecSpecificParams; |
26 using extensions::api::webrtc_cast_send_transport::RtpCaps; | 26 using extensions::api::cast_streaming_rtp_stream::RtpCaps; |
27 using extensions::api::webrtc_cast_send_transport::RtpParams; | 27 using extensions::api::cast_streaming_rtp_stream::RtpParams; |
28 using extensions::api::webrtc_cast_send_transport::RtpPayloadParams; | 28 using extensions::api::cast_streaming_rtp_stream::RtpPayloadParams; |
29 using extensions::api::webrtc_cast_udp_transport::UdpParams; | 29 using extensions::api::cast_streaming_udp_transport::UdpParams; |
30 | 30 |
31 namespace extensions { | 31 namespace extensions { |
32 | 32 |
33 namespace { | 33 namespace { |
34 const char kSendTransportNotFound[] = "The send transport cannot be found"; | 34 const char kRtpStreamNotFound[] = "The RTP stream cannot be found"; |
35 const char kUdpTransportNotFound[] = "The UDP transport cannot be found"; | 35 const char kUdpTransportNotFound[] = "The UDP transport cannot be found"; |
36 const char kInvalidUdpParams[] = "Invalid UDP params"; | 36 const char kInvalidUdpParams[] = "Invalid UDP params"; |
37 const char kInvalidRtpParams[] = "Invalid value for RTP params"; | 37 const char kInvalidRtpParams[] = "Invalid value for RTP params"; |
38 const char kUnableToConvertArgs[] = "Unable to convert arguments"; | 38 const char kUnableToConvertArgs[] = "Unable to convert arguments"; |
39 const char kUnableToConvertParams[] = "Unable to convert params"; | 39 const char kUnableToConvertParams[] = "Unable to convert params"; |
40 | 40 |
41 // These helper methods are used to convert between Extension API | 41 // These helper methods are used to convert between Extension API |
42 // types and Cast types. | 42 // types and Cast types. |
43 void ToCastCodecSpecificParams(const CodecSpecificParams& ext_params, | 43 void ToCastCodecSpecificParams(const CodecSpecificParams& ext_params, |
44 CastCodecSpecificParams* cast_params) { | 44 CastCodecSpecificParams* cast_params) { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 cast_params->rtcp_features.begin()); | 115 cast_params->rtcp_features.begin()); |
116 for (size_t i = 0; i < ext_params.payloads.size(); ++i) { | 116 for (size_t i = 0; i < ext_params.payloads.size(); ++i) { |
117 CastRtpPayloadParams cast_payload_params; | 117 CastRtpPayloadParams cast_payload_params; |
118 ToCastRtpPayloadParams(*ext_params.payloads[i], &cast_payload_params); | 118 ToCastRtpPayloadParams(*ext_params.payloads[i], &cast_payload_params); |
119 cast_params->payloads.push_back(cast_payload_params); | 119 cast_params->payloads.push_back(cast_payload_params); |
120 } | 120 } |
121 } | 121 } |
122 | 122 |
123 } // namespace | 123 } // namespace |
124 | 124 |
125 WebRtcNativeHandler::WebRtcNativeHandler(ChromeV8Context* context) | 125 CastStreamingNativeHandler::CastStreamingNativeHandler(ChromeV8Context* context) |
126 : ObjectBackedNativeHandler(context), | 126 : ObjectBackedNativeHandler(context), |
127 last_transport_id_(0), | 127 last_transport_id_(0), |
128 weak_factory_(this) { | 128 weak_factory_(this) { |
129 RouteFunction("CreateSession", | 129 RouteFunction("CreateSession", |
130 base::Bind(&WebRtcNativeHandler::CreateCastSession, | 130 base::Bind(&CastStreamingNativeHandler::CreateCastSession, |
131 base::Unretained(this))); | 131 base::Unretained(this))); |
132 RouteFunction("DestroyCastSendTransport", | 132 RouteFunction("DestroyCastRtpStream", |
133 base::Bind(&WebRtcNativeHandler::DestroyCastSendTransport, | 133 base::Bind(&CastStreamingNativeHandler::DestroyCastRtpStream, |
134 base::Unretained(this))); | 134 base::Unretained(this))); |
135 RouteFunction("GetCapsCastSendTransport", | 135 RouteFunction("GetCapsCastRtpStream", |
136 base::Bind(&WebRtcNativeHandler::GetCapsCastSendTransport, | 136 base::Bind(&CastStreamingNativeHandler::GetCapsCastRtpStream, |
137 base::Unretained(this))); | 137 base::Unretained(this))); |
138 RouteFunction("StartCastSendTransport", | 138 RouteFunction("StartCastRtpStream", |
139 base::Bind(&WebRtcNativeHandler::StartCastSendTransport, | 139 base::Bind(&CastStreamingNativeHandler::StartCastRtpStream, |
140 base::Unretained(this))); | 140 base::Unretained(this))); |
141 RouteFunction("StopCastSendTransport", | 141 RouteFunction("StopCastRtpStream", |
142 base::Bind(&WebRtcNativeHandler::StopCastSendTransport, | 142 base::Bind(&CastStreamingNativeHandler::StopCastRtpStream, |
143 base::Unretained(this))); | 143 base::Unretained(this))); |
144 RouteFunction("DestroyCastUdpTransport", | 144 RouteFunction("DestroyCastUdpTransport", |
145 base::Bind(&WebRtcNativeHandler::DestroyCastUdpTransport, | 145 base::Bind(&CastStreamingNativeHandler::DestroyCastUdpTransport, |
146 base::Unretained(this))); | 146 base::Unretained(this))); |
147 RouteFunction("StartCastUdpTransport", | 147 RouteFunction("StartCastUdpTransport", |
148 base::Bind(&WebRtcNativeHandler::StartCastUdpTransport, | 148 base::Bind(&CastStreamingNativeHandler::StartCastUdpTransport, |
149 base::Unretained(this))); | 149 base::Unretained(this))); |
150 } | 150 } |
151 | 151 |
152 WebRtcNativeHandler::~WebRtcNativeHandler() { | 152 CastStreamingNativeHandler::~CastStreamingNativeHandler() { |
153 } | 153 } |
154 | 154 |
155 void WebRtcNativeHandler::CreateCastSession( | 155 void CastStreamingNativeHandler::CreateCastSession( |
156 const v8::FunctionCallbackInfo<v8::Value>& args) { | 156 const v8::FunctionCallbackInfo<v8::Value>& args) { |
157 CHECK_EQ(3, args.Length()); | 157 CHECK_EQ(3, args.Length()); |
158 CHECK(args[0]->IsObject()); | 158 CHECK(args[0]->IsObject()); |
159 CHECK(args[1]->IsObject()); | 159 CHECK(args[1]->IsObject()); |
160 CHECK(args[2]->IsFunction()); | 160 CHECK(args[2]->IsFunction()); |
161 | 161 |
162 blink::WebDOMMediaStreamTrack track1 = | 162 blink::WebDOMMediaStreamTrack track1 = |
163 blink::WebDOMMediaStreamTrack::fromV8Value(args[0]); | 163 blink::WebDOMMediaStreamTrack::fromV8Value(args[0]); |
164 if (track1.isNull()) | 164 if (track1.isNull()) |
165 return; | 165 return; |
166 blink::WebDOMMediaStreamTrack track2 = | 166 blink::WebDOMMediaStreamTrack track2 = |
167 blink::WebDOMMediaStreamTrack::fromV8Value(args[1]); | 167 blink::WebDOMMediaStreamTrack::fromV8Value(args[1]); |
168 if (track2.isNull()) | 168 if (track2.isNull()) |
169 return; | 169 return; |
170 | 170 |
171 scoped_refptr<CastSession> session(new CastSession()); | 171 scoped_refptr<CastSession> session(new CastSession()); |
172 scoped_ptr<CastSendTransport> stream1( | 172 scoped_ptr<CastRtpStream> stream1( |
173 new CastSendTransport(track1.component(), session)); | 173 new CastRtpStream(track1.component(), session)); |
174 scoped_ptr<CastSendTransport> stream2( | 174 scoped_ptr<CastRtpStream> stream2( |
175 new CastSendTransport(track2.component(), session)); | 175 new CastRtpStream(track2.component(), session)); |
176 scoped_ptr<CastUdpTransport> udp_transport( | 176 scoped_ptr<CastUdpTransport> udp_transport( |
177 new CastUdpTransport(session)); | 177 new CastUdpTransport(session)); |
178 | 178 |
179 create_callback_.reset(args[2].As<v8::Function>()); | 179 create_callback_.reset(args[2].As<v8::Function>()); |
180 | 180 |
181 base::MessageLoop::current()->PostTask( | 181 base::MessageLoop::current()->PostTask( |
182 FROM_HERE, | 182 FROM_HERE, |
183 base::Bind( | 183 base::Bind( |
184 &WebRtcNativeHandler::CallCreateCallback, | 184 &CastStreamingNativeHandler::CallCreateCallback, |
185 weak_factory_.GetWeakPtr(), | 185 weak_factory_.GetWeakPtr(), |
186 base::Passed(&stream1), | 186 base::Passed(&stream1), |
187 base::Passed(&stream2), | 187 base::Passed(&stream2), |
188 base::Passed(&udp_transport))); | 188 base::Passed(&udp_transport))); |
189 } | 189 } |
190 | 190 |
191 void WebRtcNativeHandler::CallCreateCallback( | 191 void CastStreamingNativeHandler::CallCreateCallback( |
192 scoped_ptr<CastSendTransport> stream1, | 192 scoped_ptr<CastRtpStream> stream1, |
193 scoped_ptr<CastSendTransport> stream2, | 193 scoped_ptr<CastRtpStream> stream2, |
194 scoped_ptr<CastUdpTransport> udp_transport) { | 194 scoped_ptr<CastUdpTransport> udp_transport) { |
195 v8::HandleScope handle_scope(context()->isolate()); | 195 v8::HandleScope handle_scope(context()->isolate()); |
196 v8::Context::Scope context_scope(context()->v8_context()); | 196 v8::Context::Scope context_scope(context()->v8_context()); |
197 | 197 |
198 const int stream1_id = last_transport_id_++; | 198 const int stream1_id = last_transport_id_++; |
199 send_transport_map_[stream1_id] = | 199 rtp_stream_map_[stream1_id] = |
200 linked_ptr<CastSendTransport>(stream1.release()); | 200 linked_ptr<CastRtpStream>(stream1.release()); |
201 const int stream2_id = last_transport_id_++; | 201 const int stream2_id = last_transport_id_++; |
202 send_transport_map_[stream2_id] = | 202 rtp_stream_map_[stream2_id] = |
203 linked_ptr<CastSendTransport>(stream2.release()); | 203 linked_ptr<CastRtpStream>(stream2.release()); |
204 const int udp_id = last_transport_id_++; | 204 const int udp_id = last_transport_id_++; |
205 udp_transport_map_[udp_id] = | 205 udp_transport_map_[udp_id] = |
206 linked_ptr<CastUdpTransport>(udp_transport.release()); | 206 linked_ptr<CastUdpTransport>(udp_transport.release()); |
207 | 207 |
208 v8::Handle<v8::Value> callback_args[3]; | 208 v8::Handle<v8::Value> callback_args[3]; |
209 callback_args[0] = v8::Integer::New(stream1_id); | 209 callback_args[0] = v8::Integer::New(stream1_id); |
210 callback_args[1] = v8::Integer::New(stream2_id); | 210 callback_args[1] = v8::Integer::New(stream2_id); |
211 callback_args[2] = v8::Integer::New(udp_id); | 211 callback_args[2] = v8::Integer::New(udp_id); |
212 context()->CallFunction(create_callback_.NewHandle(context()->isolate()), | 212 context()->CallFunction(create_callback_.NewHandle(context()->isolate()), |
213 3, callback_args); | 213 3, callback_args); |
214 create_callback_.reset(); | 214 create_callback_.reset(); |
215 } | 215 } |
216 | 216 |
217 void WebRtcNativeHandler::DestroyCastSendTransport( | 217 void CastStreamingNativeHandler::DestroyCastRtpStream( |
218 const v8::FunctionCallbackInfo<v8::Value>& args) { | 218 const v8::FunctionCallbackInfo<v8::Value>& args) { |
219 CHECK_EQ(1, args.Length()); | 219 CHECK_EQ(1, args.Length()); |
220 CHECK(args[0]->IsInt32()); | 220 CHECK(args[0]->IsInt32()); |
221 | 221 |
222 const int transport_id = args[0]->ToInt32()->Value(); | 222 const int transport_id = args[0]->ToInt32()->Value(); |
223 if (!GetSendTransportOrThrow(transport_id)) | 223 if (!GetRtpStreamOrThrow(transport_id)) |
224 return; | 224 return; |
225 send_transport_map_.erase(transport_id); | 225 rtp_stream_map_.erase(transport_id); |
226 } | 226 } |
227 | 227 |
228 void WebRtcNativeHandler::GetCapsCastSendTransport( | 228 void CastStreamingNativeHandler::GetCapsCastRtpStream( |
229 const v8::FunctionCallbackInfo<v8::Value>& args) { | 229 const v8::FunctionCallbackInfo<v8::Value>& args) { |
230 CHECK_EQ(1, args.Length()); | 230 CHECK_EQ(1, args.Length()); |
231 CHECK(args[0]->IsInt32()); | 231 CHECK(args[0]->IsInt32()); |
232 | 232 |
233 const int transport_id = args[0]->ToInt32()->Value(); | 233 const int transport_id = args[0]->ToInt32()->Value(); |
234 CastSendTransport* transport = GetSendTransportOrThrow(transport_id); | 234 CastRtpStream* transport = GetRtpStreamOrThrow(transport_id); |
235 if (!transport) | 235 if (!transport) |
236 return; | 236 return; |
237 | 237 |
238 CastRtpCaps cast_caps = transport->GetCaps(); | 238 CastRtpCaps cast_caps = transport->GetCaps(); |
239 RtpCaps caps; | 239 RtpCaps caps; |
240 FromCastRtpCaps(cast_caps, &caps); | 240 FromCastRtpCaps(cast_caps, &caps); |
241 | 241 |
242 scoped_ptr<base::DictionaryValue> caps_value = caps.ToValue(); | 242 scoped_ptr<base::DictionaryValue> caps_value = caps.ToValue(); |
243 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); | 243 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); |
244 args.GetReturnValue().Set(converter->ToV8Value( | 244 args.GetReturnValue().Set(converter->ToV8Value( |
245 caps_value.get(), context()->v8_context())); | 245 caps_value.get(), context()->v8_context())); |
246 } | 246 } |
247 | 247 |
248 void WebRtcNativeHandler::StartCastSendTransport( | 248 void CastStreamingNativeHandler::StartCastRtpStream( |
249 const v8::FunctionCallbackInfo<v8::Value>& args) { | 249 const v8::FunctionCallbackInfo<v8::Value>& args) { |
250 CHECK_EQ(2, args.Length()); | 250 CHECK_EQ(2, args.Length()); |
251 CHECK(args[0]->IsInt32()); | 251 CHECK(args[0]->IsInt32()); |
252 CHECK(args[1]->IsObject()); | 252 CHECK(args[1]->IsObject()); |
253 | 253 |
254 const int transport_id = args[0]->ToInt32()->Value(); | 254 const int transport_id = args[0]->ToInt32()->Value(); |
255 CastSendTransport* transport = GetSendTransportOrThrow(transport_id); | 255 CastRtpStream* transport = GetRtpStreamOrThrow(transport_id); |
256 if (!transport) | 256 if (!transport) |
257 return; | 257 return; |
258 | 258 |
259 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); | 259 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); |
260 scoped_ptr<Value> params_value( | 260 scoped_ptr<Value> params_value( |
261 converter->FromV8Value(args[1], context()->v8_context())); | 261 converter->FromV8Value(args[1], context()->v8_context())); |
262 if (!params_value) { | 262 if (!params_value) { |
263 args.GetIsolate()->ThrowException(v8::Exception::TypeError( | 263 args.GetIsolate()->ThrowException(v8::Exception::TypeError( |
264 v8::String::NewFromUtf8(args.GetIsolate(), kUnableToConvertParams))); | 264 v8::String::NewFromUtf8(args.GetIsolate(), kUnableToConvertParams))); |
265 return; | 265 return; |
266 } | 266 } |
267 scoped_ptr<RtpParams> params = RtpParams::FromValue(*params_value); | 267 scoped_ptr<RtpParams> params = RtpParams::FromValue(*params_value); |
268 if (!params) { | 268 if (!params) { |
269 args.GetIsolate()->ThrowException(v8::Exception::TypeError( | 269 args.GetIsolate()->ThrowException(v8::Exception::TypeError( |
270 v8::String::NewFromUtf8(args.GetIsolate(), kInvalidRtpParams))); | 270 v8::String::NewFromUtf8(args.GetIsolate(), kInvalidRtpParams))); |
271 return; | 271 return; |
272 } | 272 } |
273 | 273 |
274 CastRtpCaps cast_params; | 274 CastRtpCaps cast_params; |
275 ToCastRtpParams(*params, &cast_params); | 275 ToCastRtpParams(*params, &cast_params); |
276 transport->Start(cast_params); | 276 transport->Start(cast_params); |
277 } | 277 } |
278 | 278 |
279 void WebRtcNativeHandler::StopCastSendTransport( | 279 void CastStreamingNativeHandler::StopCastRtpStream( |
280 const v8::FunctionCallbackInfo<v8::Value>& args) { | 280 const v8::FunctionCallbackInfo<v8::Value>& args) { |
281 CHECK_EQ(1, args.Length()); | 281 CHECK_EQ(1, args.Length()); |
282 CHECK(args[0]->IsInt32()); | 282 CHECK(args[0]->IsInt32()); |
283 | 283 |
284 const int transport_id = args[0]->ToInt32()->Value(); | 284 const int transport_id = args[0]->ToInt32()->Value(); |
285 CastSendTransport* transport = GetSendTransportOrThrow(transport_id); | 285 CastRtpStream* transport = GetRtpStreamOrThrow(transport_id); |
286 if (!transport) | 286 if (!transport) |
287 return; | 287 return; |
288 transport->Stop(); | 288 transport->Stop(); |
289 } | 289 } |
290 | 290 |
291 void WebRtcNativeHandler::DestroyCastUdpTransport( | 291 void CastStreamingNativeHandler::DestroyCastUdpTransport( |
292 const v8::FunctionCallbackInfo<v8::Value>& args) { | 292 const v8::FunctionCallbackInfo<v8::Value>& args) { |
293 CHECK_EQ(1, args.Length()); | 293 CHECK_EQ(1, args.Length()); |
294 CHECK(args[0]->IsInt32()); | 294 CHECK(args[0]->IsInt32()); |
295 | 295 |
296 const int transport_id = args[0]->ToInt32()->Value(); | 296 const int transport_id = args[0]->ToInt32()->Value(); |
297 if (!GetUdpTransportOrThrow(transport_id)) | 297 if (!GetUdpTransportOrThrow(transport_id)) |
298 return; | 298 return; |
299 udp_transport_map_.erase(transport_id); | 299 udp_transport_map_.erase(transport_id); |
300 } | 300 } |
301 | 301 |
302 void WebRtcNativeHandler::StartCastUdpTransport( | 302 void CastStreamingNativeHandler::StartCastUdpTransport( |
303 const v8::FunctionCallbackInfo<v8::Value>& args) { | 303 const v8::FunctionCallbackInfo<v8::Value>& args) { |
304 CHECK_EQ(2, args.Length()); | 304 CHECK_EQ(2, args.Length()); |
305 CHECK(args[0]->IsInt32()); | 305 CHECK(args[0]->IsInt32()); |
306 CHECK(args[1]->IsObject()); | 306 CHECK(args[1]->IsObject()); |
307 | 307 |
308 const int transport_id = args[0]->ToInt32()->Value(); | 308 const int transport_id = args[0]->ToInt32()->Value(); |
309 CastUdpTransport* transport = GetUdpTransportOrThrow(transport_id); | 309 CastUdpTransport* transport = GetUdpTransportOrThrow(transport_id); |
310 if (!transport) | 310 if (!transport) |
311 return; | 311 return; |
312 | 312 |
313 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); | 313 scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); |
314 scoped_ptr<Value> udp_params_value( | 314 scoped_ptr<Value> udp_params_value( |
315 converter->FromV8Value(args[1], context()->v8_context())); | 315 converter->FromV8Value(args[1], context()->v8_context())); |
316 if (!udp_params_value) { | 316 if (!udp_params_value) { |
317 args.GetIsolate()->ThrowException(v8::Exception::TypeError( | 317 args.GetIsolate()->ThrowException(v8::Exception::TypeError( |
318 v8::String::NewFromUtf8(args.GetIsolate(), kUnableToConvertArgs))); | 318 v8::String::NewFromUtf8(args.GetIsolate(), kUnableToConvertArgs))); |
319 return; | 319 return; |
320 } | 320 } |
321 scoped_ptr<UdpParams> udp_params = UdpParams::FromValue(*udp_params_value); | 321 scoped_ptr<UdpParams> udp_params = UdpParams::FromValue(*udp_params_value); |
322 if (!udp_params) { | 322 if (!udp_params) { |
323 args.GetIsolate()->ThrowException(v8::Exception::TypeError( | 323 args.GetIsolate()->ThrowException(v8::Exception::TypeError( |
324 v8::String::NewFromUtf8(args.GetIsolate(), kInvalidUdpParams))); | 324 v8::String::NewFromUtf8(args.GetIsolate(), kInvalidUdpParams))); |
325 return; | 325 return; |
326 } | 326 } |
327 transport->Start(net::HostPortPair(udp_params->address, udp_params->port)); | 327 transport->Start(net::HostPortPair(udp_params->address, udp_params->port)); |
328 } | 328 } |
329 | 329 |
330 CastSendTransport* WebRtcNativeHandler::GetSendTransportOrThrow( | 330 CastRtpStream* CastStreamingNativeHandler::GetRtpStreamOrThrow( |
331 int transport_id) const { | 331 int transport_id) const { |
332 SendTransportMap::const_iterator iter = send_transport_map_.find( | 332 RtpStreamMap::const_iterator iter = rtp_stream_map_.find( |
333 transport_id); | 333 transport_id); |
334 if (iter != send_transport_map_.end()) | 334 if (iter != rtp_stream_map_.end()) |
335 return iter->second.get(); | 335 return iter->second.get(); |
336 v8::Isolate* isolate = context()->v8_context()->GetIsolate(); | 336 v8::Isolate* isolate = context()->v8_context()->GetIsolate(); |
337 isolate->ThrowException(v8::Exception::RangeError( | 337 isolate->ThrowException(v8::Exception::RangeError(v8::String::NewFromUtf8( |
338 v8::String::NewFromUtf8(isolate, kSendTransportNotFound))); | 338 isolate, kRtpStreamNotFound))); |
339 return NULL; | 339 return NULL; |
340 } | 340 } |
341 | 341 |
342 CastUdpTransport* WebRtcNativeHandler::GetUdpTransportOrThrow( | 342 CastUdpTransport* CastStreamingNativeHandler::GetUdpTransportOrThrow( |
343 int transport_id) const { | 343 int transport_id) const { |
344 UdpTransportMap::const_iterator iter = udp_transport_map_.find( | 344 UdpTransportMap::const_iterator iter = udp_transport_map_.find( |
345 transport_id); | 345 transport_id); |
346 if (iter != udp_transport_map_.end()) | 346 if (iter != udp_transport_map_.end()) |
347 return iter->second.get(); | 347 return iter->second.get(); |
348 v8::Isolate* isolate = context()->v8_context()->GetIsolate(); | 348 v8::Isolate* isolate = context()->v8_context()->GetIsolate(); |
349 isolate->ThrowException(v8::Exception::RangeError( | 349 isolate->ThrowException(v8::Exception::RangeError( |
350 v8::String::NewFromUtf8(isolate, kUdpTransportNotFound))); | 350 v8::String::NewFromUtf8(isolate, kUdpTransportNotFound))); |
351 return NULL; | 351 return NULL; |
352 } | 352 } |
353 | 353 |
354 } // namespace extensions | 354 } // namespace extensions |
OLD | NEW |