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