Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(934)

Unified Diff: chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc

Issue 2668203004: Move impl of identity.GetAuthToken() extension API to its own file (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/api/identity/identity_get_auth_token_function.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
diff --git a/chrome/browser/extensions/api/identity/identity_api.cc b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
similarity index 74%
copy from chrome/browser/extensions/api/identity/identity_api.cc
copy to chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
index 4b74c3fe3091562a2cdfa3c8fab47451caee05a5..6f52b003546879494c59cbb3e3ce0336aded4e85 100644
--- a/chrome/browser/extensions/api/identity/identity_api.cc
+++ b/chrome/browser/extensions/api/identity/identity_get_auth_token_function.cc
@@ -1,53 +1,26 @@
-// 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.
-#include "chrome/browser/extensions/api/identity/identity_api.h"
-
-#include <stddef.h>
-
-#include <memory>
-#include <set>
-#include <string>
-#include <utility>
-#include <vector>
+#include "chrome/browser/extensions/api/identity/identity_get_auth_token_function.h"
-#include "base/lazy_instance.h"
-#include "base/macros.h"
-#include "base/memory/ptr_util.h"
#include "base/strings/string_number_conversions.h"
-#include "base/strings/stringprintf.h"
-#include "base/trace_event/trace_event.h"
-#include "base/values.h"
-#include "build/build_config.h"
-#include "chrome/browser/app_mode/app_mode_utils.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/extensions/api/identity/identity_api.h"
#include "chrome/browser/extensions/api/identity/identity_constants.h"
-#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/signin/account_tracker_service_factory.h"
#include "chrome/browser/signin/chrome_signin_client_factory.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h"
-#include "chrome/browser/ui/webui/signin/login_ui_service_factory.h"
#include "chrome/common/extensions/api/identity.h"
-#include "chrome/common/url_constants.h"
-#include "components/signin/core/browser/account_tracker_service.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "components/signin/core/browser/signin_manager.h"
#include "components/signin/core/common/profile_management_switches.h"
-#include "extensions/browser/event_router.h"
-#include "extensions/browser/extension_function_dispatcher.h"
-#include "extensions/common/extension.h"
#include "extensions/common/extension_l10n_util.h"
-#include "extensions/common/manifest_handlers/oauth2_manifest_handler.h"
-#include "extensions/common/permissions/permission_set.h"
-#include "extensions/common/permissions/permissions_data.h"
#include "google_apis/gaia/gaia_urls.h"
-#include "url/gurl.h"
#if defined(OS_CHROMEOS)
+#include "chrome/browser/app_mode/app_mode_utils.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/login/session/user_session_manager.h"
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
#include "chrome/browser/chromeos/settings/device_oauth2_token_service.h"
@@ -80,208 +53,6 @@ std::string GetPrimaryAccountId(content::BrowserContext* context) {
namespace identity = api::identity;
-IdentityTokenCacheValue::IdentityTokenCacheValue()
- : status_(CACHE_STATUS_NOTFOUND) {}
-
-IdentityTokenCacheValue::IdentityTokenCacheValue(
- const IssueAdviceInfo& issue_advice)
- : status_(CACHE_STATUS_ADVICE), issue_advice_(issue_advice) {
- expiration_time_ =
- base::Time::Now() + base::TimeDelta::FromSeconds(
- identity_constants::kCachedIssueAdviceTTLSeconds);
-}
-
-IdentityTokenCacheValue::IdentityTokenCacheValue(const std::string& token,
- base::TimeDelta time_to_live)
- : status_(CACHE_STATUS_TOKEN), token_(token) {
- // Remove 20 minutes from the ttl so cached tokens will have some time
- // to live any time they are returned.
- time_to_live -= base::TimeDelta::FromMinutes(20);
-
- base::TimeDelta zero_delta;
- if (time_to_live < zero_delta)
- time_to_live = zero_delta;
-
- expiration_time_ = base::Time::Now() + time_to_live;
-}
-
-IdentityTokenCacheValue::IdentityTokenCacheValue(
- const IdentityTokenCacheValue& other) = default;
-
-IdentityTokenCacheValue::~IdentityTokenCacheValue() {}
-
-IdentityTokenCacheValue::CacheValueStatus IdentityTokenCacheValue::status()
- const {
- if (is_expired())
- return IdentityTokenCacheValue::CACHE_STATUS_NOTFOUND;
- else
- return status_;
-}
-
-const IssueAdviceInfo& IdentityTokenCacheValue::issue_advice() const {
- return issue_advice_;
-}
-
-const std::string& IdentityTokenCacheValue::token() const { return token_; }
-
-bool IdentityTokenCacheValue::is_expired() const {
- return status_ == CACHE_STATUS_NOTFOUND ||
- expiration_time_ < base::Time::Now();
-}
-
-const base::Time& IdentityTokenCacheValue::expiration_time() const {
- return expiration_time_;
-}
-
-IdentityAPI::IdentityAPI(content::BrowserContext* context)
- : browser_context_(context),
- profile_identity_provider_(
- SigninManagerFactory::GetForProfile(
- Profile::FromBrowserContext(context)),
- ProfileOAuth2TokenServiceFactory::GetForProfile(
- Profile::FromBrowserContext(context)),
- LoginUIServiceFactory::GetShowLoginPopupCallbackForProfile(
- Profile::FromBrowserContext(context))),
- account_tracker_(&profile_identity_provider_,
- g_browser_process->system_request_context()),
- get_auth_token_function_(nullptr) {
- account_tracker_.AddObserver(this);
-}
-
-IdentityAPI::~IdentityAPI() {}
-
-IdentityMintRequestQueue* IdentityAPI::mint_queue() { return &mint_queue_; }
-
-void IdentityAPI::SetCachedToken(const ExtensionTokenKey& key,
- const IdentityTokenCacheValue& token_data) {
- CachedTokens::iterator it = token_cache_.find(key);
- if (it != token_cache_.end() && it->second.status() <= token_data.status())
- token_cache_.erase(it);
-
- token_cache_.insert(std::make_pair(key, token_data));
-}
-
-void IdentityAPI::EraseCachedToken(const std::string& extension_id,
- const std::string& token) {
- CachedTokens::iterator it;
- for (it = token_cache_.begin(); it != token_cache_.end(); ++it) {
- if (it->first.extension_id == extension_id &&
- it->second.status() == IdentityTokenCacheValue::CACHE_STATUS_TOKEN &&
- it->second.token() == token) {
- token_cache_.erase(it);
- break;
- }
- }
-}
-
-void IdentityAPI::EraseAllCachedTokens() { token_cache_.clear(); }
-
-const IdentityTokenCacheValue& IdentityAPI::GetCachedToken(
- const ExtensionTokenKey& key) {
- return token_cache_[key];
-}
-
-const IdentityAPI::CachedTokens& IdentityAPI::GetAllCachedTokens() {
- return token_cache_;
-}
-
-std::vector<std::string> IdentityAPI::GetAccounts() const {
- const std::string primary_account_id = GetPrimaryAccountId(browser_context_);
- const std::vector<gaia::AccountIds> ids = account_tracker_.GetAccounts();
- std::vector<std::string> gaia_ids;
-
- if (switches::IsExtensionsMultiAccount()) {
- for (std::vector<gaia::AccountIds>::const_iterator it = ids.begin();
- it != ids.end();
- ++it) {
- gaia_ids.push_back(it->gaia);
- }
- } else if (ids.size() >= 1) {
- gaia_ids.push_back(ids[0].gaia);
- }
-
- return gaia_ids;
-}
-
-std::string IdentityAPI::FindAccountKeyByGaiaId(const std::string& gaia_id) {
- return account_tracker_.FindAccountIdsByGaiaId(gaia_id).account_key;
-}
-
-void IdentityAPI::Shutdown() {
- if (get_auth_token_function_)
- get_auth_token_function_->Shutdown();
- account_tracker_.RemoveObserver(this);
- account_tracker_.Shutdown();
-}
-
-static base::LazyInstance<BrowserContextKeyedAPIFactory<IdentityAPI> >
- g_factory = LAZY_INSTANCE_INITIALIZER;
-
-// static
-BrowserContextKeyedAPIFactory<IdentityAPI>* IdentityAPI::GetFactoryInstance() {
- return g_factory.Pointer();
-}
-
-void IdentityAPI::OnAccountAdded(const gaia::AccountIds& ids) {
-}
-
-void IdentityAPI::OnAccountRemoved(const gaia::AccountIds& ids) {
-}
-
-void IdentityAPI::OnAccountSignInChanged(const gaia::AccountIds& ids,
- bool is_signed_in) {
- api::identity::AccountInfo account_info;
- account_info.id = ids.gaia;
-
- std::unique_ptr<base::ListValue> args =
- api::identity::OnSignInChanged::Create(account_info, is_signed_in);
- std::unique_ptr<Event> event(
- new Event(events::IDENTITY_ON_SIGN_IN_CHANGED,
- api::identity::OnSignInChanged::kEventName, std::move(args),
- browser_context_));
-
- EventRouter::Get(browser_context_)->BroadcastEvent(std::move(event));
-}
-
-void IdentityAPI::SetAccountStateForTest(gaia::AccountIds ids,
- bool is_signed_in) {
- account_tracker_.SetAccountStateForTest(ids, is_signed_in);
-}
-
-template <>
-void BrowserContextKeyedAPIFactory<IdentityAPI>::DeclareFactoryDependencies() {
- DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory());
- DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance());
-}
-
-IdentityGetAccountsFunction::IdentityGetAccountsFunction() {
-}
-
-IdentityGetAccountsFunction::~IdentityGetAccountsFunction() {
-}
-
-ExtensionFunction::ResponseAction IdentityGetAccountsFunction::Run() {
- if (GetProfile()->IsOffTheRecord()) {
- return RespondNow(Error(identity_constants::kOffTheRecord));
- }
-
- std::vector<std::string> gaia_ids =
- IdentityAPI::GetFactoryInstance()->Get(GetProfile())->GetAccounts();
- DCHECK(gaia_ids.size() < 2 || switches::IsExtensionsMultiAccount());
-
- std::unique_ptr<base::ListValue> infos(new base::ListValue());
-
- for (std::vector<std::string>::const_iterator it = gaia_ids.begin();
- it != gaia_ids.end();
- ++it) {
- api::identity::AccountInfo account_info;
- account_info.id = *it;
- infos->Append(account_info.ToValue());
- }
-
- return RespondNow(OneArgument(std::move(infos)));
-}
-
IdentityGetAuthTokenFunction::IdentityGetAuthTokenFunction()
: OAuth2TokenService::Consumer("extensions_identity_api"),
interactive_(false),
« no previous file with comments | « chrome/browser/extensions/api/identity/identity_get_auth_token_function.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698