std::move(callback).Run();
}
+void CookieMonster::SetCookieStore(scoped_refptr<PersistentCookieStore> store) {
+ store_ = std::move(store);
+}
+
CookieMonster::CookieSentToSamePort
CookieMonster::IsCookieSentToSamePortThatSetIt(
const GURL& destination,
// TODO(crbug.com/1296161): Delete this when the partitioned cookies Origin
// Trial ends.
void ConvertPartitionedCookiesToUnpartitioned(const GURL& url) override;
+ void SetCookieStore(scoped_refptr<PersistentCookieStore> store);
private:
// For garbage collection constants.
std::move(url_loader_factory_params));
}
+void NetworkContext::CreateCookieManager(
+ mojom::NetworkContextParamsPtr params) {
+ base::FilePath cookie_path;
+ if (!GetFullDataFilePath(
+ params_->file_paths,
+ &network::mojom::NetworkContextFilePaths::cookie_database_name,
+ cookie_path))
+ return;
+ scoped_refptr<base::SequencedTaskRunner> client_task_runner =
+ base::ThreadTaskRunnerHandle::Get();
+ scoped_refptr<base::SequencedTaskRunner> background_task_runner =
+ base::ThreadPool::CreateSequencedTaskRunner(
+ {base::MayBlock(), net::GetCookieStoreBackgroundSequencePriority(),
+ base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
+
+ net::CookieCryptoDelegate* crypto_delegate = nullptr;
+ if (params->enable_encrypted_cookies) {
+ crypto_delegate = cookie_config::GetCookieCryptoDelegate();
+ }
+ scoped_refptr<net::SQLitePersistentCookieStore> sqlite_store(
+ new net::SQLitePersistentCookieStore(
+ cookie_path, client_task_runner, background_task_runner,
+ params->restore_old_session_cookies, crypto_delegate));
+
+ scoped_refptr<SessionCleanupCookieStore> session_cleanup_cookie_store =
+ base::MakeRefCounted<SessionCleanupCookieStore>(sqlite_store);
+
+ net::CookieMonster* cookie_store =
+ static_cast<net::CookieMonster*>(url_request_context_->cookie_store());
+ 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));
+}
} // namespace network
return &cache_transparency_settings_;
}
+ void CreateCookieManager(mojom::NetworkContextParamsPtr params) override;
+
private:
URLRequestContextOwner MakeURLRequestContext(
mojo::PendingRemote<mojom::URLLoaderFactory>
SchemefulSite? top_frame_site,
array<SchemefulSite> party_context)
=> (FirstPartySetMetadata metadata);
+
+ // Create a new cookie manager with new parameters.
+ CreateCookieManager(NetworkContextParams params);
};
#include "content/browser/storage_partition_impl.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/network_service_instance.h"
#include "eweb_context.h"
#include "net/base/net_errors.h"
#include "net/cookies/canonical_cookie.h"
#include "net/cookies/parsed_cookie.h"
#include "net/cookies/static_cookie_policy.h"
#include "net/url_request/url_request_context.h"
+#include "services/cert_verifier/public/mojom/cert_verifier_service_factory.mojom.h"
#include "net/url_request/url_request_context_getter.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
#include "url/gurl.h"
Ewk_Cookie_Persistent_Storage file_storage_type) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- scoped_refptr<content::URLRequestContextGetterEfl> context_getter = GetContextGetter();
- if (context_getter.get()) {
- content::GetIOThreadTaskRunner({})->PostTask(FROM_HERE,
- base::BindOnce(SetStoragePathOnIOThread, context_getter, path,
- persist_session_cookies, file_storage_type));
- }
+ // In incognito mode, if setting storage path explicitly, the cookies will
+ // be stored, check incognito mode before setting.
+ if (!eweb_context_ || !eweb_context_->browser_context() ||
+ eweb_context_->browser_context()->IsOffTheRecord())
+ return;
+
+ if (cookie_store_path_ == path)
+ return;
+ cookie_store_path_ = path;
+
+ base::FilePath storage_path(path);
+ network::mojom::NetworkContextParamsPtr context_params =
+ network::mojom::NetworkContextParams::New();
+ base::FilePath cookie_path =
+ storage_path.Append(FILE_PATH_LITERAL("Cookies"));
+ context_params->persist_session_cookies = persist_session_cookies;
+ context_params->enable_encrypted_cookies = false;
+ context_params->cookie_manager_params =
+ network::mojom::CookieManagerParams::New();
+ context_params->cookie_manager_params->allow_file_scheme_cookies =
+ is_file_scheme_cookies_allowed_;
+ context_params->cert_verifier_params = content::GetCertVerifierParams(
+ cert_verifier::mojom::CertVerifierCreationParams::New());
+ context_params->cookie_manager_params->block_third_party_cookies =
+ ShouldBlockThirdPartyCookies();
+ eweb_context_->browser_context()->GetDefaultStoragePartition()
+ ->GetNetworkContext()
+ ->CreateCookieManager(std::move(context_params));
}
void CookieManager::GetAcceptPolicyAsync(Ewk_Cookie_Manager_Policy_Async_Get_Cb callback, void *data) {
EWebContext* eweb_context_;
scoped_refptr<content::URLRequestContextGetterEfl> request_context_getter_;
+ std::string cookie_store_path_;
//cookie policy information
base::Lock lock_;
Ewk_Cookie_Accept_Policy cookie_policy_;