| Index: chrome/renderer/extensions/cast_streaming_native_handler.cc
|
| diff --git a/chrome/renderer/extensions/cast_streaming_native_handler.cc b/chrome/renderer/extensions/cast_streaming_native_handler.cc
|
| index 38ab2ae7408a3acac7fb5e813348139a593be654..b2547f6579c77fc7bed54b567e424b6b3d99e40f 100644
|
| --- a/chrome/renderer/extensions/cast_streaming_native_handler.cc
|
| +++ b/chrome/renderer/extensions/cast_streaming_native_handler.cc
|
| @@ -33,6 +33,7 @@
|
| #include "content/public/child/v8_value_converter.h"
|
| #include "content/public/renderer/media_stream_utils.h"
|
| #include "extensions/common/extension.h"
|
| +#include "extensions/renderer/extension_bindings_system.h"
|
| #include "extensions/renderer/script_context.h"
|
| #include "media/base/audio_parameters.h"
|
| #include "media/base/limits.h"
|
| @@ -294,12 +295,15 @@ void FromFrameSenderConfig(const FrameSenderConfig& config,
|
| // extension. Collision will happen when the first RTP stream keeps alive after
|
| // creating another 64k-1 RTP streams in the same extension, which is very
|
| // unlikely to happen in normal use cases.
|
| -CastStreamingNativeHandler::CastStreamingNativeHandler(ScriptContext* context)
|
| +CastStreamingNativeHandler::CastStreamingNativeHandler(
|
| + ScriptContext* context,
|
| + ExtensionBindingsSystem* bindings_system)
|
| : ObjectBackedNativeHandler(context),
|
| last_transport_id_(
|
| context->extension()
|
| ? (((base::Hash(context->extension()->id()) & 0x7fff) << 16) + 1)
|
| : 1),
|
| + bindings_system_(bindings_system),
|
| weak_factory_(this) {
|
| RouteFunction("CreateSession", "cast.streaming.session",
|
| base::Bind(&CastStreamingNativeHandler::CreateCastSession,
|
| @@ -447,36 +451,27 @@ void CastStreamingNativeHandler::CallCreateCallback(
|
| }
|
|
|
| void CastStreamingNativeHandler::CallStartCallback(int stream_id) const {
|
| - v8::Isolate* isolate = context()->isolate();
|
| - v8::HandleScope handle_scope(isolate);
|
| - v8::Context::Scope context_scope(context()->v8_context());
|
| - v8::Local<v8::Array> event_args = v8::Array::New(isolate, 1);
|
| - event_args->Set(0, v8::Integer::New(isolate, stream_id));
|
| - context()->DispatchEvent("cast.streaming.rtpStream.onStarted", event_args);
|
| + base::ListValue event_args;
|
| + event_args.AppendInteger(stream_id);
|
| + bindings_system_->DispatchEventInContext("cast.streaming.rtpStream.onStarted",
|
| + &event_args, nullptr, context());
|
| }
|
|
|
| void CastStreamingNativeHandler::CallStopCallback(int stream_id) const {
|
| - v8::Isolate* isolate = context()->isolate();
|
| - v8::HandleScope handle_scope(isolate);
|
| - v8::Context::Scope context_scope(context()->v8_context());
|
| - v8::Local<v8::Array> event_args = v8::Array::New(isolate, 1);
|
| - event_args->Set(0, v8::Integer::New(isolate, stream_id));
|
| - context()->DispatchEvent("cast.streaming.rtpStream.onStopped", event_args);
|
| + base::ListValue event_args;
|
| + event_args.AppendInteger(stream_id);
|
| + bindings_system_->DispatchEventInContext("cast.streaming.rtpStream.onStopped",
|
| + &event_args, nullptr, context());
|
| }
|
|
|
| void CastStreamingNativeHandler::CallErrorCallback(
|
| int stream_id,
|
| const std::string& message) const {
|
| - v8::Isolate* isolate = context()->isolate();
|
| - v8::HandleScope handle_scope(isolate);
|
| - v8::Context::Scope context_scope(context()->v8_context());
|
| - v8::Local<v8::Array> event_args = v8::Array::New(isolate, 2);
|
| - event_args->Set(0, v8::Integer::New(isolate, stream_id));
|
| - event_args->Set(
|
| - 1,
|
| - v8::String::NewFromUtf8(
|
| - isolate, message.data(), v8::String::kNormalString, message.size()));
|
| - context()->DispatchEvent("cast.streaming.rtpStream.onError", event_args);
|
| + base::ListValue event_args;
|
| + event_args.AppendInteger(stream_id);
|
| + event_args.AppendString(message);
|
| + bindings_system_->DispatchEventInContext("cast.streaming.rtpStream.onError",
|
| + &event_args, nullptr, context());
|
| }
|
|
|
| void CastStreamingNativeHandler::DestroyCastRtpStream(
|
|
|