Index: chrome/browser/extensions/extension_function.cc |
diff --git a/chrome/browser/extensions/extension_function.cc b/chrome/browser/extensions/extension_function.cc |
index c5f675953deb0c267dd08fd8317a45ce567675a9..92e1ccdf94df7dabed6d1368f22a60b087ab788d 100644 |
--- a/chrome/browser/extensions/extension_function.cc |
+++ b/chrome/browser/extensions/extension_function.cc |
@@ -93,8 +93,13 @@ void ExtensionFunction::SetArgs(const base::ListValue* args) { |
args_.reset(args->DeepCopy()); |
} |
-const Value* ExtensionFunction::GetResultValue() { |
- return result_.get(); |
+void ExtensionFunction::SetSingleResult(base::Value* result) { |
+ results_.reset(new base::ListValue()); |
+ results_->Append(result); |
+} |
+ |
+const ListValue* ExtensionFunction::GetResults() { |
+ return results_.get(); |
} |
const std::string ExtensionFunction::GetError() { |
@@ -128,14 +133,12 @@ void ExtensionFunction::SendResponseImpl(base::ProcessHandle process, |
return; |
} |
- // Value objects can't be directly serialized in our IPC code, so we wrap the |
- // result_ Value with a ListValue (also transferring ownership of result_). |
- base::ListValue result_wrapper; |
- if (result_.get()) |
- result_wrapper.Append(result_.release()); |
+ // If results were never set, we send an empty argument list. |
+ if (!results_.get()) |
+ results_.reset(new ListValue()); |
ipc_sender->Send(new ExtensionMsg_Response( |
- request_id_, success, result_wrapper, GetError())); |
+ request_id_, success, *results_.release(), GetError())); |
} |
void ExtensionFunction::HandleBadMessage(base::ProcessHandle process) { |