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()); |