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() { |