Index: extensions/browser/extension_function.cc |
diff --git a/extensions/browser/extension_function.cc b/extensions/browser/extension_function.cc |
index 2ae214106f4cff0be94992fc35c3bbe208874b90..7216a9ef0c79b38a2212baca7809bc95ba653c1e 100644 |
--- a/extensions/browser/extension_function.cc |
+++ b/extensions/browser/extension_function.cc |
@@ -301,7 +301,7 @@ bool ExtensionFunction::HasPermission() { |
void ExtensionFunction::OnQuotaExceeded(const std::string& violation_error) { |
error_ = violation_error; |
- SendResponse(false); |
+ SendResponseImpl(false); |
} |
void ExtensionFunction::SetArgs(const base::ListValue* args) { |
@@ -407,7 +407,8 @@ ExtensionFunction::ResponseValue ExtensionFunction::BadMessage() { |
ExtensionFunction::ResponseAction ExtensionFunction::RespondNow( |
ResponseValue result) { |
return ResponseAction(new RespondNowAction( |
- std::move(result), base::Bind(&ExtensionFunction::SendResponse, this))); |
+ std::move(result), |
+ base::Bind(&ExtensionFunction::SendResponseImpl, this))); |
} |
ExtensionFunction::ResponseAction ExtensionFunction::RespondLater() { |
@@ -421,7 +422,7 @@ ExtensionFunction::ResponseAction ExtensionFunction::ValidationFailure( |
} |
void ExtensionFunction::Respond(ResponseValue result) { |
- SendResponse(result->Apply()); |
+ SendResponseImpl(result->Apply()); |
} |
bool ExtensionFunction::PreRunValidation(std::string* error) { |
@@ -448,6 +449,8 @@ bool ExtensionFunction::HasOptionalArgument(size_t index) { |
void ExtensionFunction::SendResponseImpl(bool success) { |
DCHECK(!response_callback_.is_null()); |
+ DCHECK(!did_respond_) << name_; |
+ did_respond_ = true; |
ResponseType response = success ? SUCCEEDED : FAILED; |
if (bad_message_) { |
@@ -462,10 +465,8 @@ void ExtensionFunction::SendResponseImpl(bool success) { |
response_callback_.Run(response, *results_, GetError(), histogram_value()); |
LogUma(success, timer_.Elapsed(), histogram_value_); |
-} |
-void ExtensionFunction::OnRespondingLater(ResponseValue value) { |
- SendResponse(value->Apply()); |
+ OnResponded(); |
} |
UIThreadExtensionFunction::UIThreadExtensionFunction() |
@@ -548,11 +549,7 @@ content::WebContents* UIThreadExtensionFunction::GetSenderWebContents() { |
content::WebContents::FromRenderFrameHost(render_frame_host_) : nullptr; |
} |
-void UIThreadExtensionFunction::SendResponse(bool success) { |
- DCHECK(!did_respond_) << name_; |
- did_respond_ = true; |
- SendResponseImpl(success); |
- |
+void UIThreadExtensionFunction::OnResponded() { |
if (!transferred_blob_uuids_.empty()) { |
render_frame_host_->Send( |
new ExtensionMsg_TransferBlobs(transferred_blob_uuids_)); |
@@ -590,12 +587,6 @@ void IOThreadExtensionFunction::Destruct() const { |
BrowserThread::DeleteOnIOThread::Destruct(this); |
} |
-void IOThreadExtensionFunction::SendResponse(bool success) { |
- DCHECK(!did_respond_) << name_; |
- did_respond_ = true; |
- SendResponseImpl(success); |
-} |
- |
AsyncExtensionFunction::AsyncExtensionFunction() { |
} |
@@ -619,3 +610,7 @@ bool AsyncExtensionFunction::ValidationFailure( |
AsyncExtensionFunction* function) { |
return false; |
} |
+ |
+void AsyncExtensionFunction::SendResponse(bool success) { |
+ Respond(success ? ArgumentList(std::move(results_)) : Error(error_)); |
+} |