// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef GOOGLE_APIS_GAIA_OAUTH2_ACCESS_TOKEN_FETCHER_IMPL_H_ #define GOOGLE_APIS_GAIA_OAUTH2_ACCESS_TOKEN_FETCHER_IMPL_H_ #include <memory> #include <string> #include <vector> #include "base/component_export.h" #include "base/gtest_prod_util.h" #include "base/memory/ref_counted.h" #include "google_apis/gaia/oauth2_access_token_consumer.h" #include "google_apis/gaia/oauth2_access_token_fetcher.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "url/gurl.h" class OAuth2AccessTokenFetcherImplTest; namespace network { class SimpleURLLoader; class SharedURLLoaderFactory; } // Abstracts the details to get OAuth2 access token from OAuth2 refresh token. // See general document about Oauth2 in https://tools.ietf.org/html/rfc6749. // // This class should be used on a single thread, but it can be whichever thread // that you like. Also, do not reuse the same instance. Once Start() is called, // the instance should not be reused. // // Usage: // * Create an instance with a consumer. // * Call Start() // * The consumer passed in the constructor will be called on the same // thread Start was called with the results. // // This class can handle one request at a time. To parallelize requests, // create multiple instances. Prefer `GaiaAccessTokenFetcher` over this class // while talking to Google's OAuth servers. class COMPONENT_EXPORT(GOOGLE_APIS) OAuth2AccessTokenFetcherImpl : public OAuth2AccessTokenFetcher { … }; #endif // GOOGLE_APIS_GAIA_OAUTH2_ACCESS_TOKEN_FETCHER_IMPL_H_