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

Unified Diff: chrome/browser/chromeos/file_system_provider/request_manager.h

Issue 257493004: [fsp] Refactor handling operations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed tests. Created 6 years, 8 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: chrome/browser/chromeos/file_system_provider/request_manager.h
diff --git a/chrome/browser/chromeos/file_system_provider/request_manager.h b/chrome/browser/chromeos/file_system_provider/request_manager.h
index b54cd43d172b79111124def17a2ea159ec601ae2..f75e06a4dc04eff62fb66ffe79c0dd20ed19359a 100644
--- a/chrome/browser/chromeos/file_system_provider/request_manager.h
+++ b/chrome/browser/chromeos/file_system_provider/request_manager.h
@@ -15,35 +15,48 @@
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "chrome/browser/chromeos/file_system_provider/provided_file_system_info.h"
-
-namespace base {
-class DictionaryValue;
-} // namespace base
+#include "chrome/browser/chromeos/file_system_provider/request_value.h"
namespace chromeos {
namespace file_system_provider {
-typedef base::Callback<void(scoped_ptr<base::DictionaryValue> result,
- bool has_next)> SuccessCallback;
-typedef base::Callback<void(base::File::Error)> ErrorCallback;
-
// Manages requests between the service, async utils and the providing
// extensions.
class RequestManager {
public:
+ class HandlerInterface {
+ public:
+ virtual ~HandlerInterface() {}
+
+ // Called when the request is created. Executes the request implementation.
+ // Returns false in case of a execution failure.
+ virtual bool Execute(int request_id) = 0;
+
+ // Success callback invoked by the providing extension in response to
+ // Execute(). It may be called more than once, until |has_next| is set to
+ // false.
+ virtual void OnSuccess(int request_id,
+ scoped_ptr<RequestValue> result,
+ bool has_next) = 0;
+
+ // Error callback invoked by the providing extension in response to
+ // Execute(). It can be called at most once. It can be also called if the
+ // request is aborted due to a timeout.
+ virtual void OnError(int request_id, base::File::Error error) = 0;
+ };
+
RequestManager();
virtual ~RequestManager();
// Creates a request and returns its request id (greater than 0). Returns 0 in
- // case of an error (eg. too many requests). The passed callbacks can be NULL.
- int CreateRequest(const SuccessCallback& success_callback,
- const ErrorCallback& error_callback);
+ // case of an error (eg. too many requests).
+ int CreateRequest(scoped_ptr<HandlerInterface> handler);
// Handles successful response for the |request_id|. If |has_next| is false,
// then the request is disposed, after handling the |response|. On error,
// returns false, and the request is disposed.
bool FulfillRequest(int request_id,
- scoped_ptr<base::DictionaryValue> response,
+ scoped_ptr<RequestValue> response,
bool has_next);
// Handles error response for the |request_id|. If handling the error fails,
@@ -62,11 +75,8 @@ class RequestManager {
// Timer for discarding the request during a timeout.
base::OneShotTimer<RequestManager> timeout_timer;
- // Callback to be called on success.
- SuccessCallback success_callback;
-
- // Callback to be called on error.
- ErrorCallback error_callback;
+ // Handler tied to this request.
+ scoped_ptr<HandlerInterface> handler;
private:
DISALLOW_COPY_AND_ASSIGN(Request);

Powered by Google App Engine
This is Rietveld 408576698