Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(672)

Unified Diff: ipc/ipc_message_utils.cc

Issue 251093: Modify extension request IPC messages to pass a ListValue instead of a string. (Closed)
Patch Set: notreached messages Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/render_view.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ipc/ipc_message_utils.cc
diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc
index ac188bfb52e736d873a3cfe23b5b4b600bc03278..06408b422c526f4de8d0ed3984c1266f7a68d608 100644
--- a/ipc/ipc_message_utils.cc
+++ b/ipc/ipc_message_utils.cc
@@ -27,36 +27,38 @@ static void WriteValue(Message* m, const Value* value, int recursion) {
m->WriteInt(value->GetType());
switch (value->GetType()) {
- case Value::TYPE_NULL:
+ case Value::TYPE_NULL:
break;
- case Value::TYPE_BOOLEAN: {
+ case Value::TYPE_BOOLEAN: {
bool val;
value->GetAsBoolean(&val);
WriteParam(m, val);
break;
}
- case Value::TYPE_INTEGER: {
+ case Value::TYPE_INTEGER: {
int val;
value->GetAsInteger(&val);
WriteParam(m, val);
break;
}
- case Value::TYPE_REAL: {
+ case Value::TYPE_REAL: {
double val;
value->GetAsReal(&val);
WriteParam(m, val);
break;
}
- case Value::TYPE_STRING: {
+ case Value::TYPE_STRING: {
std::string val;
value->GetAsString(&val);
WriteParam(m, val);
break;
}
- case Value::TYPE_BINARY: {
- NOTREACHED() << "Don't send BinaryValues over IPC.";
+ case Value::TYPE_BINARY: {
+ const BinaryValue* binary = static_cast<const BinaryValue*>(value);
+ m->WriteData(binary->GetBuffer(), binary->GetSize());
+ break;
}
- case Value::TYPE_DICTIONARY: {
+ case Value::TYPE_DICTIONARY: {
const DictionaryValue* dict = static_cast<const DictionaryValue*>(value);
WriteParam(m, static_cast<int>(dict->GetSize()));
@@ -73,7 +75,7 @@ static void WriteValue(Message* m, const Value* value, int recursion) {
}
break;
}
- case Value::TYPE_LIST: {
+ case Value::TYPE_LIST: {
const ListValue* list = static_cast<const ListValue*>(value);
WriteParam(m, static_cast<int>(list->GetSize()));
for (size_t i = 0; i < list->GetSize(); ++i) {
@@ -139,56 +141,60 @@ static bool ReadValue(const Message* m, void** iter, Value** value,
return false;
switch (type) {
- case Value::TYPE_NULL:
+ case Value::TYPE_NULL:
*value = Value::CreateNullValue();
break;
- case Value::TYPE_BOOLEAN: {
+ case Value::TYPE_BOOLEAN: {
bool val;
if (!ReadParam(m, iter, &val))
return false;
*value = Value::CreateBooleanValue(val);
break;
}
- case Value::TYPE_INTEGER: {
+ case Value::TYPE_INTEGER: {
int val;
if (!ReadParam(m, iter, &val))
return false;
*value = Value::CreateIntegerValue(val);
break;
}
- case Value::TYPE_REAL: {
+ case Value::TYPE_REAL: {
double val;
if (!ReadParam(m, iter, &val))
return false;
*value = Value::CreateRealValue(val);
break;
}
- case Value::TYPE_STRING: {
+ case Value::TYPE_STRING: {
std::string val;
if (!ReadParam(m, iter, &val))
return false;
*value = Value::CreateStringValue(val);
break;
}
- case Value::TYPE_BINARY: {
- NOTREACHED() << "Don't send BinaryValues over IPC.";
+ case Value::TYPE_BINARY: {
+ const char* data;
+ int length;
+ if (!m->ReadData(iter, &data, &length))
+ return false;
+ *value = BinaryValue::CreateWithCopiedBuffer(data, length);
break;
}
- case Value::TYPE_DICTIONARY: {
+ case Value::TYPE_DICTIONARY: {
scoped_ptr<DictionaryValue> val(new DictionaryValue());
if (!ReadDictionaryValue(m, iter, val.get(), recursion))
return false;
*value = val.release();
break;
}
- case Value::TYPE_LIST: {
+ case Value::TYPE_LIST: {
scoped_ptr<ListValue> val(new ListValue());
if (!ReadListValue(m, iter, val.get(), recursion))
return false;
*value = val.release();
break;
}
- default:
+ default:
return false;
}
« no previous file with comments | « chrome/renderer/render_view.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698