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