| Index: chrome/browser/extensions/api/identity/identity_get_auth_token_function.h
|
| diff --git a/chrome/browser/extensions/api/identity/identity_api.h b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.h
|
| similarity index 56%
|
| copy from chrome/browser/extensions/api/identity/identity_api.h
|
| copy to chrome/browser/extensions/api/identity/identity_get_auth_token_function.h
|
| index 61ccf0a1a76987a4b1afca77911e682ecff92bc2..9814b2370f2401db497f9895a38e06e3dc0c3e22 100644
|
| --- a/chrome/browser/extensions/api/identity/identity_api.h
|
| +++ b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.h
|
| @@ -1,156 +1,20 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright 2017 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.
|
|
|
| -#ifndef CHROME_BROWSER_EXTENSIONS_API_IDENTITY_IDENTITY_API_H_
|
| -#define CHROME_BROWSER_EXTENSIONS_API_IDENTITY_IDENTITY_API_H_
|
| +#ifndef CHROME_BROWSER_EXTENSIONS_API_IDENTITY_IDENTITY_GET_AUTH_TOKEN_FUNCTION_H_
|
| +#define CHROME_BROWSER_EXTENSIONS_API_IDENTITY_IDENTITY_GET_AUTH_TOKEN_FUNCTION_H_
|
|
|
| -#include <map>
|
| -#include <set>
|
| -#include <string>
|
| -#include <utility>
|
| -#include <vector>
|
| -
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/observer_list.h"
|
| -#include "build/build_config.h"
|
| -#include "chrome/browser/extensions/api/identity/extension_token_key.h"
|
| #include "chrome/browser/extensions/api/identity/gaia_web_auth_flow.h"
|
| -#include "chrome/browser/extensions/api/identity/identity_get_profile_user_info_function.h"
|
| -#include "chrome/browser/extensions/api/identity/identity_launch_web_auth_flow_function.h"
|
| #include "chrome/browser/extensions/api/identity/identity_mint_queue.h"
|
| -#include "chrome/browser/extensions/api/identity/identity_remove_cached_auth_token_function.h"
|
| #include "chrome/browser/extensions/api/identity/identity_signin_flow.h"
|
| -#include "chrome/browser/extensions/api/identity/web_auth_flow.h"
|
| #include "chrome/browser/extensions/chrome_extension_function.h"
|
| -#include "components/signin/core/browser/profile_identity_provider.h"
|
| -#include "extensions/browser/browser_context_keyed_api_factory.h"
|
| -#include "google_apis/gaia/account_tracker.h"
|
| +#include "extensions/browser/extension_function_histogram_value.h"
|
| #include "google_apis/gaia/oauth2_mint_token_flow.h"
|
| #include "google_apis/gaia/oauth2_token_service.h"
|
|
|
| -class GoogleServiceAuthError;
|
| -class MockGetAuthTokenFunction;
|
| -
|
| -namespace content {
|
| -class BrowserContext;
|
| -}
|
| -
|
| namespace extensions {
|
|
|
| -class GetAuthTokenFunctionTest;
|
| -class IdentityGetAuthTokenFunction;
|
| -class MockGetAuthTokenFunction;
|
| -
|
| -class IdentityTokenCacheValue {
|
| - public:
|
| - IdentityTokenCacheValue();
|
| - explicit IdentityTokenCacheValue(const IssueAdviceInfo& issue_advice);
|
| - IdentityTokenCacheValue(const std::string& token,
|
| - base::TimeDelta time_to_live);
|
| - IdentityTokenCacheValue(const IdentityTokenCacheValue& other);
|
| - ~IdentityTokenCacheValue();
|
| -
|
| - // Order of these entries is used to determine whether or not new
|
| - // entries supercede older ones in SetCachedToken.
|
| - enum CacheValueStatus {
|
| - CACHE_STATUS_NOTFOUND,
|
| - CACHE_STATUS_ADVICE,
|
| - CACHE_STATUS_TOKEN
|
| - };
|
| -
|
| - CacheValueStatus status() const;
|
| - const IssueAdviceInfo& issue_advice() const;
|
| - const std::string& token() const;
|
| - const base::Time& expiration_time() const;
|
| -
|
| - private:
|
| - bool is_expired() const;
|
| -
|
| - CacheValueStatus status_;
|
| - IssueAdviceInfo issue_advice_;
|
| - std::string token_;
|
| - base::Time expiration_time_;
|
| -};
|
| -
|
| -class IdentityAPI : public BrowserContextKeyedAPI,
|
| - public gaia::AccountTracker::Observer {
|
| - public:
|
| - typedef std::map<ExtensionTokenKey, IdentityTokenCacheValue> CachedTokens;
|
| -
|
| - explicit IdentityAPI(content::BrowserContext* context);
|
| - ~IdentityAPI() override;
|
| -
|
| - // Request serialization queue for getAuthToken.
|
| - IdentityMintRequestQueue* mint_queue();
|
| -
|
| - // Token cache
|
| - void SetCachedToken(const ExtensionTokenKey& key,
|
| - const IdentityTokenCacheValue& token_data);
|
| - void EraseCachedToken(const std::string& extension_id,
|
| - const std::string& token);
|
| - void EraseAllCachedTokens();
|
| - const IdentityTokenCacheValue& GetCachedToken(const ExtensionTokenKey& key);
|
| -
|
| - const CachedTokens& GetAllCachedTokens();
|
| -
|
| - // Account queries.
|
| - std::vector<std::string> GetAccounts() const;
|
| - std::string FindAccountKeyByGaiaId(const std::string& gaia_id);
|
| -
|
| - // BrowserContextKeyedAPI implementation.
|
| - void Shutdown() override;
|
| - static BrowserContextKeyedAPIFactory<IdentityAPI>* GetFactoryInstance();
|
| -
|
| - // gaia::AccountTracker::Observer implementation:
|
| - void OnAccountAdded(const gaia::AccountIds& ids) override;
|
| - void OnAccountRemoved(const gaia::AccountIds& ids) override;
|
| - void OnAccountSignInChanged(const gaia::AccountIds& ids,
|
| - bool is_signed_in) override;
|
| -
|
| - void SetAccountStateForTest(gaia::AccountIds ids, bool is_signed_in);
|
| -
|
| - void set_get_auth_token_function(
|
| - IdentityGetAuthTokenFunction* get_auth_token_function) {
|
| - get_auth_token_function_ = get_auth_token_function;
|
| - }
|
| -
|
| - private:
|
| - friend class BrowserContextKeyedAPIFactory<IdentityAPI>;
|
| -
|
| - // BrowserContextKeyedAPI implementation.
|
| - static const char* service_name() { return "IdentityAPI"; }
|
| - static const bool kServiceIsNULLWhileTesting = true;
|
| -
|
| - content::BrowserContext* browser_context_;
|
| - IdentityMintRequestQueue mint_queue_;
|
| - CachedTokens token_cache_;
|
| - ProfileIdentityProvider profile_identity_provider_;
|
| - gaia::AccountTracker account_tracker_;
|
| -
|
| - // May be null.
|
| - IdentityGetAuthTokenFunction* get_auth_token_function_;
|
| -};
|
| -
|
| -template <>
|
| -void BrowserContextKeyedAPIFactory<IdentityAPI>::DeclareFactoryDependencies();
|
| -
|
| -class IdentityGetAccountsFunction : public ChromeUIThreadExtensionFunction {
|
| - public:
|
| - DECLARE_EXTENSION_FUNCTION("identity.getAccounts",
|
| - IDENTITY_GETACCOUNTS);
|
| -
|
| - IdentityGetAccountsFunction();
|
| -
|
| - private:
|
| - ~IdentityGetAccountsFunction() override;
|
| -
|
| - // UIThreadExtensionFunction implementation.
|
| - ExtensionFunction::ResponseAction Run() override;
|
| -};
|
| -
|
| // identity.getAuthToken fetches an OAuth 2 function for the
|
| // caller. The request has three sub-flows: non-interactive,
|
| // interactive, and sign-in.
|
| @@ -292,4 +156,4 @@ class IdentityGetAuthTokenFunction : public ChromeAsyncExtensionFunction,
|
|
|
| } // namespace extensions
|
|
|
| -#endif // CHROME_BROWSER_EXTENSIONS_API_IDENTITY_IDENTITY_API_H_
|
| +#endif // CHROME_BROWSER_EXTENSIONS_API_IDENTITY_IDENTITY_GET_AUTH_TOKEN_FUNCTION_H_
|
|
|