summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions/cast_streaming_native_handler.cc
diff options
context:
space:
mode:
authorimcheng@chromium.org <imcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-14 06:33:23 +0000
committerimcheng@chromium.org <imcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-14 06:33:23 +0000
commita5143efbc8521c9116f9fe36090f4b2e9dd75ec8 (patch)
treea436c633f3b2a21a9fbc5700608ffa9e1117fcd9 /chrome/renderer/extensions/cast_streaming_native_handler.cc
parentbf7e9fb112eb09c9c76afe25a6f0c89ae064978f (diff)
downloadchromium_src-a5143efbc8521c9116f9fe36090f4b2e9dd75ec8.zip
chromium_src-a5143efbc8521c9116f9fe36090f4b2e9dd75ec8.tar.gz
chromium_src-a5143efbc8521c9116f9fe36090f4b2e9dd75ec8.tar.bz2
Cast: Add extraData argument to cast streaming api getLogs().
We will use this argument to pass in extra info like system information, experiment tags for the mirror session, and have it attached to the log. Review URL: https://codereview.chromium.org/275213004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270346 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.cc30
1 files changed, 21 insertions, 9 deletions
diff --git a/chrome/renderer/extensions/cast_streaming_native_handler.cc b/chrome/renderer/extensions/cast_streaming_native_handler.cc
index c3fee5b..284ad77 100644
--- a/chrome/renderer/extensions/cast_streaming_native_handler.cc
+++ b/chrome/renderer/extensions/cast_streaming_native_handler.cc
@@ -217,6 +217,8 @@ void CastStreamingNativeHandler::CreateCastSession(
scoped_ptr<CastUdpTransport> udp_transport(
new CastUdpTransport(session));
+ // TODO(imcheng): Use a weak reference to ensure we don't call into an
+ // invalid context when the callback is invoked.
create_callback_.reset(args[2].As<v8::Function>());
base::MessageLoop::current()->PostTask(
@@ -446,23 +448,32 @@ void CastStreamingNativeHandler::ToggleLogging(
void CastStreamingNativeHandler::GetRawEvents(
const v8::FunctionCallbackInfo<v8::Value>& args) {
- CHECK_EQ(2, args.Length());
+ CHECK_EQ(3, args.Length());
CHECK(args[0]->IsInt32());
- CHECK(args[1]->IsFunction());
+ CHECK(args[1]->IsNull() || args[1]->IsString());
+ CHECK(args[2]->IsFunction());
+
const int transport_id = args[0]->ToInt32()->Value();
+ // TODO(imcheng): Use a weak reference to ensure we don't call into an
+ // invalid context when the callback is invoked.
+ linked_ptr<ScopedPersistent<v8::Function> > callback(
+ new ScopedPersistent<v8::Function>(args[2].As<v8::Function>()));
+ std::string extra_data;
+ if (!args[1]->IsNull()) {
+ extra_data = *v8::String::Utf8Value(args[1]);
+ }
+
CastRtpStream* transport = GetRtpStreamOrThrow(transport_id);
if (!transport)
return;
- linked_ptr<extensions::ScopedPersistent<v8::Function> > callback(
- new extensions::ScopedPersistent<v8::Function>);
- callback->reset(args[1].As<v8::Function>());
get_raw_events_callbacks_.insert(std::make_pair(transport_id, callback));
transport->GetRawEvents(
base::Bind(&CastStreamingNativeHandler::CallGetRawEventsCallback,
weak_factory_.GetWeakPtr(),
- transport_id));
+ transport_id),
+ extra_data);
}
void CastStreamingNativeHandler::GetStats(
@@ -475,9 +486,10 @@ void CastStreamingNativeHandler::GetStats(
if (!transport)
return;
- linked_ptr<extensions::ScopedPersistent<v8::Function> > callback(
- new extensions::ScopedPersistent<v8::Function>);
- callback->reset(args[1].As<v8::Function>());
+ // TODO(imcheng): Use a weak reference to ensure we don't call into an
+ // invalid context when the callback is invoked.
+ linked_ptr<ScopedPersistent<v8::Function> > callback(
+ new ScopedPersistent<v8::Function>(args[1].As<v8::Function>()));
get_stats_callbacks_.insert(std::make_pair(transport_id, callback));
transport->GetStats(