blob: cdad334c8d8c9739387d6b05d5b50fe7671fd538 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
// Copyright 2019 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 "components/signin/core/browser/cookie_reminter.h"
#include "base/bind_helpers.h"
#include "base/metrics/histogram_macros.h"
#include "base/syslog_logging.h"
#include "components/signin/public/identity_manager/accounts_cookie_mutator.h"
namespace {
bool DoesAccountRequireCookieReminting(
const std::vector<CoreAccountInfo>& accounts_requiring_cookie_remint,
const CoreAccountInfo& account_info) {
for (const CoreAccountInfo& account_requiring_remint :
accounts_requiring_cookie_remint) {
if (account_info.gaia == account_requiring_remint.gaia) {
return true;
}
}
return false;
}
} // namespace
CookieReminter::CookieReminter(signin::IdentityManager* identity_manager)
: identity_manager_(identity_manager) {
identity_manager_->AddObserver(this);
}
CookieReminter::~CookieReminter() {
identity_manager_->RemoveObserver(this);
}
void CookieReminter::ForceCookieRemintingOnNextTokenUpdate(
const CoreAccountInfo& account_info) {
if (DoesAccountRequireCookieReminting(accounts_requiring_cookie_remint_,
account_info)) {
return;
}
UMA_HISTOGRAM_BOOLEAN("AccountManager.MirrorReauthenticationRequest", true);
accounts_requiring_cookie_remint_.emplace_back(account_info);
}
void CookieReminter::OnRefreshTokenUpdatedForAccount(
const CoreAccountInfo& account_info) {
if (DoesAccountRequireCookieReminting(accounts_requiring_cookie_remint_,
account_info)) {
// Cookies are going to be reminted for all accounts.
accounts_requiring_cookie_remint_.clear();
identity_manager_->GetAccountsCookieMutator()->LogOutAllAccounts(
gaia::GaiaSource::kChromeOS,
signin::AccountsCookieMutator::LogOutFromCookieCompletedCallback());
}
}
|