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

Unified Diff: extensions/browser/extension_function.h

Issue 2351823004: [Extensions] Consolidate ExtensionFunction::SendResponse()s (Closed)
Patch Set: ready Created 4 years, 3 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
Index: extensions/browser/extension_function.h
diff --git a/extensions/browser/extension_function.h b/extensions/browser/extension_function.h
index e48e8769205242cfe6398e4c75927e0c23cbd8b2..4fc037d108d9542ad3d87dfb525a71355e144f34 100644
--- a/extensions/browser/extension_function.h
+++ b/extensions/browser/extension_function.h
@@ -397,15 +397,9 @@ class ExtensionFunction
// Helper method for ExtensionFunctionDeleteTraits. Deletes this object.
virtual void Destruct() const = 0;
- // Do not call this function directly, return the appropriate ResponseAction
- // from Run() instead. If using RespondLater then call Respond().
- //
- // Call with true to indicate success, false to indicate failure, in which
- // case please set |error_|.
- virtual void SendResponse(bool success) = 0;
-
- // Common implementation for SendResponse.
- void SendResponseImpl(bool success);
+ // Called after thre response is sent, allowing the function to perform any
lazyboy 2016/09/20 20:21:33 s/thre/the
Devlin 2016/09/20 21:51:04 Done.
+ // additional work or cleanup.
+ virtual void OnResponded() {}
// Return true if the argument to this function at |index| was provided and
// is non-null.
@@ -442,8 +436,9 @@ class ExtensionFunction
// The arguments to the API. Only non-null if argument were specified.
std::unique_ptr<base::ListValue> args_;
- // The results of the API. This should be populated by the derived class
- // before SendResponse() is called.
+ // The results of the API. This should be populated through the Respond()/
+ // RespondNow() methods. In legacy implementations, this is set directly, and
+ // should be set before calling SendResponse().
std::unique_ptr<base::ListValue> results_;
// Any detailed error from the API. This should be populated by the derived
@@ -475,6 +470,10 @@ class ExtensionFunction
bool did_respond_;
private:
+ // Call with true to indicate success, false to indicate failure. If this
+ // failed, |error_| should be set.
+ void SendResponseImpl(bool success);
+
base::ElapsedTimer timer_;
// The response type of the function, if the response has been sent.
@@ -544,7 +543,7 @@ class UIThreadExtensionFunction : public ExtensionFunction {
~UIThreadExtensionFunction() override;
- void SendResponse(bool success) override;
+ void OnResponded() override;
// Sets the Blob UUIDs whose ownership is being transferred to the renderer.
void SetTransferredBlobUUIDs(const std::vector<std::string>& blob_uuids);
@@ -618,8 +617,6 @@ class IOThreadExtensionFunction : public ExtensionFunction {
void Destruct() const override;
- void SendResponse(bool success) override;
-
private:
base::WeakPtr<extensions::IOThreadExtensionMessageFilter> ipc_sender_;
int routing_id_;
@@ -648,6 +645,10 @@ class AsyncExtensionFunction : public UIThreadExtensionFunction {
// ValidationFailure override to match RunAsync().
static bool ValidationFailure(AsyncExtensionFunction* function);
+ // Responds with success/failure. |results_| or |error_| should be set
+ // accordingly.
+ void SendResponse(bool success);
+
private:
// If you're hitting a compile error here due to "final" - great! You're
// doing the right thing, you just need to extend UIThreadExtensionFunction

Powered by Google App Engine
This is Rietveld 408576698