#ifndef GOOGLE_APIS_GAIA_GAIA_ACCESS_TOKEN_FETCHER_H_
#define GOOGLE_APIS_GAIA_GAIA_ACCESS_TOKEN_FETCHER_H_
#include <memory>
#include <string>
#include "base/component_export.h"
#include "base/memory/scoped_refptr.h"
#include "google_apis/gaia/oauth2_access_token_fetcher_impl.h"
#include "google_apis/gaia/oauth2_response.h"
class OAuth2AccessTokenConsumer;
namespace network {
class SharedURLLoaderFactory;
}
class COMPONENT_EXPORT(GOOGLE_APIS) GaiaAccessTokenFetcher
: public OAuth2AccessTokenFetcherImpl {
public:
static const char kOAuth2NetResponseCodeHistogramName[];
static const char kOAuth2ResponseHistogramName[];
static std::unique_ptr<GaiaAccessTokenFetcher>
CreateExchangeRefreshTokenForAccessTokenInstance(
OAuth2AccessTokenConsumer* consumer,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
const std::string& refresh_token);
~GaiaAccessTokenFetcher() override;
private:
GaiaAccessTokenFetcher(
OAuth2AccessTokenConsumer* consumer,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
const std::string& refresh_token);
void RecordResponseCodeUma(int error_value) const override;
void RecordOAuth2Response(OAuth2Response response) const override;
GURL GetAccessTokenURL() const override;
net::NetworkTrafficAnnotationTag GetTrafficAnnotationTag() const override;
};
#endif