From 631072f5d6d545fe20e97f41d3227bde0d679577 Mon Sep 17 00:00:00 2001 From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Tue, 1 Sep 2020 19:42:42 +0200 Subject: [PATCH] Remove session-only cookies support --- build/bromite_patches_list.txt | 1 - .../Session-only-cookies-support.patch | 714 ------------------ 2 files changed, 715 deletions(-) delete mode 100644 build/patches/Session-only-cookies-support.patch diff --git a/build/bromite_patches_list.txt b/build/bromite_patches_list.txt index 47487c97..93fc620f 100644 --- a/build/bromite_patches_list.txt +++ b/build/bromite_patches_list.txt @@ -141,7 +141,6 @@ Enable-prefetch-privacy-changes-by-default.patch Enable-reduced-referrer-granularity-by-default.patch Disable-support-for-RAR-files-inspection.patch Enable-improved-cookie-controls-by-default.patch -Session-only-cookies-support.patch Add-history-support-in-incognito-mode.patch Enable-darken-websites-checkbox-in-themes.patch Remove-blocklisted-URLs-upon-bookmark-creation.patch diff --git a/build/patches/Session-only-cookies-support.patch b/build/patches/Session-only-cookies-support.patch deleted file mode 100644 index ac53d1ed..00000000 --- a/build/patches/Session-only-cookies-support.patch +++ /dev/null @@ -1,714 +0,0 @@ -From: uazo -Date: Thu, 6 Aug 2020 14:02:57 +0000 -Subject: Session-only cookies support - ---- - base/android/application_status_listener.cc | 1 + - base/android/application_status_listener.h | 3 +- - .../org/chromium/base/ApplicationStatus.java | 4 ++ - .../chrome/browser/ApplicationLifetime.java | 3 ++ - .../availability/availability_prober.cc | 1 + - .../four_state_cookie_settings_preference.xml | 7 ++++ - .../ContentSettingsResources.java | 9 +++++ - .../FourStateCookieSettingsPreference.java | 17 +++++++- - .../site_settings/SingleCategorySettings.java | 29 ++++++++++++++ - .../site_settings/SingleWebsiteSettings.java | 38 ++++++++++++------ - .../site_settings/SiteSettings.java | 9 +++++ - .../strings/android/site_settings.grdp | 8 +++- - .../translations/browser_ui_strings_it.xtb | 2 + - .../core/browser/content_settings_registry.cc | 0 - .../core/data_use_measurement.cc | 1 + - .../scheduler/responsiveness/calculator.cc | 1 + - .../base/application_state_mojom_traits.cc | 7 +++- - .../public/mojom/base/application_state.mojom | 1 + - services/network/cookie_manager.cc | 14 +++++++ - services/network/cookie_manager.h | 3 ++ - services/network/network_context.cc | 17 ++++++++ - .../network/public/mojom/cookie_manager.mojom | 3 ++ - .../network/session_cleanup_cookie_store.cc | 39 +++++++++++++++++++ - .../network/session_cleanup_cookie_store.h | 9 +++++ - 24 files changed, 210 insertions(+), 16 deletions(-) - mode change 100644 => 100755 base/android/application_status_listener.cc - mode change 100644 => 100755 base/android/application_status_listener.h - mode change 100644 => 100755 base/android/java/src/org/chromium/base/ApplicationStatus.java - mode change 100644 => 100755 chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java - mode change 100644 => 100755 chrome/browser/availability/availability_prober.cc - mode change 100644 => 100755 components/browser_ui/site_settings/android/java/res/layout/four_state_cookie_settings_preference.xml - mode change 100644 => 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/ContentSettingsResources.java - mode change 100644 => 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/FourStateCookieSettingsPreference.java - mode change 100644 => 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java - mode change 100644 => 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java - mode change 100644 => 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettings.java - mode change 100644 => 100755 components/browser_ui/strings/android/site_settings.grdp - mode change 100644 => 100755 components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb - mode change 100644 => 100755 components/content_settings/core/browser/content_settings_registry.cc - mode change 100644 => 100755 content/browser/scheduler/responsiveness/calculator.cc - mode change 100644 => 100755 mojo/public/cpp/base/application_state_mojom_traits.cc - mode change 100644 => 100755 mojo/public/mojom/base/application_state.mojom - mode change 100644 => 100755 services/network/cookie_manager.cc - mode change 100644 => 100755 services/network/cookie_manager.h - mode change 100644 => 100755 services/network/network_context.cc - mode change 100644 => 100755 services/network/public/mojom/cookie_manager.mojom - mode change 100644 => 100755 services/network/session_cleanup_cookie_store.cc - mode change 100644 => 100755 services/network/session_cleanup_cookie_store.h - -diff --git a/base/android/application_status_listener.cc b/base/android/application_status_listener.cc -old mode 100644 -new mode 100755 ---- a/base/android/application_status_listener.cc -+++ b/base/android/application_status_listener.cc -@@ -85,6 +85,7 @@ void ApplicationStatusListener::NotifyApplicationStateChange( - switch (state) { - case APPLICATION_STATE_UNKNOWN: - case APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES: -+ case APPLICATION_STATE_EXITING: - break; - case APPLICATION_STATE_HAS_RUNNING_ACTIVITIES: - RecordAction(UserMetricsAction("Android.LifeCycle.HasRunningActivities")); -diff --git a/base/android/application_status_listener.h b/base/android/application_status_listener.h -old mode 100644 -new mode 100755 ---- a/base/android/application_status_listener.h -+++ b/base/android/application_status_listener.h -@@ -30,7 +30,8 @@ enum ApplicationState { - APPLICATION_STATE_HAS_RUNNING_ACTIVITIES = 1, - APPLICATION_STATE_HAS_PAUSED_ACTIVITIES = 2, - APPLICATION_STATE_HAS_STOPPED_ACTIVITIES = 3, -- APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES = 4 -+ APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES = 4, -+ APPLICATION_STATE_EXITING = 5 - }; - - // A native helper class to listen to state changes of the Android -diff --git a/base/android/java/src/org/chromium/base/ApplicationStatus.java b/base/android/java/src/org/chromium/base/ApplicationStatus.java -old mode 100644 -new mode 100755 ---- a/base/android/java/src/org/chromium/base/ApplicationStatus.java -+++ b/base/android/java/src/org/chromium/base/ApplicationStatus.java -@@ -661,6 +661,10 @@ public class ApplicationStatus { - return ApplicationState.HAS_DESTROYED_ACTIVITIES; - } - -+ public static void sendOnApplicationStateChange(int newState) { -+ ApplicationStatusJni.get().onApplicationStateChange(newState); -+ } -+ - @NativeMethods - interface Natives { - // Called to notify the native side of state changes. -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java b/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java -old mode 100644 -new mode 100755 ---- a/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java -@@ -6,6 +6,7 @@ package org.chromium.chrome.browser; - - import org.chromium.base.ObserverList; - import org.chromium.base.annotations.CalledByNative; -+import org.chromium.base.ApplicationStatus; - - /** - * Watches for when Chrome is told to restart itself. -@@ -42,6 +43,8 @@ public class ApplicationLifetime { - - @CalledByNative - public static void terminate(boolean restart) { -+ ApplicationStatus.sendOnApplicationStateChange(org.chromium.mojo_base.mojom.ApplicationState.APPLICATION_STATE_EXITING); -+ - for (Observer observer : sObservers) { - observer.onTerminate(restart); - } -diff --git a/chrome/browser/availability/availability_prober.cc b/chrome/browser/availability/availability_prober.cc -old mode 100644 -new mode 100755 ---- a/chrome/browser/availability/availability_prober.cc -+++ b/chrome/browser/availability/availability_prober.cc -@@ -206,6 +206,7 @@ bool IsInForeground(base::android::ApplicationState state) { - case base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES: - case base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES: - case base::android::APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES: -+ case base::android::APPLICATION_STATE_EXITING: - return false; - } - } -diff --git a/components/browser_ui/site_settings/android/java/res/layout/four_state_cookie_settings_preference.xml b/components/browser_ui/site_settings/android/java/res/layout/four_state_cookie_settings_preference.xml -old mode 100644 -new mode 100755 ---- a/components/browser_ui/site_settings/android/java/res/layout/four_state_cookie_settings_preference.xml -+++ b/components/browser_ui/site_settings/android/java/res/layout/four_state_cookie_settings_preference.xml -@@ -39,6 +39,13 @@ - app:primaryText="@string/website_settings_category_cookie_block_third_party_title" - app:descriptionText="@string/website_settings_category_cookie_block_third_party_addition" /> - -+ -+ - - -- -+ -+ Session-only cookies -+ -+ -+ Cookies are availables only until the browser is closed. Third-party cookies will be blocked. -+ - -+ - - Allow sites to run JavaScript (recommended) - -diff --git a/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb b/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb -old mode 100644 -new mode 100755 ---- a/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb -+++ b/components/browser_ui/strings/android/translations/browser_ui_strings_it.xtb -@@ -253,4 +253,6 @@ - Bluetooth - Accesso al microfono - Blocca se il sito mostra annunci invasivi o fuorvianti (consigliato) -+Solo cookies di sessione -+Mantieni i cookies per la sessione corrente. - -\ No newline at end of file -diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc -old mode 100644 -new mode 100755 -diff --git a/components/data_use_measurement/core/data_use_measurement.cc b/components/data_use_measurement/core/data_use_measurement.cc ---- a/components/data_use_measurement/core/data_use_measurement.cc -+++ b/components/data_use_measurement/core/data_use_measurement.cc -@@ -33,6 +33,7 @@ bool IsInForeground(base::android::ApplicationState state) { - case base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES: - return true; - case base::android::APPLICATION_STATE_UNKNOWN: -+ case base::android::APPLICATION_STATE_EXITING: - case base::android::APPLICATION_STATE_HAS_PAUSED_ACTIVITIES: - case base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES: - case base::android::APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES: -diff --git a/content/browser/scheduler/responsiveness/calculator.cc b/content/browser/scheduler/responsiveness/calculator.cc -old mode 100644 -new mode 100755 ---- a/content/browser/scheduler/responsiveness/calculator.cc -+++ b/content/browser/scheduler/responsiveness/calculator.cc -@@ -331,6 +331,7 @@ void Calculator::OnApplicationStateChanged( - is_application_visible_ = false; - break; - case base::android::APPLICATION_STATE_UNKNOWN: -+ case base::android::APPLICATION_STATE_EXITING: - break; // Keep in previous state. - } - } -diff --git a/mojo/public/cpp/base/application_state_mojom_traits.cc b/mojo/public/cpp/base/application_state_mojom_traits.cc -old mode 100644 -new mode 100755 ---- a/mojo/public/cpp/base/application_state_mojom_traits.cc -+++ b/mojo/public/cpp/base/application_state_mojom_traits.cc -@@ -22,6 +22,8 @@ mojo_base::mojom::ApplicationState EnumTraits< - return mojo_base::mojom::ApplicationState::HAS_STOPPED_ACTIVITIES; - case base::android::APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES: - return mojo_base::mojom::ApplicationState::HAS_DESTROYED_ACTIVITIES; -+ case base::android::APPLICATION_STATE_EXITING: -+ return mojo_base::mojom::ApplicationState::APPLICATION_STATE_EXITING; - } - NOTREACHED(); - return mojo_base::mojom::ApplicationState::UNKNOWN; -@@ -52,7 +54,10 @@ bool EnumTraitsSetCookieAccessDelegate( - std::make_unique(cookie_access_delegate_type, - &cookie_settings_)); -+ if(session_cleanup_cookie_store_) { -+ session_cleanup_cookie_store_->SetDefaultDeleteCookiePredicate( -+ cookie_settings_.CreateDeleteCookieOnExitPredicate()); -+ } - } - - CookieManager::~CookieManager() { -@@ -73,6 +77,16 @@ CookieManager::~CookieManager() { - cookie_store_->SetCookieAccessDelegate(nullptr); - } - -+void CookieManager::DeleteSessionCookies() -+{ -+ // anonymous profile doesn't have a session_cleanup_cookie_store -+ if (session_cleanup_cookie_store_) { -+ session_cleanup_cookie_store_->DeleteSessionCookies( -+ cookie_settings_.CreateDeleteCookieOnExitPredicate()); -+ } -+} -+ -+ - void CookieManager::AddReceiver( - mojo::PendingReceiver receiver) { - receivers_.Add(this, std::move(receiver)); -diff --git a/services/network/cookie_manager.h b/services/network/cookie_manager.h -old mode 100644 -new mode 100755 ---- a/services/network/cookie_manager.h -+++ b/services/network/cookie_manager.h -@@ -101,6 +101,9 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) CookieManager - // Causes the next call to GetCookieList to crash the process. - static void CrashOnGetCookieList(); - -+ // launch session_cleanup_cookie_store_() -+ void DeleteSessionCookies() override; -+ - private: - // State associated with a CookieChangeListener. - struct ListenerRegistration { -diff --git a/services/network/network_context.cc b/services/network/network_context.cc -old mode 100644 -new mode 100755 ---- a/services/network/network_context.cc -+++ b/services/network/network_context.cc -@@ -291,12 +291,23 @@ class NetworkContextApplicationStatusListener - } - - void Notify(base::android::ApplicationState state) override { -+ if(cookie_manager_) { -+ if(state == base::android::APPLICATION_STATE_EXITING) { -+ cookie_manager_->DeleteSessionCookies(); -+ } -+ } -+ - if (callback_) - callback_.Run(state); - } - -+ void SetCookieManager(CookieManager* cookie_manager) { -+ cookie_manager_ = cookie_manager; -+ } -+ - private: - ApplicationStateChangeCallback callback_; -+ CookieManager* cookie_manager_; - }; - #endif - -@@ -2169,6 +2180,12 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( - std::move(session_cleanup_cookie_store), - std::move(params_->cookie_manager_params)); - -+#if defined(OS_ANDROID) -+ -+ (static_cast(app_status_listener_.get()))->SetCookieManager(cookie_manager_.get()); -+ -+#endif -+ - if (cert_net_fetcher_) - cert_net_fetcher_->SetURLRequestContext(result.url_request_context.get()); - -diff --git a/services/network/public/mojom/cookie_manager.mojom b/services/network/public/mojom/cookie_manager.mojom -old mode 100644 -new mode 100755 ---- a/services/network/public/mojom/cookie_manager.mojom -+++ b/services/network/public/mojom/cookie_manager.mojom -@@ -378,4 +378,7 @@ interface CookieManager { - // the caller with a callback when settings have been updated. - SetStorageAccessGrantSettings( - array settings) => (); -+ -+ // launch session_cleanup_cookie_store_() -+ DeleteSessionCookies(); - }; -diff --git a/services/network/session_cleanup_cookie_store.cc b/services/network/session_cleanup_cookie_store.cc -old mode 100644 -new mode 100755 ---- a/services/network/session_cleanup_cookie_store.cc -+++ b/services/network/session_cleanup_cookie_store.cc -@@ -49,6 +49,11 @@ SessionCleanupCookieStore::~SessionCleanupCookieStore() { - "SessionCleanupCookieStore"); - } - -+void SessionCleanupCookieStore::SetDefaultDeleteCookiePredicate(DeleteCookiePredicate delete_cookie_predicate) -+{ -+ delete_cookie_predicate_ = delete_cookie_predicate; -+} -+ - void SessionCleanupCookieStore::DeleteSessionCookies( - DeleteCookiePredicate delete_cookie_predicate) { - using CookieOrigin = net::SQLitePersistentCookieStore::CookieOrigin; -@@ -137,6 +142,40 @@ void SessionCleanupCookieStore::OnLoad( - ++cookies_per_origin_[origin]; - } - -+#if defined(OS_ANDROID) -+ // In android delete session cookies is never called because it's in dtor(), launch now at restart -+ using CookieOrigin = net::SQLitePersistentCookieStore::CookieOrigin; -+ if (!force_keep_session_state_ && delete_cookie_predicate_) -+ { -+ std::list session_only_cookies; -+ -+ auto cookies_filtered = -+ std::remove_if( -+ cookies.begin(), -+ cookies.end(), -+ [this,&session_only_cookies](const auto& entry) { -+ bool mustRemoved = false; -+ CookieOrigin origin(entry->Domain(), entry->IsSecure()); -+ if(cookies_per_origin_cleared_[origin] == false) -+ { -+ mustRemoved = delete_cookie_predicate_.Run(origin.first, origin.second); -+ } -+ if( mustRemoved ) session_only_cookies.push_back(origin); -+ return mustRemoved; -+ }); -+ -+ cookies.erase(cookies_filtered, cookies.end()); -+ -+ // We need to remove session by origin once -+ for (const auto& cookie : cookies) { -+ CookieOrigin origin(cookie->Domain(), cookie->IsSecure()); -+ cookies_per_origin_cleared_[origin] = true; -+ } -+ -+ persistent_store_->DeleteAllInList(session_only_cookies); -+ } -+#endif -+ - std::move(loaded_callback).Run(std::move(cookies)); - } - -diff --git a/services/network/session_cleanup_cookie_store.h b/services/network/session_cleanup_cookie_store.h -old mode 100644 -new mode 100755 ---- a/services/network/session_cleanup_cookie_store.h -+++ b/services/network/session_cleanup_cookie_store.h -@@ -59,6 +59,11 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) SessionCleanupCookieStore - // |delete_cookie_predicate| returns true for. - void DeleteSessionCookies(DeleteCookiePredicate delete_cookie_predicate); - -+ // Used on android to force deletion of session cookies -+ using CookiesPerOriginClearedMap = -+ std::map; -+ void SetDefaultDeleteCookiePredicate(DeleteCookiePredicate delete_cookie_predicate); -+ - protected: - ~SessionCleanupCookieStore() override; - -@@ -80,6 +85,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) SessionCleanupCookieStore - - net::NetLogWithSource net_log_; - -+ // Used on android to force deletion of session cookies -+ DeleteCookiePredicate delete_cookie_predicate_; -+ CookiesPerOriginClearedMap cookies_per_origin_cleared_; -+ - DISALLOW_COPY_AND_ASSIGN(SessionCleanupCookieStore); - }; - --- -2.17.1 -