| Index: chrome/browser/google_apis/base_operations.h
|
| diff --git a/chrome/browser/google_apis/base_operations.h b/chrome/browser/google_apis/base_operations.h
|
| index 9121e415357673122020dfa2c0ddeb94ffaf5a86..83c7a4101879856a419b4990f0cd509f5a045387 100644
|
| --- a/chrome/browser/google_apis/base_operations.h
|
| +++ b/chrome/browser/google_apis/base_operations.h
|
| @@ -1,6 +1,8 @@
|
| // Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
| +//
|
| +// This file provides base classes used to implement operations for Google APIs.
|
|
|
| #ifndef CHROME_BROWSER_GOOGLE_APIS_BASE_OPERATIONS_H_
|
| #define CHROME_BROWSER_GOOGLE_APIS_BASE_OPERATIONS_H_
|
| @@ -27,7 +29,8 @@ namespace google_apis {
|
|
|
| //======================= AuthenticatedOperationInterface ======================
|
|
|
| -// An interface for implementing an operation used by DriveServiceInterface.
|
| +// An interface class for implementing an operation which requires OAuth2
|
| +// authentication.
|
| class AuthenticatedOperationInterface {
|
| public:
|
| // Callback to DriveServiceInterface upon for re-authentication.
|
| @@ -47,6 +50,8 @@ class AuthenticatedOperationInterface {
|
|
|
| // Sets the callback to DriveServiceInterface when the operation restarts due
|
| // to an authentication failure.
|
| + // This function should be called before Start().
|
| + // TODO(satorux): Make it a parameter of Start(). crbug.com/163535.
|
| virtual void SetReAuthenticateCallback(
|
| const ReAuthenticateCallback& callback) = 0;
|
|
|
| @@ -70,32 +75,34 @@ class UrlFetchOperationBase : public AuthenticatedOperationInterface,
|
| public OperationRegistry::Operation,
|
| public net::URLFetcherDelegate {
|
| public:
|
| - // Overridden from AuthenticatedOperationInterface.
|
| + // AuthenticatedOperationInterface overrides.
|
| virtual void Start(const std::string& auth_token,
|
| const std::string& custom_user_agent) OVERRIDE;
|
| -
|
| - // Overridden from AuthenticatedOperationInterface.
|
| virtual void SetReAuthenticateCallback(
|
| const ReAuthenticateCallback& callback) OVERRIDE;
|
| -
|
| - // Overridden from AuthenticatedOperationInterface.
|
| virtual base::WeakPtr<AuthenticatedOperationInterface> GetWeakPtr() OVERRIDE;
|
|
|
| protected:
|
| explicit UrlFetchOperationBase(OperationRegistry* registry);
|
| + // Use this constructor when you need to implement operations that take a
|
| + // drive file path (ex. for downloading and uploading).
|
| + // TODO(satorux): Remove the drive file path hack. crbug.com/163296
|
| UrlFetchOperationBase(OperationRegistry* registry,
|
| OperationType type,
|
| - const FilePath& path);
|
| + const FilePath& drive_file_path);
|
| virtual ~UrlFetchOperationBase();
|
|
|
| // Gets URL for the request.
|
| virtual GURL GetURL() const = 0;
|
| +
|
| // Returns the request type. A derived class should override this method
|
| // for a request type other than HTTP GET.
|
| virtual net::URLFetcher::RequestType GetRequestType() const;
|
| +
|
| // Returns the extra HTTP headers for the request. A derived class should
|
| // override this method to specify any extra headers needed for the request.
|
| virtual std::vector<std::string> GetExtraRequestHeaders() const;
|
| +
|
| // Used by a derived class to add any content data to the request.
|
| // Returns true if |upload_content_type| and |upload_content| are updated
|
| // with the content type and data for the request.
|
| @@ -116,29 +123,30 @@ class UrlFetchOperationBase : public AuthenticatedOperationInterface,
|
| // an user operation. Must be implemented by a derived class.
|
| virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) = 0;
|
|
|
| - // Implement OperationRegistry::Operation
|
| - virtual void DoCancel() OVERRIDE;
|
| -
|
| - // Overridden from URLFetcherDelegate.
|
| - virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
|
| -
|
| - // Overridden from AuthenticatedOperationInterface.
|
| - virtual void OnAuthFailed(GDataErrorCode code) OVERRIDE;
|
| -
|
| // Invoked when ProcessURLFetchResults() is completed.
|
| void OnProcessURLFetchResultsComplete(bool result);
|
|
|
| // Returns an appropriate GDataErrorCode based on the HTTP response code and
|
| // the status of the URLFetcher.
|
| - GDataErrorCode GetErrorCode(const net::URLFetcher* source) const;
|
| + static GDataErrorCode GetErrorCode(const net::URLFetcher* source);
|
| +
|
| + // The following members are used by DownloadFileOperation.
|
| + // TODO(satorux): Make them private.
|
| + bool save_temp_file_;
|
| + FilePath output_file_path_;
|
| +
|
| + private:
|
| + // OperationRegistry::Operation overrides.
|
| + virtual void DoCancel() OVERRIDE;
|
| +
|
| + // URLFetcherDelegate overrides.
|
| + virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
|
|
|
| - std::string GetResponseHeadersAsString(
|
| - const net::URLFetcher* url_fetcher);
|
| + // AuthenticatedOperationInterface overrides.
|
| + virtual void OnAuthFailed(GDataErrorCode code) OVERRIDE;
|
|
|
| ReAuthenticateCallback re_authenticate_callback_;
|
| int re_authenticate_count_;
|
| - bool save_temp_file_;
|
| - FilePath output_file_path_;
|
| scoped_ptr<net::URLFetcher> url_fetcher_;
|
| bool started_;
|
|
|
| @@ -167,7 +175,7 @@ class EntryActionOperation : public UrlFetchOperationBase {
|
| virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE;
|
|
|
| private:
|
| - EntryActionCallback callback_;
|
| + const EntryActionCallback callback_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(EntryActionOperation);
|
| };
|
| @@ -180,31 +188,37 @@ class EntryActionOperation : public UrlFetchOperationBase {
|
| typedef base::Callback<void(GDataErrorCode error,
|
| scoped_ptr<base::Value> feed_data)> GetDataCallback;
|
|
|
| -// This class performs the operation for fetching and parsing JSON data content.
|
| +// This class performs the operation for fetching and converting the fetched
|
| +// content into a base::Value.
|
| class GetDataOperation : public UrlFetchOperationBase {
|
| public:
|
| GetDataOperation(OperationRegistry* registry,
|
| const GetDataCallback& callback);
|
| virtual ~GetDataOperation();
|
|
|
| - // Parse GData JSON response.
|
| + // Parses JSON response. A derived class should override this function if
|
| + // the input data is not JSON (ex. XML).
|
| virtual void ParseResponse(GDataErrorCode fetch_error_code,
|
| const std::string& data);
|
|
|
| - protected:
|
| - // Overridden from UrlFetchOperationBase.
|
| + // UrlFetchOperationBase overrides.
|
| virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE;
|
| - virtual void RunCallbackOnPrematureFailure(
|
| - GDataErrorCode fetch_error_code) OVERRIDE;
|
| +
|
| + // Runs |callback_| with the given parameters, if |callback_| is not null.
|
| + // TODO(satorux): Remove this by making |callback_| mandatory.
|
| void RunCallback(GDataErrorCode fetch_error_code,
|
| scoped_ptr<base::Value> value);
|
|
|
| private:
|
| + // UrlFetchOperationBase overrides.
|
| + virtual void RunCallbackOnPrematureFailure(
|
| + GDataErrorCode fetch_error_code) OVERRIDE;
|
| +
|
| // Called when ParseJsonOnBlockingPool() is completed.
|
| void OnDataParsed(google_apis::GDataErrorCode fetch_error_code,
|
| scoped_ptr<base::Value> value);
|
|
|
| - GetDataCallback callback_;
|
| + const GetDataCallback callback_;
|
|
|
| // Note: This should remain the last member so it'll be destroyed and
|
| // invalidate its weak pointers before any other members are destroyed.
|
|
|