summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions/cast_streaming_native_handler.cc
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-12 17:31:30 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-12 17:31:30 +0000
commit29cb8a8f2bd44af0f27e9add0a3bb445cdb9a28f (patch)
tree9b5d8cb7e9a692d22c2188780701693ec825b739 /chrome/renderer/extensions/cast_streaming_native_handler.cc
parent8a82269dafa5aca936588a6d9a7b74acfc8565c9 (diff)
downloadchromium_src-29cb8a8f2bd44af0f27e9add0a3bb445cdb9a28f.zip
chromium_src-29cb8a8f2bd44af0f27e9add0a3bb445cdb9a28f.tar.gz
chromium_src-29cb8a8f2bd44af0f27e9add0a3bb445cdb9a28f.tar.bz2
Implement events for cast.streaming.rtpStream API
This change implements: cast.streaming.rtpStream.onStarted cast.streaming.rtpStream.onStopped cast.streaming.rtpStream.onError Above event handlers are now called when a stream starts, stops and encounters an error. CastStreamingApiTest is updated to connect these events for testing. BUG=301920 Review URL: https://codereview.chromium.org/143243003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250740 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions/cast_streaming_native_handler.cc')
-rw-r--r--chrome/renderer/extensions/cast_streaming_native_handler.cc47
1 files changed, 46 insertions, 1 deletions
diff --git a/chrome/renderer/extensions/cast_streaming_native_handler.cc b/chrome/renderer/extensions/cast_streaming_native_handler.cc
index 8170f63..71fd3e9 100644
--- a/chrome/renderer/extensions/cast_streaming_native_handler.cc
+++ b/chrome/renderer/extensions/cast_streaming_native_handler.cc
@@ -236,6 +236,38 @@ void CastStreamingNativeHandler::CallCreateCallback(
create_callback_.reset();
}
+void CastStreamingNativeHandler::CallStartCallback(int stream_id) {
+ v8::Isolate* isolate = context()->isolate();
+ v8::HandleScope handle_scope(isolate);
+ v8::Context::Scope context_scope(context()->v8_context());
+ v8::Handle<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);
+}
+
+void CastStreamingNativeHandler::CallStopCallback(int stream_id) {
+ v8::Isolate* isolate = context()->isolate();
+ v8::HandleScope handle_scope(isolate);
+ v8::Context::Scope context_scope(context()->v8_context());
+ v8::Handle<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);
+}
+
+void CastStreamingNativeHandler::CallErrorCallback(int stream_id,
+ const std::string& message) {
+ v8::Isolate* isolate = context()->isolate();
+ v8::HandleScope handle_scope(isolate);
+ v8::Context::Scope context_scope(context()->v8_context());
+ v8::Handle<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);
+}
+
void CastStreamingNativeHandler::DestroyCastRtpStream(
const v8::FunctionCallbackInfo<v8::Value>& args) {
CHECK_EQ(1, args.Length());
@@ -303,7 +335,20 @@ void CastStreamingNativeHandler::StartCastRtpStream(
v8::Isolate* isolate = context()->v8_context()->GetIsolate();
if (!ToCastRtpParamsOrThrow(isolate, *params, &cast_params))
return;
- transport->Start(cast_params);
+
+ base::Closure start_callback =
+ base::Bind(&CastStreamingNativeHandler::CallStartCallback,
+ weak_factory_.GetWeakPtr(),
+ transport_id);
+ base::Closure stop_callback =
+ base::Bind(&CastStreamingNativeHandler::CallStopCallback,
+ weak_factory_.GetWeakPtr(),
+ transport_id);
+ CastRtpStream::ErrorCallback error_callback =
+ base::Bind(&CastStreamingNativeHandler::CallErrorCallback,
+ weak_factory_.GetWeakPtr(),
+ transport_id);
+ transport->Start(cast_params, start_callback, stop_callback, error_callback);
}
void CastStreamingNativeHandler::StopCastRtpStream(