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 9b50ae1db578a73b63ff6c0d5c2392ba93c4966c..a42ad90919aa6bcd75deb4eab58b22ac615526a4 100644 |
--- a/chrome/renderer/extensions/cast_streaming_native_handler.cc |
+++ b/chrome/renderer/extensions/cast_streaming_native_handler.cc |
@@ -184,6 +184,9 @@ CastStreamingNativeHandler::CastStreamingNativeHandler(ScriptContext* context) |
RouteFunction("SetDestinationCastUdpTransport", |
base::Bind(&CastStreamingNativeHandler::SetDestinationCastUdpTransport, |
base::Unretained(this))); |
+ RouteFunction("SetOptionsCastUdpTransport", |
+ base::Bind(&CastStreamingNativeHandler::SetOptionsCastUdpTransport, |
+ base::Unretained(this))); |
RouteFunction("ToggleLogging", |
base::Bind(&CastStreamingNativeHandler::ToggleLogging, |
base::Unretained(this))); |
@@ -458,6 +461,30 @@ void CastStreamingNativeHandler::SetDestinationCastUdpTransport( |
transport->SetDestination(net::IPEndPoint(ip, destination->port)); |
} |
+void CastStreamingNativeHandler::SetOptionsCastUdpTransport( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ CHECK_EQ(2, args.Length()); |
+ CHECK(args[0]->IsInt32()); |
+ CHECK(args[1]->IsObject()); |
+ |
+ const int transport_id = args[0]->ToInt32()->Value(); |
+ CastUdpTransport* transport = GetUdpTransportOrThrow(transport_id); |
+ if (!transport) |
+ return; |
+ |
+ scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); |
+ base::Value* options_value = |
+ converter->FromV8Value(args[1], context()->v8_context()); |
+ base::DictionaryValue* options; |
+ if (!options_value || !options_value->GetAsDictionary(&options)) { |
+ delete options_value; |
+ args.GetIsolate()->ThrowException(v8::Exception::TypeError( |
+ v8::String::NewFromUtf8(args.GetIsolate(), kUnableToConvertArgs))); |
+ return; |
+ } |
+ transport->SetOptions(make_scoped_ptr(options)); |
+} |
+ |
void CastStreamingNativeHandler::ToggleLogging( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
CHECK_EQ(2, args.Length()); |