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

Unified Diff: chrome/browser/chromeos/gdata/operations_base.h

Issue 10808027: gdrive: Get JSON feeds parsing off the UI thread. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix reviews and rebase Created 8 years, 5 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/gdata/operations_base.h
diff --git a/chrome/browser/chromeos/gdata/operations_base.h b/chrome/browser/chromeos/gdata/operations_base.h
index 2be8f65d1cc9b355d8d43fbc14abcf2cd004a599..774525a46351530c710e1039eb21be0fb5263088 100644
--- a/chrome/browser/chromeos/gdata/operations_base.h
+++ b/chrome/browser/chromeos/gdata/operations_base.h
@@ -20,6 +20,9 @@ class OAuth2AccessTokenFetcher;
namespace gdata {
+// Callback type for ProcessURLFetchResults.
+typedef base::Callback<void(bool result)> ProcessURLFetchResultsCallback;
+
//================================ AuthOperation ===============================
// OAuth2 authorization token retrieval operation.
@@ -112,7 +115,9 @@ class UrlFetchOperationBase : public GDataOperationInterface,
// Invoked by OnURLFetchComplete when the operation completes without an
// authentication error. Must be implemented by a derived class.
- virtual bool ProcessURLFetchResults(const net::URLFetcher* source) = 0;
+ virtual void ProcessURLFetchResults(
+ const net::URLFetcher* source,
+ const ProcessURLFetchResultsCallback& callback) = 0;
// Invoked when it needs to notify the status. Chunked operations that
// constructs a logically single operation from multiple physical operations
@@ -130,6 +135,9 @@ class UrlFetchOperationBase : public GDataOperationInterface,
// Overridden from URLFetcherDelegate.
virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
+ // Invoked when ProcessURLFetchResults() is completed.
+ void OnProcessURLFetchResultsComplete(bool result);
+
// Overridden from GDataOperationInterface.
virtual void OnAuthFailed(GDataErrorCode code) OVERRIDE;
@@ -147,6 +155,9 @@ class UrlFetchOperationBase : public GDataOperationInterface,
FilePath output_file_path_;
scoped_ptr<net::URLFetcher> url_fetcher_;
bool started_;
+
+ private:
+ base::WeakPtrFactory<UrlFetchOperationBase> weak_ptr_factory_;
};
//============================ EntryActionOperation ============================
@@ -163,7 +174,9 @@ class EntryActionOperation : public UrlFetchOperationBase {
protected:
// Overridden from UrlFetchOperationBase.
- virtual bool ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE;
+ virtual void ProcessURLFetchResults(
+ const net::URLFetcher* source,
+ const ProcessURLFetchResultsCallback& callback) OVERRIDE;
virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE;
const GURL& document_url() const { return document_url_; }
@@ -186,15 +199,24 @@ class GetDataOperation : public UrlFetchOperationBase {
virtual ~GetDataOperation();
// Parse GData JSON response.
- virtual base::Value* ParseResponse(const std::string& data);
+ virtual void ParseResponse(
+ GDataErrorCode fetch_error_code,
+ const std::string& data,
+ const ProcessURLFetchResultsCallback& result_callback);
protected:
// Overridden from UrlFetchOperationBase.
- virtual bool ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE;
- virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE;
+ virtual void ProcessURLFetchResults(
+ const net::URLFetcher* source,
+ const ProcessURLFetchResultsCallback& callback) OVERRIDE;
+ virtual void RunCallbackOnPrematureFailure(
+ GDataErrorCode fetch_error_code) OVERRIDE;
+ void RunCallback(GDataErrorCode fetch_error_code,
+ scoped_ptr<base::Value> value);
private:
GetDataCallback callback_;
+
DISALLOW_COPY_AND_ASSIGN(GetDataOperation);
};

Powered by Google App Engine
This is Rietveld 408576698