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() { ...@@ -160,6 +160,12 @@ bool ChromeSigninClient::AreSigninCookiesAllowed() {
return ProfileAllowsSigninCookies(profile_); return ProfileAllowsSigninCookies(profile_);
} }
bool ChromeSigninClient::AreSigninCookiesDeletedOnExit() {
content_settings::CookieSettings* cookie_settings =
CookieSettingsFactory::GetForProfile(profile_).get();
return signin::SettingsDeleteSigninCookiesOnExit(cookie_settings);
}
void ChromeSigninClient::AddContentSettingsObserver( void ChromeSigninClient::AddContentSettingsObserver(
content_settings::Observer* observer) { content_settings::Observer* observer) {
HostContentSettingsMapFactory::GetForProfile(profile_) HostContentSettingsMapFactory::GetForProfile(profile_)
......
...@@ -54,6 +54,7 @@ class ChromeSigninClient ...@@ -54,6 +54,7 @@ class ChromeSigninClient
bool IsFirstRun() const override; bool IsFirstRun() const override;
base::Time GetInstallDate() override; base::Time GetInstallDate() override;
bool AreSigninCookiesAllowed() override; bool AreSigninCookiesAllowed() override;
bool AreSigninCookiesDeletedOnExit() override;
void AddContentSettingsObserver( void AddContentSettingsObserver(
content_settings::Observer* observer) override; content_settings::Observer* observer) override;
void RemoveContentSettingsObserver( void RemoveContentSettingsObserver(
......
...@@ -33,6 +33,35 @@ namespace { ...@@ -33,6 +33,35 @@ namespace {
// |kMaxRefreshTokenListSize| events are kept in memory. // |kMaxRefreshTokenListSize| events are kept in memory.
const size_t kMaxRefreshTokenListSize = 50; 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) { std::string GetTimeStr(base::Time time) {
return base::UTF16ToUTF8(base::TimeFormatShortDateAndTime(time)); return base::UTF16ToUTF8(base::TimeFormatShortDateAndTime(time));
} }
...@@ -290,17 +319,31 @@ void AboutSigninInternals::Initialize(SigninClient* client) { ...@@ -290,17 +319,31 @@ void AboutSigninInternals::Initialize(SigninClient* client) {
RefreshSigninPrefs(); RefreshSigninPrefs();
client_->AddContentSettingsObserver(this);
signin_error_controller_->AddObserver(this); signin_error_controller_->AddObserver(this);
identity_manager_->AddObserver(this); identity_manager_->AddObserver(this);
identity_manager_->AddDiagnosticsObserver(this); identity_manager_->AddDiagnosticsObserver(this);
} }
void AboutSigninInternals::Shutdown() { void AboutSigninInternals::Shutdown() {
client_->RemoveContentSettingsObserver(this);
signin_error_controller_->RemoveObserver(this); signin_error_controller_->RemoveObserver(this);
identity_manager_->RemoveObserver(this); identity_manager_->RemoveObserver(this);
identity_manager_->RemoveDiagnosticsObserver(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() { void AboutSigninInternals::NotifyObservers() {
if (!signin_observers_.might_have_observers()) if (!signin_observers_.might_have_observers())
return; return;
...@@ -578,6 +621,9 @@ AboutSigninInternals::SigninStatus::ToValue( ...@@ -578,6 +621,9 @@ AboutSigninInternals::SigninStatus::ToValue(
->GetDetailedStateOfLoadingOfRefreshTokens(); ->GetDetailedStateOfLoadingOfRefreshTokens();
AddSectionEntry(basic_info, "TokenService Load Status", AddSectionEntry(basic_info, "TokenService Load Status",
TokenServiceLoadCredentialsStateToLabel(load_tokens_state)); TokenServiceLoadCredentialsStateToLabel(load_tokens_state));
AddSectionEntry(
basic_info, "Gaia cookies state",
GetGaiaCookiesStateAsString(GetGaiaCookiesState(signin_client)));
if (identity_manager->HasPrimaryAccount()) { if (identity_manager->HasPrimaryAccount()) {
CoreAccountInfo account_info = identity_manager->GetPrimaryAccountInfo(); CoreAccountInfo account_info = identity_manager->GetPrimaryAccountInfo();
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/observer_list.h" #include "base/observer_list.h"
#include "base/values.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/keyed_service/core/keyed_service.h"
#include "components/signin/core/browser/signin_client.h" #include "components/signin/core/browser/signin_client.h"
#include "components/signin/core/browser/signin_error_controller.h" #include "components/signin/core/browser/signin_error_controller.h"
...@@ -35,11 +36,11 @@ using TimedSigninStatusValue = std::pair<std::string, std::string>; ...@@ -35,11 +36,11 @@ using TimedSigninStatusValue = std::pair<std::string, std::string>;
// This class collects authentication, signin and token information // This class collects authentication, signin and token information
// to propagate to about:signin-internals via SigninInternalsUI. // to propagate to about:signin-internals via SigninInternalsUI.
class AboutSigninInternals class AboutSigninInternals : public KeyedService,
: public KeyedService, public content_settings::Observer,
SigninErrorController::Observer, SigninErrorController::Observer,
identity::IdentityManager::Observer, identity::IdentityManager::Observer,
identity::IdentityManager::DiagnosticsObserver { identity::IdentityManager::DiagnosticsObserver {
public: public:
class Observer { class Observer {
public: public:
...@@ -217,6 +218,12 @@ class AboutSigninInternals ...@@ -217,6 +218,12 @@ class AboutSigninInternals
// SigninErrorController::Observer implementation // SigninErrorController::Observer implementation
void OnErrorChanged() override; 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. // Weak pointer to the identity manager.
identity::IdentityManager* identity_manager_; identity::IdentityManager* identity_manager_;
......
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
<div class="account-section"> <div class="account-section">
<table class="signin-details"> <table class="signin-details">
<tr class="header"> <tr class="header">
<td>Accound Id</td> <td>Account Id</td>
<td>Has refresh token</td> <td>Has refresh token</td>
<td>Has persistent auth error</td> <td>Has persistent auth error</td>
</tr> </tr>
......
...@@ -79,6 +79,9 @@ class SigninClient : public KeyedService { ...@@ -79,6 +79,9 @@ class SigninClient : public KeyedService {
// Returns true if GAIA cookies are allowed in the content area. // Returns true if GAIA cookies are allowed in the content area.
virtual bool AreSigninCookiesAllowed() = 0; 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 // Adds an observer to listen for changes to the state of sign in cookie
// settings. // settings.
virtual void AddContentSettingsObserver( virtual void AddContentSettingsObserver(
......
...@@ -70,6 +70,10 @@ bool TestSigninClient::AreSigninCookiesAllowed() { ...@@ -70,6 +70,10 @@ bool TestSigninClient::AreSigninCookiesAllowed() {
return are_signin_cookies_allowed_; return are_signin_cookies_allowed_;
} }
bool TestSigninClient::AreSigninCookiesDeletedOnExit() {
return false;
}
void TestSigninClient::AddContentSettingsObserver( void TestSigninClient::AddContentSettingsObserver(
content_settings::Observer* observer) { content_settings::Observer* observer) {
} }
......
...@@ -79,6 +79,7 @@ class TestSigninClient : public SigninClient { ...@@ -79,6 +79,7 @@ class TestSigninClient : public SigninClient {
bool IsFirstRun() const override; bool IsFirstRun() const override;
base::Time GetInstallDate() override; base::Time GetInstallDate() override;
bool AreSigninCookiesAllowed() override; bool AreSigninCookiesAllowed() override;
bool AreSigninCookiesDeletedOnExit() override;
void AddContentSettingsObserver( void AddContentSettingsObserver(
content_settings::Observer* observer) override; content_settings::Observer* observer) override;
void RemoveContentSettingsObserver( void RemoveContentSettingsObserver(
......
...@@ -45,6 +45,7 @@ class IOSChromeSigninClient : public SigninClient { ...@@ -45,6 +45,7 @@ class IOSChromeSigninClient : public SigninClient {
void DoFinalInit() override; void DoFinalInit() override;
bool IsFirstRun() const override; bool IsFirstRun() const override;
bool AreSigninCookiesAllowed() override; bool AreSigninCookiesAllowed() override;
bool AreSigninCookiesDeletedOnExit() override;
void AddContentSettingsObserver( void AddContentSettingsObserver(
content_settings::Observer* observer) override; content_settings::Observer* observer) override;
void RemoveContentSettingsObserver( void RemoveContentSettingsObserver(
......
...@@ -75,6 +75,10 @@ bool IOSChromeSigninClient::AreSigninCookiesAllowed() { ...@@ -75,6 +75,10 @@ bool IOSChromeSigninClient::AreSigninCookiesAllowed() {
return signin::SettingsAllowSigninCookies(cookie_settings_.get()); return signin::SettingsAllowSigninCookies(cookie_settings_.get());
} }
bool IOSChromeSigninClient::AreSigninCookiesDeletedOnExit() {
return signin::SettingsDeleteSigninCookiesOnExit(cookie_settings_.get());
}
void IOSChromeSigninClient::AddContentSettingsObserver( void IOSChromeSigninClient::AddContentSettingsObserver(
content_settings::Observer* observer) { content_settings::Observer* observer) {
host_content_settings_map_->AddObserver(observer); host_content_settings_map_->AddObserver(observer);
......
...@@ -41,6 +41,7 @@ class IOSWebViewSigninClient : public SigninClient { ...@@ -41,6 +41,7 @@ class IOSWebViewSigninClient : public SigninClient {
void DoFinalInit() override; void DoFinalInit() override;
bool IsFirstRun() const override; bool IsFirstRun() const override;
bool AreSigninCookiesAllowed() override; bool AreSigninCookiesAllowed() override;
bool AreSigninCookiesDeletedOnExit() override;
void AddContentSettingsObserver( void AddContentSettingsObserver(
content_settings::Observer* observer) override; content_settings::Observer* observer) override;
void RemoveContentSettingsObserver( void RemoveContentSettingsObserver(
......
...@@ -68,6 +68,10 @@ bool IOSWebViewSigninClient::AreSigninCookiesAllowed() { ...@@ -68,6 +68,10 @@ bool IOSWebViewSigninClient::AreSigninCookiesAllowed() {
return signin::SettingsAllowSigninCookies(cookie_settings_.get()); return signin::SettingsAllowSigninCookies(cookie_settings_.get());
} }
bool IOSWebViewSigninClient::AreSigninCookiesDeletedOnExit() {
return signin::SettingsDeleteSigninCookiesOnExit(cookie_settings_.get());
}
void IOSWebViewSigninClient::AddContentSettingsObserver( void IOSWebViewSigninClient::AddContentSettingsObserver(
content_settings::Observer* observer) { content_settings::Observer* observer) {
host_content_settings_map_->AddObserver(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