Commit 7e05e14d authored by Monica Basta's avatar Monica Basta Committed by Commit Bot

Signin-internals: Added a row to refelect cookie settings.

Added "Gaia cookies state" in signin-internals which can be in three
states. 1- Blocked, if "Allow sites to save and read cookie data
(recommended)" is unchecked. 2- Cleared on exit, if the user checked
"Keep local data only until you quit your browser" or added
"accounts.google.com" to the "Clear on exit" section. 3- Allowed, if
none of the above. Sync can be paused due to other reasons, which are
trivial to find by checking Tokens request status from the
signin-internals page.

Bug: 942451
Change-Id: I965f27a667bf77ff169245664d271ccaf4309155
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1599608Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Reviewed-by: default avatarDavid Roger <droger@chromium.org>
Commit-Queue: Monica Basta <msalama@google.com>
Cr-Commit-Position: refs/heads/master@{#660059}
parent 8ea0f9f5
......@@ -160,6 +160,12 @@ bool ChromeSigninClient::AreSigninCookiesAllowed() {
return ProfileAllowsSigninCookies(profile_);
}
bool ChromeSigninClient::AreSigninCookiesDeletedOnExit() {
content_settings::CookieSettings* cookie_settings =
CookieSettingsFactory::GetForProfile(profile_).get();
return signin::SettingsDeleteSigninCookiesOnExit(cookie_settings);
}
void ChromeSigninClient::AddContentSettingsObserver(
content_settings::Observer* observer) {
HostContentSettingsMapFactory::GetForProfile(profile_)
......
......@@ -54,6 +54,7 @@ class ChromeSigninClient
bool IsFirstRun() const override;
base::Time GetInstallDate() override;
bool AreSigninCookiesAllowed() override;
bool AreSigninCookiesDeletedOnExit() override;
void AddContentSettingsObserver(
content_settings::Observer* observer) override;
void RemoveContentSettingsObserver(
......
......@@ -33,6 +33,35 @@ namespace {
// |kMaxRefreshTokenListSize| events are kept in memory.
const size_t kMaxRefreshTokenListSize = 50;
enum class GaiaCookiesState {
kAllowed,
kClearOnExit,
kBlocked,
};
GaiaCookiesState GetGaiaCookiesState(SigninClient* signin_client) {
bool signin_cookies_allowed = signin_client->AreSigninCookiesAllowed();
if (!signin_cookies_allowed)
return GaiaCookiesState::kBlocked;
bool clear_cookies_on_exit = signin_client->AreSigninCookiesDeletedOnExit();
if (clear_cookies_on_exit)
return GaiaCookiesState::kClearOnExit;
return GaiaCookiesState::kAllowed;
}
std::string GetGaiaCookiesStateAsString(const GaiaCookiesState state) {
switch (state) {
case GaiaCookiesState::kBlocked:
return "Not allowed";
case GaiaCookiesState::kClearOnExit:
return "Cleared on exit";
case GaiaCookiesState::kAllowed:
return "Allowed";
}
}
std::string GetTimeStr(base::Time time) {
return base::UTF16ToUTF8(base::TimeFormatShortDateAndTime(time));
}
......@@ -290,17 +319,31 @@ void AboutSigninInternals::Initialize(SigninClient* client) {
RefreshSigninPrefs();
client_->AddContentSettingsObserver(this);
signin_error_controller_->AddObserver(this);
identity_manager_->AddObserver(this);
identity_manager_->AddDiagnosticsObserver(this);
}
void AboutSigninInternals::Shutdown() {
client_->RemoveContentSettingsObserver(this);
signin_error_controller_->RemoveObserver(this);
identity_manager_->RemoveObserver(this);
identity_manager_->RemoveDiagnosticsObserver(this);
}
void AboutSigninInternals::OnContentSettingChanged(
const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
ContentSettingsType content_type,
const std::string& resource_identifier) {
// If this is not a change to cookie settings, just ignore.
if (content_type != CONTENT_SETTINGS_TYPE_COOKIES)
return;
NotifyObservers();
}
void AboutSigninInternals::NotifyObservers() {
if (!signin_observers_.might_have_observers())
return;
......@@ -578,6 +621,9 @@ AboutSigninInternals::SigninStatus::ToValue(
->GetDetailedStateOfLoadingOfRefreshTokens();
AddSectionEntry(basic_info, "TokenService Load Status",
TokenServiceLoadCredentialsStateToLabel(load_tokens_state));
AddSectionEntry(
basic_info, "Gaia cookies state",
GetGaiaCookiesStateAsString(GetGaiaCookiesState(signin_client)));
if (identity_manager->HasPrimaryAccount()) {
CoreAccountInfo account_info = identity_manager->GetPrimaryAccountInfo();
......
......@@ -15,6 +15,7 @@
#include "base/macros.h"
#include "base/observer_list.h"
#include "base/values.h"
#include "components/content_settings/core/browser/content_settings_observer.h"
#include "components/keyed_service/core/keyed_service.h"
#include "components/signin/core/browser/signin_client.h"
#include "components/signin/core/browser/signin_error_controller.h"
......@@ -35,11 +36,11 @@ using TimedSigninStatusValue = std::pair<std::string, std::string>;
// This class collects authentication, signin and token information
// to propagate to about:signin-internals via SigninInternalsUI.
class AboutSigninInternals
: public KeyedService,
SigninErrorController::Observer,
identity::IdentityManager::Observer,
identity::IdentityManager::DiagnosticsObserver {
class AboutSigninInternals : public KeyedService,
public content_settings::Observer,
SigninErrorController::Observer,
identity::IdentityManager::Observer,
identity::IdentityManager::DiagnosticsObserver {
public:
class Observer {
public:
......@@ -217,6 +218,12 @@ class AboutSigninInternals
// SigninErrorController::Observer implementation
void OnErrorChanged() override;
// content_settings::Observer implementation.
void OnContentSettingChanged(const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
ContentSettingsType content_type,
const std::string& resource_identifier) override;
// Weak pointer to the identity manager.
identity::IdentityManager* identity_manager_;
......
......@@ -77,7 +77,7 @@
<div class="account-section">
<table class="signin-details">
<tr class="header">
<td>Accound Id</td>
<td>Account Id</td>
<td>Has refresh token</td>
<td>Has persistent auth error</td>
</tr>
......
......@@ -79,6 +79,9 @@ class SigninClient : public KeyedService {
// Returns true if GAIA cookies are allowed in the content area.
virtual bool AreSigninCookiesAllowed() = 0;
// Returns true if signin cookies are cleared on exit.
virtual bool AreSigninCookiesDeletedOnExit() = 0;
// Adds an observer to listen for changes to the state of sign in cookie
// settings.
virtual void AddContentSettingsObserver(
......
......@@ -70,6 +70,10 @@ bool TestSigninClient::AreSigninCookiesAllowed() {
return are_signin_cookies_allowed_;
}
bool TestSigninClient::AreSigninCookiesDeletedOnExit() {
return false;
}
void TestSigninClient::AddContentSettingsObserver(
content_settings::Observer* observer) {
}
......
......@@ -79,6 +79,7 @@ class TestSigninClient : public SigninClient {
bool IsFirstRun() const override;
base::Time GetInstallDate() override;
bool AreSigninCookiesAllowed() override;
bool AreSigninCookiesDeletedOnExit() override;
void AddContentSettingsObserver(
content_settings::Observer* observer) override;
void RemoveContentSettingsObserver(
......
......@@ -45,6 +45,7 @@ class IOSChromeSigninClient : public SigninClient {
void DoFinalInit() override;
bool IsFirstRun() const override;
bool AreSigninCookiesAllowed() override;
bool AreSigninCookiesDeletedOnExit() override;
void AddContentSettingsObserver(
content_settings::Observer* observer) override;
void RemoveContentSettingsObserver(
......
......@@ -75,6 +75,10 @@ bool IOSChromeSigninClient::AreSigninCookiesAllowed() {
return signin::SettingsAllowSigninCookies(cookie_settings_.get());
}
bool IOSChromeSigninClient::AreSigninCookiesDeletedOnExit() {
return signin::SettingsDeleteSigninCookiesOnExit(cookie_settings_.get());
}
void IOSChromeSigninClient::AddContentSettingsObserver(
content_settings::Observer* observer) {
host_content_settings_map_->AddObserver(observer);
......
......@@ -41,6 +41,7 @@ class IOSWebViewSigninClient : public SigninClient {
void DoFinalInit() override;
bool IsFirstRun() const override;
bool AreSigninCookiesAllowed() override;
bool AreSigninCookiesDeletedOnExit() override;
void AddContentSettingsObserver(
content_settings::Observer* observer) override;
void RemoveContentSettingsObserver(
......
......@@ -68,6 +68,10 @@ bool IOSWebViewSigninClient::AreSigninCookiesAllowed() {
return signin::SettingsAllowSigninCookies(cookie_settings_.get());
}
bool IOSWebViewSigninClient::AreSigninCookiesDeletedOnExit() {
return signin::SettingsDeleteSigninCookiesOnExit(cookie_settings_.get());
}
void IOSWebViewSigninClient::AddContentSettingsObserver(
content_settings::Observer* observer) {
host_content_settings_map_->AddObserver(observer);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment