add-flag-to-clear-data-on-exit.patch 4.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. --- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
  2. +++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
  3. @@ -24,6 +24,7 @@
  4. #include "chrome/browser/profiles/profile.h"
  5. #include "chrome/browser/profiles/profile_manager.h"
  6. #include "chrome/browser/sync/sync_service_factory.h"
  7. +#include "components/browsing_data/core/features.h"
  8. #include "components/browsing_data/core/pref_names.h"
  9. #include "components/keep_alive_registry/keep_alive_types.h"
  10. #include "components/keep_alive_registry/scoped_keep_alive.h"
  11. @@ -151,6 +152,21 @@ class BrowsingDataRemoverObserver
  12. #endif
  13. };
  14. +uint64_t AllOriginTypeMask() {
  15. + return content::BrowsingDataRemover::ORIGIN_TYPE_PROTECTED_WEB |
  16. + content::BrowsingDataRemover::ORIGIN_TYPE_UNPROTECTED_WEB;
  17. +}
  18. +
  19. +uint64_t AllRemoveMask() {
  20. + return content::BrowsingDataRemover::DATA_TYPE_CACHE |
  21. + content::BrowsingDataRemover::DATA_TYPE_DOWNLOADS |
  22. + chrome_browsing_data_remover::DATA_TYPE_CONTENT_SETTINGS |
  23. + chrome_browsing_data_remover::DATA_TYPE_FORM_DATA |
  24. + chrome_browsing_data_remover::DATA_TYPE_HISTORY |
  25. + chrome_browsing_data_remover::DATA_TYPE_PASSWORDS |
  26. + chrome_browsing_data_remover::DATA_TYPE_SITE_DATA;
  27. +}
  28. +
  29. uint64_t GetOriginTypeMask(const base::Value& data_types) {
  30. uint64_t result = 0;
  31. for (const auto& data_type : data_types.GetList()) {
  32. @@ -292,8 +308,9 @@ void ChromeBrowsingDataLifetimeManager::
  33. bool keep_browser_alive) {
  34. auto* data_types = profile_->GetPrefs()->GetList(
  35. browsing_data::prefs::kClearBrowsingDataOnExitList);
  36. - if (data_types && !data_types->GetList().empty() &&
  37. - !SyncServiceFactory::IsSyncAllowed(profile_)) {
  38. + bool cdoe = base::FeatureList::IsEnabled(browsing_data::features::kClearDataOnExit);
  39. + if (cdoe || (data_types && !data_types->GetList().empty() &&
  40. + !SyncServiceFactory::IsSyncAllowed(profile_))) {
  41. profile_->GetPrefs()->SetBoolean(
  42. browsing_data::prefs::kClearBrowsingDataOnExitDeletionPending, true);
  43. auto* remover = profile_->GetBrowsingDataRemover();
  44. @@ -304,8 +321,8 @@ void ChromeBrowsingDataLifetimeManager::
  45. DCHECK(keep_browser_alive);
  46. #endif
  47. remover->RemoveAndReply(base::Time(), base::Time::Max(),
  48. - GetRemoveMask(*data_types),
  49. - GetOriginTypeMask(*data_types),
  50. + cdoe ? AllRemoveMask() : GetRemoveMask(*data_types),
  51. + cdoe ? AllOriginTypeMask() : GetOriginTypeMask(*data_types),
  52. BrowsingDataRemoverObserver::Create(
  53. remover, /*filterable_deletion=*/true, profile_,
  54. keep_browser_alive));
  55. --- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_factory.cc
  56. +++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager_factory.cc
  57. @@ -48,6 +48,8 @@ ChromeBrowsingDataLifetimeManagerFactory
  58. KeyedService* ChromeBrowsingDataLifetimeManagerFactory::BuildServiceInstanceFor(
  59. content::BrowserContext* context) const {
  60. if (!base::FeatureList::IsEnabled(
  61. + browsing_data::features::kClearDataOnExit) &&
  62. + !base::FeatureList::IsEnabled(
  63. browsing_data::features::kEnableBrowsingDataLifetimeManager))
  64. return nullptr;
  65. Profile* profile = Profile::FromBrowserContext(context);
  66. --- a/chrome/browser/ungoogled_flag_entries.h
  67. +++ b/chrome/browser/ungoogled_flag_entries.h
  68. @@ -60,4 +60,8 @@
  69. "Keep old history",
  70. "Keep history older than 3 months. ungoogled-chromium flag",
  71. kOsAll, SINGLE_VALUE_TYPE("keep-old-history")},
  72. + {"clear-data-on-exit",
  73. + "Clear data on exit",
  74. + "Clears all browsing data on exit. ungoogled-chromium flag",
  75. + kOsDesktop, FEATURE_VALUE_TYPE(browsing_data::features::kClearDataOnExit)},
  76. #endif // CHROME_BROWSER_UNGOOGLED_FLAG_ENTRIES_H_
  77. --- a/components/browsing_data/core/features.cc
  78. +++ b/components/browsing_data/core/features.cc
  79. @@ -19,5 +19,7 @@ const base::Feature kEnableBrowsingDataL
  80. const base::Feature kEnableBrowsingDataLifetimeManager{
  81. "BrowsingDataLifetimeManager", base::FEATURE_ENABLED_BY_DEFAULT};
  82. #endif
  83. +
  84. +const base::Feature kClearDataOnExit{"ClearDataOnExit", base::FEATURE_DISABLED_BY_DEFAULT};
  85. } // namespace features
  86. } // namespace browsing_data
  87. --- a/components/browsing_data/core/features.h
  88. +++ b/components/browsing_data/core/features.h
  89. @@ -17,6 +17,7 @@ extern const base::Feature kEnableRemovi
  90. // defined by the BrowsingDataLifetime policy.
  91. extern const base::Feature kEnableBrowsingDataLifetimeManager;
  92. +extern const base::Feature kClearDataOnExit;
  93. } // namespace features
  94. } // namespace browsing_data