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

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

Issue 90083002: Cast Extensions API: Major namespace and object renaming (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix unit_tests 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
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
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
OLDNEW
« no previous file with comments | « chrome/renderer/extensions/cast_streaming_native_handler.h ('k') | chrome/renderer/extensions/dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698