| Index: components/proximity_auth/cryptauth/cryptauth_client_impl.h
|
| diff --git a/components/proximity_auth/cryptauth/cryptauth_client.h b/components/proximity_auth/cryptauth/cryptauth_client_impl.h
|
| similarity index 55%
|
| copy from components/proximity_auth/cryptauth/cryptauth_client.h
|
| copy to components/proximity_auth/cryptauth/cryptauth_client_impl.h
|
| index 0e77e5025b857f37379a82fc4cdf8657d64c64d7..aa19594bbc8f20f71a24391273624cc3d12924c3 100644
|
| --- a/components/proximity_auth/cryptauth/cryptauth_client.h
|
| +++ b/components/proximity_auth/cryptauth/cryptauth_client_impl.h
|
| @@ -2,93 +2,59 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef COMPONENTS_PROXIMITY_AUTH_CRYPT_AUTH_CLIENT_H
|
| -#define COMPONENTS_PROXIMITY_AUTH_CRYPT_AUTH_CLIENT_H
|
| +#ifndef COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_CLIENT_IMPL_H
|
| +#define COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_CLIENT_IMPL_H
|
|
|
| -#include "base/callback.h"
|
| -#include "base/macros.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| -#include "components/proximity_auth/cryptauth/proto/cryptauth_api.pb.h"
|
| +#include "components/proximity_auth/cryptauth/cryptauth_access_token_fetcher.h"
|
| +#include "components/proximity_auth/cryptauth/cryptauth_api_call_flow.h"
|
| +#include "components/proximity_auth/cryptauth/cryptauth_client.h"
|
| #include "net/url_request/url_request_context_getter.h"
|
| -#include "url/gurl.h"
|
|
|
| -namespace proximity_auth {
|
| +class OAuth2TokenService;
|
|
|
| -class CryptAuthAccessTokenFetcher;
|
| -class CryptAuthApiCallFlow;
|
| +namespace proximity_auth {
|
|
|
| -// Use CryptAuthClient to make API requests to the CryptAuth service, which
|
| -// manages cryptographic credentials (ie. public keys) for a user's devices.
|
| -// CryptAuthClient only processes one request, so create a new instance for each
|
| -// request you make. DO NOT REUSE.
|
| -// For documentation on each API call, see
|
| -// components/proximity_auth/cryptauth/proto/cryptauth_api.proto
|
| +// Implementation of CryptAuthClient.
|
| // Note: There is no need to set the |device_classifier| field in request
|
| // messages. CryptAuthClient will fill this field for all requests.
|
| -class CryptAuthClient {
|
| +class CryptAuthClientImpl : public CryptAuthClient {
|
| public:
|
| typedef base::Callback<void(const std::string&)> ErrorCallback;
|
|
|
| - // Creates the client using |url_request_context| to make the HTTP request.
|
| - // CryptAuthClient takes ownership of |access_token_fetcher|, which provides
|
| - // the access token authorizing CryptAuth requests.
|
| - // The |device_classifier| argument contains basic device information of the
|
| - // caller (e.g. version and device type).
|
| - CryptAuthClient(
|
| + // Creates the client using |url_request_context| to make the HTTP request
|
| + // through |api_call_flow|. CryptAuthClientImpl takes ownership of
|
| + // |access_token_fetcher|, which provides the access token authorizing
|
| + // CryptAuth requests. The |device_classifier| argument contains basic device
|
| + // information of the caller (e.g. version and device type).
|
| + CryptAuthClientImpl(
|
| + scoped_ptr<CryptAuthApiCallFlow> api_call_flow,
|
| scoped_ptr<CryptAuthAccessTokenFetcher> access_token_fetcher,
|
| scoped_refptr<net::URLRequestContextGetter> url_request_context,
|
| const cryptauth::DeviceClassifier& device_classifier);
|
| - virtual ~CryptAuthClient();
|
| + ~CryptAuthClientImpl() override;
|
|
|
| - // GetMyDevices
|
| - typedef base::Callback<void(const cryptauth::GetMyDevicesResponse&)>
|
| - GetMyDevicesCallback;
|
| + // CryptAuthClient:
|
| void GetMyDevices(const cryptauth::GetMyDevicesRequest& request,
|
| const GetMyDevicesCallback& callback,
|
| - const ErrorCallback& error_callback);
|
| -
|
| - // FindEligibleUnlockDevices
|
| - typedef base::Callback<void(
|
| - const cryptauth::FindEligibleUnlockDevicesResponse&)>
|
| - FindEligibleUnlockDevicesCallback;
|
| + const ErrorCallback& error_callback) override;
|
| void FindEligibleUnlockDevices(
|
| const cryptauth::FindEligibleUnlockDevicesRequest& request,
|
| const FindEligibleUnlockDevicesCallback& callback,
|
| - const ErrorCallback& error_callback);
|
| -
|
| - // SendDeviceSyncTickle
|
| - typedef base::Callback<void(const cryptauth::SendDeviceSyncTickleResponse&)>
|
| - SendDeviceSyncTickleCallback;
|
| + const ErrorCallback& error_callback) override;
|
| void SendDeviceSyncTickle(
|
| const cryptauth::SendDeviceSyncTickleRequest& request,
|
| const SendDeviceSyncTickleCallback& callback,
|
| - const ErrorCallback& error_callback);
|
| -
|
| - // ToggleEasyUnlock
|
| - typedef base::Callback<void(const cryptauth::ToggleEasyUnlockResponse&)>
|
| - ToggleEasyUnlockCallback;
|
| + const ErrorCallback& error_callback) override;
|
| void ToggleEasyUnlock(const cryptauth::ToggleEasyUnlockRequest& request,
|
| const ToggleEasyUnlockCallback& callback,
|
| - const ErrorCallback& error_callback);
|
| -
|
| - // SetupEnrollment
|
| - typedef base::Callback<void(const cryptauth::SetupEnrollmentResponse&)>
|
| - SetupEnrollmentCallback;
|
| + const ErrorCallback& error_callback) override;
|
| void SetupEnrollment(const cryptauth::SetupEnrollmentRequest& request,
|
| const SetupEnrollmentCallback& callback,
|
| - const ErrorCallback& error_callback);
|
| -
|
| - // FinishEnrollment
|
| - typedef base::Callback<void(const cryptauth::FinishEnrollmentResponse&)>
|
| - FinishEnrollmentCallback;
|
| + const ErrorCallback& error_callback) override;
|
| void FinishEnrollment(const cryptauth::FinishEnrollmentRequest& request,
|
| const FinishEnrollmentCallback& callback,
|
| - const ErrorCallback& error_callback);
|
| -
|
| - protected:
|
| - // Creates a CryptAuthApiCallFlow object. Exposed for testing.
|
| - virtual scoped_ptr<CryptAuthApiCallFlow> CreateFlow(const GURL& request_url);
|
| + const ErrorCallback& error_callback) override;
|
|
|
| private:
|
| // Starts a call to the API given by |request_path|, with the templated
|
| @@ -118,18 +84,22 @@ class CryptAuthClient {
|
| // Called when the current API call fails at any step.
|
| void OnApiCallFailed(const std::string& error_message);
|
|
|
| - // The context for network requests.
|
| - scoped_refptr<net::URLRequestContextGetter> url_request_context_;
|
| + // Constructs and executes the actual HTTP request.
|
| + scoped_ptr<CryptAuthApiCallFlow> api_call_flow_;
|
|
|
| // Fetches the access token authorizing the API calls.
|
| scoped_ptr<CryptAuthAccessTokenFetcher> access_token_fetcher_;
|
|
|
| + // The context for network requests.
|
| + scoped_refptr<net::URLRequestContextGetter> url_request_context_;
|
| +
|
| // Contains basic device info of the client making the request that is sent to
|
| // CryptAuth with each API call.
|
| const cryptauth::DeviceClassifier device_classifier_;
|
|
|
| - // Handles the current API call.
|
| - scoped_ptr<CryptAuthApiCallFlow> flow_;
|
| + // True if an API call has been started. Remains true even after the API call
|
| + // completes.
|
| + bool has_call_started_;
|
|
|
| // URL path of the current request.
|
| std::string request_path_;
|
| @@ -137,11 +107,38 @@ class CryptAuthClient {
|
| // Called when the current request fails.
|
| ErrorCallback error_callback_;
|
|
|
| - base::WeakPtrFactory<CryptAuthClient> weak_ptr_factory_;
|
| + base::WeakPtrFactory<CryptAuthClientImpl> weak_ptr_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(CryptAuthClientImpl);
|
| +};
|
| +
|
| +// Implementation of CryptAuthClientFactory.
|
| +class CryptAuthClientFactoryImpl : public CryptAuthClientFactory {
|
| + public:
|
| + // |token_service|: Gets the user's access token.
|
| + // Not owned, so |token_service| needs to outlive this object.
|
| + // |account_id|: The account id of the user.
|
| + // |url_request_context|: The request context to make the HTTP requests.
|
| + // |device_classifier|: Contains basic device information of the client.
|
| + CryptAuthClientFactoryImpl(
|
| + OAuth2TokenService* token_service,
|
| + const std::string& account_id,
|
| + scoped_refptr<net::URLRequestContextGetter> url_request_context,
|
| + const cryptauth::DeviceClassifier& device_classifier);
|
| + ~CryptAuthClientFactoryImpl() override;
|
| +
|
| + // CryptAuthClientFactory:
|
| + scoped_ptr<CryptAuthClient> CreateInstance() override;
|
| +
|
| + private:
|
| + OAuth2TokenService* token_service_;
|
| + const std::string account_id_;
|
| + const scoped_refptr<net::URLRequestContextGetter> url_request_context_;
|
| + const cryptauth::DeviceClassifier device_classifier_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(CryptAuthClient);
|
| + DISALLOW_COPY_AND_ASSIGN(CryptAuthClientFactoryImpl);
|
| };
|
|
|
| } // namespace proximity_auth
|
|
|
| -#endif // COMPONENTS_PROXIMITY_AUTH_CRYPT_AUTH_CLIENT_H
|
| +#endif // COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_CLIENT_IMPL_H
|
|
|