Chromium Code Reviews| Index: chrome/browser/extensions/api/cast_channel/cast_channel_api.cc |
| diff --git a/chrome/browser/extensions/api/cast_channel/cast_channel_api.cc b/chrome/browser/extensions/api/cast_channel/cast_channel_api.cc |
| index d1a84e4a31261a8f61178ce6c93e854619311df5..0fe631fb1aabd8bb0da16e1975559c82f763a119 100644 |
| --- a/chrome/browser/extensions/api/cast_channel/cast_channel_api.cc |
| +++ b/chrome/browser/extensions/api/cast_channel/cast_channel_api.cc |
| @@ -280,6 +280,8 @@ bool CastChannelOpenFunction::Prepare() { |
| connect_info_.reset(new ConnectInfo); |
| if (!ParseChannelUrl(GURL(cast_url), connect_info_.get())) { |
| connect_info_.reset(); |
| + SetError("Invalid Cast URL " + cast_url); |
| + return false; |
| } |
| break; |
| case base::Value::TYPE_DICTIONARY: |
| @@ -291,9 +293,13 @@ bool CastChannelOpenFunction::Prepare() { |
| if (connect_info_.get()) { |
| channel_auth_ = connect_info_->auth; |
| ip_endpoint_.reset(ParseConnectInfo(*connect_info_)); |
| - return ip_endpoint_.get() != NULL; |
| + if (!ip_endpoint_.get()) { |
| + SetError("Invalid connect_info"); |
| + } |
| + } else { |
| + SetError("Invalid connect_info"); |
| } |
| - return false; |
| + return ip_endpoint_.get() != NULL; |
| } |
| void CastChannelOpenFunction::AsyncWorkStart() { |
| @@ -319,7 +325,27 @@ CastChannelSendFunction::~CastChannelSendFunction() { } |
| bool CastChannelSendFunction::Prepare() { |
| params_ = Send::Params::Create(*args_); |
| EXTENSION_FUNCTION_VALIDATE(params_.get()); |
| - return true; |
| + if (params_->message.namespace_.empty()) { |
| + SetError("message_info.namespace_ is required"); |
| + return false; |
| + } |
| + if (params_->message.source_id.empty()) { |
| + SetError("message_info.source_id is required"); |
| + return false; |
| + } |
| + if (params_->message.destination_id.empty()) { |
| + SetError("message_info.destination_id is required"); |
| + return false; |
| + } |
| + switch (params_->message.data->GetType()) { |
| + case base::Value::TYPE_STRING: |
| + case base::Value::TYPE_BINARY: |
| + return true; |
|
imcheng
2014/04/24 22:13:18
super nit: I'd prefer to see validation logic retu
|
| + default: |
| + break; |
| + } |
| + SetError("Invalid type of message_info.data"); |
| + return false; |
| } |
| void CastChannelSendFunction::AsyncWorkStart() { |