mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			173 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
diff --git chrome/browser/net/profile_network_context_service.cc chrome/browser/net/profile_network_context_service.cc
 | 
						|
index 99455d0c2635..d64e53232822 100644
 | 
						|
--- chrome/browser/net/profile_network_context_service.cc
 | 
						|
+++ chrome/browser/net/profile_network_context_service.cc
 | 
						|
@@ -21,6 +21,7 @@
 | 
						|
 #include "base/task/post_task.h"
 | 
						|
 #include "base/task/thread_pool.h"
 | 
						|
 #include "build/chromeos_buildflags.h"
 | 
						|
+#include "cef/libcef/features/runtime.h"
 | 
						|
 #include "chrome/browser/browser_process.h"
 | 
						|
 #include "chrome/browser/content_settings/cookie_settings_factory.h"
 | 
						|
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 | 
						|
@@ -670,7 +671,19 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal(
 | 
						|
 
 | 
						|
   // Configure on-disk storage for non-OTR profiles. OTR profiles just use
 | 
						|
   // default behavior (in memory storage, default sizes).
 | 
						|
-  if (!in_memory) {
 | 
						|
+  if (!in_memory && cef::IsAlloyRuntimeEnabled()) {
 | 
						|
+    PrefService* prefs = profile_->GetPrefs();
 | 
						|
+    // Configure the HTTP cache path and size.
 | 
						|
+    const base::FilePath& base_cache_path =
 | 
						|
+        prefs->GetFilePath(prefs::kDiskCacheDir);
 | 
						|
+    DCHECK(!base_cache_path.empty());
 | 
						|
+    network_context_params->http_cache_path =
 | 
						|
+        base_cache_path.Append(chrome::kCacheDirname);
 | 
						|
+    network_context_params->http_cache_max_size =
 | 
						|
+        prefs->GetInteger(prefs::kDiskCacheSize);
 | 
						|
+  }
 | 
						|
+
 | 
						|
+  if (!in_memory && !cef::IsAlloyRuntimeEnabled()) {
 | 
						|
     PrefService* local_state = g_browser_process->local_state();
 | 
						|
     // Configure the HTTP cache path and size.
 | 
						|
     base::FilePath base_cache_path;
 | 
						|
@@ -683,7 +696,9 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal(
 | 
						|
         base_cache_path.Append(chrome::kCacheDirname);
 | 
						|
     network_context_params->http_cache_max_size =
 | 
						|
         local_state->GetInteger(prefs::kDiskCacheSize);
 | 
						|
+  }
 | 
						|
 
 | 
						|
+  if (!in_memory) {
 | 
						|
     // Currently this just contains HttpServerProperties, but that will likely
 | 
						|
     // change.
 | 
						|
     network_context_params->http_server_properties_path =
 | 
						|
diff --git net/cookies/cookie_monster.cc net/cookies/cookie_monster.cc
 | 
						|
index 4183288fd5da..2ecb3ed351bb 100644
 | 
						|
--- net/cookies/cookie_monster.cc
 | 
						|
+++ net/cookies/cookie_monster.cc
 | 
						|
@@ -515,6 +515,25 @@ void CookieMonster::SetCookieableSchemes(
 | 
						|
   MaybeRunCookieCallback(std::move(callback), true);
 | 
						|
 }
 | 
						|
 
 | 
						|
+void CookieMonster::AddCookieableSchemes(
 | 
						|
+    const std::vector<std::string>& schemes,
 | 
						|
+    SetCookieableSchemesCallback callback) {
 | 
						|
+  DCHECK(thread_checker_.CalledOnValidThread());
 | 
						|
+
 | 
						|
+  // Calls to this method will have no effect if made after a WebView or
 | 
						|
+  // CookieManager instance has been created.
 | 
						|
+  if (initialized_) {
 | 
						|
+    MaybeRunCookieCallback(std::move(callback), false);
 | 
						|
+    return;
 | 
						|
+  }
 | 
						|
+
 | 
						|
+  if (!schemes.empty()) {
 | 
						|
+    cookieable_schemes_.insert(cookieable_schemes_.begin(), schemes.begin(),
 | 
						|
+                               schemes.end());
 | 
						|
+  }
 | 
						|
+  MaybeRunCookieCallback(std::move(callback), true);
 | 
						|
+}
 | 
						|
+
 | 
						|
 // This function must be called before the CookieMonster is used.
 | 
						|
 void CookieMonster::SetPersistSessionCookies(bool persist_session_cookies) {
 | 
						|
   DCHECK(thread_checker_.CalledOnValidThread());
 | 
						|
diff --git net/cookies/cookie_monster.h net/cookies/cookie_monster.h
 | 
						|
index ef391b3cb94f..8962106d0868 100644
 | 
						|
--- net/cookies/cookie_monster.h
 | 
						|
+++ net/cookies/cookie_monster.h
 | 
						|
@@ -182,6 +182,8 @@ class NET_EXPORT CookieMonster : public CookieStore {
 | 
						|
   CookieChangeDispatcher& GetChangeDispatcher() override;
 | 
						|
   void SetCookieableSchemes(const std::vector<std::string>& schemes,
 | 
						|
                             SetCookieableSchemesCallback callback) override;
 | 
						|
+  void AddCookieableSchemes(const std::vector<std::string>& schemes,
 | 
						|
+                            SetCookieableSchemesCallback callback) override;
 | 
						|
 
 | 
						|
   // Enables writing session cookies into the cookie database. If this this
 | 
						|
   // method is called, it must be called before first use of the instance
 | 
						|
diff --git net/cookies/cookie_store.h net/cookies/cookie_store.h
 | 
						|
index afa99e255bdf..5e8201696c61 100644
 | 
						|
--- net/cookies/cookie_store.h
 | 
						|
+++ net/cookies/cookie_store.h
 | 
						|
@@ -156,6 +156,11 @@ class NET_EXPORT CookieStore {
 | 
						|
   // Transfer ownership of a CookieAccessDelegate.
 | 
						|
   void SetCookieAccessDelegate(std::unique_ptr<CookieAccessDelegate> delegate);
 | 
						|
 
 | 
						|
+  // Adds to the list of cookieable schemes. Does nothing if called after first
 | 
						|
+  // use of the instance (i.e. after the instance initialization process).
 | 
						|
+  virtual void AddCookieableSchemes(const std::vector<std::string>& schemes,
 | 
						|
+                                    SetCookieableSchemesCallback callback) = 0;
 | 
						|
+
 | 
						|
   // Reports the estimate of dynamically allocated memory in bytes.
 | 
						|
   virtual void DumpMemoryStats(base::trace_event::ProcessMemoryDump* pmd,
 | 
						|
                                const std::string& parent_absolute_name) const;
 | 
						|
diff --git services/network/cookie_manager.cc services/network/cookie_manager.cc
 | 
						|
index a39730637205..8a1bacea8d70 100644
 | 
						|
--- services/network/cookie_manager.cc
 | 
						|
+++ services/network/cookie_manager.cc
 | 
						|
@@ -249,14 +249,9 @@ void CookieManager::FlushCookieStore(FlushCookieStoreCallback callback) {
 | 
						|
 void CookieManager::AllowFileSchemeCookies(
 | 
						|
     bool allow,
 | 
						|
     AllowFileSchemeCookiesCallback callback) {
 | 
						|
-  std::vector<std::string> cookieable_schemes(
 | 
						|
-      net::CookieMonster::kDefaultCookieableSchemes,
 | 
						|
-      net::CookieMonster::kDefaultCookieableSchemes +
 | 
						|
-          net::CookieMonster::kDefaultCookieableSchemesCount);
 | 
						|
-  if (allow) {
 | 
						|
-    cookieable_schemes.push_back(url::kFileScheme);
 | 
						|
-  }
 | 
						|
-  cookie_store_->SetCookieableSchemes(cookieable_schemes, std::move(callback));
 | 
						|
+  if (!allow)
 | 
						|
+    return;
 | 
						|
+  cookie_store_->AddCookieableSchemes({url::kFileScheme}, std::move(callback));
 | 
						|
 }
 | 
						|
 
 | 
						|
 void CookieManager::SetForceKeepSessionState() {
 | 
						|
diff --git services/network/network_context.cc services/network/network_context.cc
 | 
						|
index e606e81f9945..89c29adfb3a0 100644
 | 
						|
--- services/network/network_context.cc
 | 
						|
+++ services/network/network_context.cc
 | 
						|
@@ -2003,16 +2003,27 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext(
 | 
						|
         network_service_->network_quality_estimator());
 | 
						|
   }
 | 
						|
 
 | 
						|
+  std::unique_ptr<net::CookieMonster> cookie_store;
 | 
						|
   if (session_cleanup_cookie_store) {
 | 
						|
-    std::unique_ptr<net::CookieMonster> cookie_store =
 | 
						|
+    cookie_store =
 | 
						|
         std::make_unique<net::CookieMonster>(session_cleanup_cookie_store.get(),
 | 
						|
                                              net_log);
 | 
						|
     if (params_->persist_session_cookies)
 | 
						|
       cookie_store->SetPersistSessionCookies(true);
 | 
						|
 
 | 
						|
-    builder.SetCookieStore(std::move(cookie_store));
 | 
						|
+  } else {
 | 
						|
+    cookie_store =
 | 
						|
+        std::make_unique<net::CookieMonster>(nullptr /* store */, net_log);
 | 
						|
+  }
 | 
						|
+
 | 
						|
+  if (params_->cookieable_schemes.has_value()) {
 | 
						|
+    cookie_store->SetCookieableSchemes(
 | 
						|
+        *params_->cookieable_schemes,
 | 
						|
+        net::CookieStore::SetCookieableSchemesCallback());
 | 
						|
   }
 | 
						|
 
 | 
						|
+  builder.SetCookieStore(std::move(cookie_store));
 | 
						|
+
 | 
						|
   if (base::FeatureList::IsEnabled(features::kTrustTokens)) {
 | 
						|
     trust_token_store_ = std::make_unique<PendingTrustTokenStore>();
 | 
						|
 
 | 
						|
diff --git services/network/public/mojom/network_context.mojom services/network/public/mojom/network_context.mojom
 | 
						|
index e24ec4cb3c49..b8d3aec99d8a 100644
 | 
						|
--- services/network/public/mojom/network_context.mojom
 | 
						|
+++ services/network/public/mojom/network_context.mojom
 | 
						|
@@ -252,6 +252,9 @@ struct NetworkContextParams {
 | 
						|
   // cookies. Otherwise it should be false.
 | 
						|
   bool persist_session_cookies = false;
 | 
						|
 
 | 
						|
+  // Schemes that will be passed to CookieMonster::SetCookieableSchemes.
 | 
						|
+  array<string>? cookieable_schemes;
 | 
						|
+
 | 
						|
   // True if an HTTP cache should be used.
 | 
						|
   bool http_cache_enabled = true;
 | 
						|
   // Maximum size of the HTTP cache. 0 means to use the default size.
 |