Chromium Code Reviews| Index: chrome/renderer/extensions/webrtc_native_handler.cc |
| diff --git a/chrome/renderer/extensions/webrtc_native_handler.cc b/chrome/renderer/extensions/webrtc_native_handler.cc |
| index c10d061d5009bb35ccfcbaaf32b2cd86793b760d..8f9fcb61272483520c806f4f21e4689d90732f35 100644 |
| --- a/chrome/renderer/extensions/webrtc_native_handler.cc |
| +++ b/chrome/renderer/extensions/webrtc_native_handler.cc |
| @@ -147,8 +147,8 @@ void FromCastRtpParams(const CastRtpParams& cast_params, |
| WebRtcNativeHandler::WebRtcNativeHandler(ChromeV8Context* context) |
| : ObjectBackedNativeHandler(context), |
| last_transport_id_(0) { |
| - RouteFunction("CreateCastSendTransport", |
| - base::Bind(&WebRtcNativeHandler::CreateCastSendTransport, |
| + RouteFunction("CreateSession", |
| + base::Bind(&WebRtcNativeHandler::CreateCastSession, |
| base::Unretained(this))); |
| RouteFunction("DestroyCastSendTransport", |
| base::Bind(&WebRtcNativeHandler::DestroyCastSendTransport, |
| @@ -162,9 +162,6 @@ WebRtcNativeHandler::WebRtcNativeHandler(ChromeV8Context* context) |
| RouteFunction("StopCastSendTransport", |
| base::Bind(&WebRtcNativeHandler::StopCastSendTransport, |
| base::Unretained(this))); |
| - RouteFunction("CreateCastUdpTransport", |
| - base::Bind(&WebRtcNativeHandler::CreateCastUdpTransport, |
| - base::Unretained(this))); |
| RouteFunction("DestroyCastUdpTransport", |
| base::Bind(&WebRtcNativeHandler::DestroyCastUdpTransport, |
| base::Unretained(this))); |
| @@ -176,31 +173,42 @@ WebRtcNativeHandler::WebRtcNativeHandler(ChromeV8Context* context) |
| WebRtcNativeHandler::~WebRtcNativeHandler() { |
| } |
| -void WebRtcNativeHandler::CreateCastSendTransport( |
| +void WebRtcNativeHandler::CreateCastSession( |
| const v8::FunctionCallbackInfo<v8::Value>& args) { |
| CHECK_EQ(3, args.Length()); |
| - CHECK(args[0]->IsInt32()); |
| + CHECK(args[0]->IsObject()); |
| CHECK(args[1]->IsObject()); |
| CHECK(args[2]->IsFunction()); |
| - const int inner_transport_id = args[0]->ToInt32()->Value(); |
| - CastUdpTransport* inner_transport = GetUdpTransportOrThrow( |
| - inner_transport_id); |
| - if (!inner_transport) |
| + blink::WebDOMMediaStreamTrack track1 = |
| + blink::WebDOMMediaStreamTrack::fromV8Value(args[0]); |
| + if (track1.isNull()) |
| return; |
| - |
| - blink::WebDOMMediaStreamTrack track = |
| + blink::WebDOMMediaStreamTrack track2 = |
| blink::WebDOMMediaStreamTrack::fromV8Value(args[1]); |
| - if (track.isNull()) |
| + if (track2.isNull()) |
| return; |
| - const int transport_id = last_transport_id_++; |
| - send_transport_map_[transport_id] = |
| - linked_ptr<CastSendTransport>( |
| - new CastSendTransport(inner_transport, track.component())); |
| - v8::Handle<v8::Value> transport_id_v8 = v8::Integer::New(transport_id); |
| - context()->CallFunction(v8::Handle<v8::Function>::Cast(args[2]), 1, |
| - &transport_id_v8); |
| + scoped_refptr<CastSession> session(new CastSession()); |
| + |
| + const int stream1_id = last_transport_id_++; |
| + send_transport_map_[stream1_id] = |
| + linked_ptr<CastSendTransport>( |
| + new CastSendTransport(track1.component(), session)); |
| + const int stream2_id = last_transport_id_++; |
| + send_transport_map_[stream2_id] = |
| + linked_ptr<CastSendTransport>( |
| + new CastSendTransport(track2.component(), session)); |
| + const int udp_id = last_transport_id_++; |
| + udp_transport_map_[udp_id] = |
| + linked_ptr<CastUdpTransport>(new CastUdpTransport(session)); |
| + |
| + v8::Handle<v8::Value> callback_args[3]; |
| + callback_args[0] = v8::Integer::New(stream1_id); |
| + callback_args[1] = v8::Integer::New(stream2_id); |
| + callback_args[2] = v8::Integer::New(udp_id); |
| + context()->CallFunction(v8::Handle<v8::Function>::Cast(args[2]), |
| + 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.
|
| } |
| void WebRtcNativeHandler::DestroyCastSendTransport( |
| @@ -277,20 +285,6 @@ void WebRtcNativeHandler::StopCastSendTransport( |
| transport->Stop(); |
| } |
| -void WebRtcNativeHandler::CreateCastUdpTransport( |
| - const v8::FunctionCallbackInfo<v8::Value>& args) { |
| - CHECK_EQ(1, args.Length()); |
| - CHECK(args[0]->IsFunction()); |
| - |
| - const int transport_id = last_transport_id_++; |
| - udp_transport_map_[transport_id] = |
| - linked_ptr<CastUdpTransport>(new CastUdpTransport()); |
| - |
| - v8::Handle<v8::Value> transport_id_v8 = v8::Integer::New(transport_id); |
| - context()->CallFunction(v8::Handle<v8::Function>::Cast(args[0]), 1, |
| - &transport_id_v8); |
| -} |
| - |
| void WebRtcNativeHandler::DestroyCastUdpTransport( |
| const v8::FunctionCallbackInfo<v8::Value>& args) { |
| CHECK_EQ(1, args.Length()); |