Add setting to clear data on exit: correct the crash caused by the dips deletion (#1308)

This commit is contained in:
Carmelo Messina
2024-08-01 17:14:18 +02:00
parent 426f48f292
commit 71aab81c9a
@@ -12,7 +12,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/app/settings_strings.grdp | 10 +++
.../browsing_data/browsing_data_bridge.cc | 2 +-
.../chrome_browsing_data_lifetime_manager.cc | 22 +++++-
.../chrome_browsing_data_remover_delegate.cc | 13 ++++
.../chrome_browsing_data_remover_constants.h | 3 +-
.../chrome_browsing_data_remover_delegate.cc | 18 +++++
chrome/browser/dips/dips_service.cc | 2 +-
.../api/settings_private/prefs_util.cc | 17 +++++
.../browser/profiles/ProfileManagerUtils.java | 5 ++
.../profiles/android/profile_manager_utils.cc | 5 ++
@@ -22,7 +24,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../clear_browsing_data_dialog.ts | 2 +
.../strings/android_chrome_strings.grd | 3 +
.../settings_localized_strings_provider.cc | 1 +
.../content/browsing_data_helper.cc | 5 +-
.../content/browsing_data_helper.cc | 9 ++-
.../core/browsing_data_policies_utils.cc | 20 ++---
.../core/browsing_data_policies_utils.h | 11 +++
.../browsing_data/core/browsing_data_utils.cc | 31 ++++++++
@@ -31,7 +33,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
components/browsing_data/core/pref_names.h | 10 +++
.../search_engines/template_url_service.cc | 1 +
content/browser/storage_partition_impl.cc | 1 +
27 files changed, 316 insertions(+), 18 deletions(-)
29 files changed, 326 insertions(+), 22 deletions(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
@@ -280,6 +282,19 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.
bool sync_disabled = !SyncServiceFactory::IsSyncAllowed(profile_);
// Condition is satisfied if sync is fully disabled by policy.
if (sync_disabled) {
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h b/chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_constants.h
@@ -32,8 +32,7 @@ constexpr DataType DATA_TYPE_SITE_USAGE_DATA = DATA_TYPE_EMBEDDER_BEGIN << 4;
constexpr DataType DATA_TYPE_DURABLE_PERMISSION = DATA_TYPE_EMBEDDER_BEGIN << 5;
constexpr DataType DATA_TYPE_EXTERNAL_PROTOCOL_DATA = DATA_TYPE_EMBEDDER_BEGIN
<< 6;
-constexpr DataType DATA_TYPE_HOSTED_APP_DATA_TEST_ONLY =
- DATA_TYPE_EMBEDDER_BEGIN << 7;
+constexpr DataType DATA_TYPE_SKIP_SSL_HOST_STATE = DATA_TYPE_EMBEDDER_BEGIN << 7;
constexpr DataType DATA_TYPE_CONTENT_SETTINGS = DATA_TYPE_EMBEDDER_BEGIN << 8;
constexpr DataType DATA_TYPE_BOOKMARKS = DATA_TYPE_EMBEDDER_BEGIN << 9;
constexpr DataType DATA_TYPE_ISOLATED_ORIGINS = DATA_TYPE_EMBEDDER_BEGIN << 10;
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
@@ -313,7 +328,19 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
base::ThreadPool::PostTaskAndReply(
FROM_HERE, {base::TaskPriority::USER_VISIBLE, base::MayBlock()},
base::BindOnce(
@@ -588,9 +595,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -560,6 +567,11 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
// and SSL host state are scoped to hosts and represent them as std::string.
// Rename the method to indicate its more general usage.
if (profile_->GetSSLHostStateDelegate()) {
+ bool skip = false;
+ if (remove_mask & chrome_browsing_data_remover::DATA_TYPE_SKIP_SSL_HOST_STATE) {
+ skip = true;
+ }
+ if (!skip)
profile_->GetSSLHostStateDelegate()->Clear(
filter_builder->MatchesAllOriginsAndDomains()
? base::RepeatingCallback<bool(const std::string&)>()
@@ -588,9 +600,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
}
device_event_log::Clear(delete_begin_, delete_end_);
@@ -327,7 +354,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
content::BackgroundTracingManager::GetInstance().DeleteTracesInDateRange(
delete_begin_, delete_end_);
@@ -1257,6 +1268,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -1257,6 +1273,8 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
if (should_clear_zero_suggest_and_session_token && template_url_service)
template_url_service->ClearSessionToken();
@@ -336,6 +363,18 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
}
//////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/dips/dips_service.cc b/chrome/browser/dips/dips_service.cc
--- a/chrome/browser/dips/dips_service.cc
+++ b/chrome/browser/dips/dips_service.cc
@@ -193,7 +193,7 @@ class StateClearer : public content::BrowsingDataRemover::Observer {
}
remover->RemoveWithFilterAndReply(
base::Time::Min(), base::Time::Max(),
- remove_mask |
+ remove_mask | chrome_browsing_data_remover::DATA_TYPE_SKIP_SSL_HOST_STATE |
content::BrowsingDataRemover::DATA_TYPE_AVOID_CLOSING_CONNECTIONS,
content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB |
content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB,
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -538,14 +577,17 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide
diff --git a/components/browsing_data/content/browsing_data_helper.cc b/components/browsing_data/content/browsing_data_helper.cc
--- a/components/browsing_data/content/browsing_data_helper.cc
+++ b/components/browsing_data/content/browsing_data_helper.cc
@@ -40,8 +40,11 @@ bool WebsiteSettingsFilterAdapter(
@@ -40,8 +40,13 @@ bool WebsiteSettingsFilterAdapter(
// this filter is used for is DURABLE_STORAGE, which also only uses
// origin-scoped patterns. Such patterns can be directly translated to a GURL.
GURL url(primary_pattern.ToString());
- DCHECK(url.is_valid()) << "url: '" << url.possibly_invalid_spec() << "' "
- << "pattern: '" << primary_pattern.ToString() << "'";
+ if (!url.is_valid()) {
+ // COOKIE_CONTROLS_METADATA are in the form
+ // 'https://[%2A.]domain.ext'
+ LOG(INFO) << "url: '" << url.possibly_invalid_spec() << "' "
<< "pattern: '" << primary_pattern.ToString() << "'";
+ << "pattern: '" << primary_pattern.ToString() << "'";
+ return true;
+ }
return predicate.Run(url);