[M120 Migration][VD] Save CookieSettings at NetworkContext. 04/309504/3
authorjiangyuwei <yuwei.jiang@samsung.com>
Thu, 11 Apr 2024 12:22:47 +0000 (20:22 +0800)
committerBot Blink <blinkbot@samsung.com>
Fri, 12 Apr 2024 18:53:05 +0000 (18:53 +0000)
Now CookieSettings is saved in CookieManager, and it will need to be
used in RestrictedCookieManager, and it may be delete before
RestrictedCookieManager. This patch makes CookieSettings be saved at
NetworkContext instead of at CookieManager to prevent a crash in
RestrictedCookieManager.

Reference:
 - https://review.tizen.org/gerrit/302584/

Change-Id: If3fcb2002634aaf901ad8d65b8def001a487ea64
Signed-off-by: jiangyuwei <yuwei.jiang@samsung.com>
services/network/cookie_manager.cc
services/network/cookie_manager.h
services/network/network_context.cc
services/network/network_context.h

index bcc62a6..64d491d 100644 (file)
@@ -54,9 +54,15 @@ void CookieManager::ListenerRegistration::DispatchCookieStoreChange(
 CookieManager::CookieManager(
     net::URLRequestContext* url_request_context,
     FirstPartySetsAccessDelegate* const first_party_sets_access_delegate,
+#if BUILDFLAG(IS_TIZEN_TV)
+    CookieSettings& cookie_settings,
+#endif
     scoped_refptr<SessionCleanupCookieStore> session_cleanup_cookie_store,
     mojom::CookieManagerParamsPtr params)
     : cookie_store_(url_request_context->cookie_store()),
+#if BUILDFLAG(IS_TIZEN_TV)
+      cookie_settings_(cookie_settings),
+#endif
       session_cleanup_cookie_store_(std::move(session_cleanup_cookie_store)) {
   mojom::CookieAccessDelegateType cookie_access_delegate_type =
       mojom::CookieAccessDelegateType::USE_CONTENT_SETTINGS;
index 7dfc49e..a68f9f8 100644 (file)
@@ -46,6 +46,9 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) CookieManager
   CookieManager(
       net::URLRequestContext* url_request_context,
       FirstPartySetsAccessDelegate* const first_party_sets_access_delegate,
+#if BUILDFLAG(IS_TIZEN_TV)
+      CookieSettings& cookie_settings,
+#endif
       scoped_refptr<SessionCleanupCookieStore> session_cleanup_cookie_store,
       mojom::CookieManagerParamsPtr params);
 
@@ -152,10 +155,13 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) CookieManager
   scoped_refptr<SessionCleanupCookieStore> session_cleanup_cookie_store_;
   mojo::ReceiverSet<mojom::CookieManager> receivers_;
   std::vector<std::unique_ptr<ListenerRegistration>> listener_registrations_;
+#if BUILDFLAG(IS_TIZEN_TV)
+  CookieSettings& cookie_settings_;
+#else
   // Note: RestrictedCookieManager and CookieAccessDelegate store pointers to
   // |cookie_settings_|.
   CookieSettings cookie_settings_;
-
+#endif
   SettingsChangeCallback settings_will_change_callback_;
 
   base::WeakPtrFactory<CookieManager> weak_factory_{this};
index 28215a0..3ebaf97 100644 (file)
@@ -590,6 +590,9 @@ NetworkContext::NetworkContext(
 
   cookie_manager_ = std::make_unique<CookieManager>(
       url_request_context_, &first_party_sets_access_delegate_,
+#if BUILDFLAG(IS_TIZEN_TV)
+      cookie_settings_,
+#endif
       std::move(session_cleanup_cookie_store),
       std::move(params_->cookie_manager_params));
 
@@ -673,6 +676,9 @@ NetworkContext::NetworkContext(
       cookie_manager_(std::make_unique<CookieManager>(
           url_request_context,
           nullptr,
+#if BUILDFLAG(IS_TIZEN_TV)
+          cookie_settings_,
+#endif
           /*first_party_sets_access_delegate=*/nullptr,
           nullptr)),
       socket_factory_(
@@ -895,7 +901,14 @@ void NetworkContext::OnComputedFirstPartySetMetadata(
     mojo::PendingRemote<mojom::CookieAccessObserver> cookie_observer,
     net::FirstPartySetMetadata first_party_set_metadata) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-
+#if BUILDFLAG(IS_TIZEN_TV)
+  std::unique_ptr<RestrictedCookieManager> ptr =
+      std::make_unique<RestrictedCookieManager>(
+          role, url_request_context_->cookie_store(), cookie_settings_, origin,
+          isolation_info, cookie_setting_overrides, std::move(cookie_observer),
+          std::move(first_party_set_metadata),
+          network_service_->metrics_updater());
+#else
   std::unique_ptr<RestrictedCookieManager> ptr =
       std::make_unique<RestrictedCookieManager>(
           role, url_request_context_->cookie_store(),
@@ -903,6 +916,7 @@ void NetworkContext::OnComputedFirstPartySetMetadata(
           cookie_setting_overrides, std::move(cookie_observer),
           std::move(first_party_set_metadata),
           network_service_->metrics_updater());
+#endif
 
   auto callback = base::BindOnce(&NetworkContext::OnRCMDisconnect,
                                  base::Unretained(this), ptr.get());
@@ -3146,11 +3160,13 @@ void NetworkContext::CreateCookieManager(
   cookie_store->SetCookieStore(session_cleanup_cookie_store.get());
   if (params->persist_session_cookies)
     cookie_store->SetPersistSessionCookies(true);
-  cookie_manager_ =
-      std::make_unique<CookieManager>(url_request_context_,
-                                      &first_party_sets_access_delegate_,
-                                      std::move(session_cleanup_cookie_store),
-                                      std::move(params->cookie_manager_params));
+  cookie_manager_ = std::make_unique<CookieManager>(
+      url_request_context_, &first_party_sets_access_delegate_,
+#if BUILDFLAG(IS_TIZEN_TV)
+      cookie_settings_,
+#endif
+      std::move(session_cleanup_cookie_store),
+      std::move(params->cookie_manager_params));
 }
 
 void NetworkContext::SetSharedDictionaryCacheMaxSize(uint64_t cache_max_size) {
index fb76385..1b03f8b 100644 (file)
@@ -83,7 +83,9 @@
 #if BUILDFLAG(IS_CT_SUPPORTED)
 #include "services/network/public/mojom/ct_log_info.mojom-forward.h"
 #endif
-
+#if BUILDFLAG(IS_TIZEN_TV)
+#include "services/network/cookie_settings.h"
+#endif
 namespace base {
 class UnguessableToken;
 }  // namespace base
@@ -816,6 +818,9 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
   std::vector<std::unique_ptr<base::android::ApplicationStatusListener>>
       app_status_listeners_;
 #endif
+#if BUILDFLAG(IS_TIZEN_TV)
+  CookieSettings cookie_settings_;
+#endif
 
   mojo::Receiver<mojom::NetworkContext> receiver_;