diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-12 17:31:30 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-12 17:31:30 +0000 |
commit | 29cb8a8f2bd44af0f27e9add0a3bb445cdb9a28f (patch) | |
tree | 9b5d8cb7e9a692d22c2188780701693ec825b739 /chrome/renderer/extensions/cast_streaming_native_handler.cc | |
parent | 8a82269dafa5aca936588a6d9a7b74acfc8565c9 (diff) | |
download | chromium_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.cc | 47 |
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( |