Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1994)

Unified Diff: chrome/browser/profiles/profile_impl_io_data.cc

Issue 2874973002: Flush Channel IDs when Cookies get saved to a persistent backend (Closed)
Patch Set: Initialize channel_id_service to nullptr Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/profiles/profile_impl_io_data.cc
diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc
index d6df6d1780f1c84719f366e8328b01e7c4f3b91b..b72ea5c714534d0fe180c81342cc795af6865212 100644
--- a/chrome/browser/profiles/profile_impl_io_data.cc
+++ b/chrome/browser/profiles/profile_impl_io_data.cc
@@ -488,6 +488,22 @@ void ProfileImplIOData::InitializeInternal(
main_context->set_proxy_service(proxy_service());
+ // Create a single task runner to use with the CookieStore and ChannelIDStore.
+ scoped_refptr<base::SequencedTaskRunner> cookie_background_task_runner =
+ base::CreateSequencedTaskRunnerWithTraits(
+ {base::MayBlock(), base::TaskPriority::BACKGROUND,
+ base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
+
+ // Set up server bound cert service.
+ DCHECK(!lazy_params_->channel_id_path.empty());
+ scoped_refptr<QuotaPolicyChannelIDStore> channel_id_db =
+ new QuotaPolicyChannelIDStore(lazy_params_->channel_id_path,
+ cookie_background_task_runner,
+ lazy_params_->special_storage_policy.get());
+ main_context_storage->set_channel_id_service(
+ base::MakeUnique<net::ChannelIDService>(
+ new net::DefaultChannelIDStore(channel_id_db.get())));
+
// Set up cookie store.
DCHECK(!lazy_params_->cookie_path.empty());
@@ -496,21 +512,11 @@ void ProfileImplIOData::InitializeInternal(
lazy_params_->special_storage_policy.get(),
profile_params->cookie_monster_delegate.get());
cookie_config.crypto_delegate = cookie_config::GetCookieCryptoDelegate();
+ cookie_config.channel_id_service = main_context->channel_id_service();
+ cookie_config.background_task_runner = cookie_background_task_runner;
main_context_storage->set_cookie_store(
content::CreateCookieStore(cookie_config));
- // Set up server bound cert service.
- DCHECK(!lazy_params_->channel_id_path.empty());
- scoped_refptr<QuotaPolicyChannelIDStore> channel_id_db =
- new QuotaPolicyChannelIDStore(
- lazy_params_->channel_id_path,
- base::CreateSequencedTaskRunnerWithTraits(
- {base::MayBlock(), base::TaskPriority::BACKGROUND}),
- lazy_params_->special_storage_policy.get());
- main_context_storage->set_channel_id_service(
- base::MakeUnique<net::ChannelIDService>(
- new net::DefaultChannelIDStore(channel_id_db.get())));
-
main_context->cookie_store()->SetChannelIDServiceID(
main_context->channel_id_service()->GetUniqueID());
@@ -576,6 +582,7 @@ void ProfileImplIOData::
cookie_config.crypto_delegate = cookie_config::GetCookieCryptoDelegate();
// Enable cookies for chrome-extension URLs.
cookie_config.cookieable_schemes.push_back(extensions::kExtensionScheme);
+ cookie_config.channel_id_service = extensions_context->channel_id_service();
extensions_cookie_store_ = content::CreateCookieStore(cookie_config);
extensions_context->set_cookie_store(extensions_cookie_store_.get());
}
@@ -611,28 +618,34 @@ net::URLRequestContext* ProfileImplIOData::InitializeAppRequestContext(
std::unique_ptr<net::CookieStore> cookie_store;
scoped_refptr<net::SQLiteChannelIDStore> channel_id_db;
+ // Create a single task runner to use with the CookieStore and ChannelIDStore.
+ scoped_refptr<base::SequencedTaskRunner> cookie_background_task_runner =
+ base::CreateSequencedTaskRunnerWithTraits(
+ {base::MayBlock(), base::TaskPriority::BACKGROUND,
+ base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
if (partition_descriptor.in_memory) {
- cookie_store = content::CreateCookieStore(content::CookieStoreConfig());
- } else {
+ cookie_path = base::FilePath();
+ }
+ content::CookieStoreConfig cookie_config(
+ cookie_path, content::CookieStoreConfig::EPHEMERAL_SESSION_COOKIES,
+ nullptr, nullptr);
+ if (!partition_descriptor.in_memory) {
// Use an app-specific cookie store.
DCHECK(!cookie_path.empty());
// TODO(creis): We should have a cookie delegate for notifying the cookie
// extensions API, but we need to update it to understand isolated apps
// first.
- content::CookieStoreConfig cookie_config(
- cookie_path, content::CookieStoreConfig::EPHEMERAL_SESSION_COOKIES,
- nullptr, nullptr);
cookie_config.crypto_delegate = cookie_config::GetCookieCryptoDelegate();
- cookie_store = content::CreateCookieStore(cookie_config);
channel_id_db = new net::SQLiteChannelIDStore(
- channel_id_path,
- base::CreateSequencedTaskRunnerWithTraits(
- {base::MayBlock(), base::TaskPriority::BACKGROUND}));
+ channel_id_path, cookie_background_task_runner);
}
std::unique_ptr<net::ChannelIDService> channel_id_service(
new net::ChannelIDService(
new net::DefaultChannelIDStore(channel_id_db.get())));
+ cookie_config.channel_id_service = channel_id_service.get();
+ cookie_config.background_task_runner = cookie_background_task_runner;
+ cookie_store = content::CreateCookieStore(cookie_config);
cookie_store->SetChannelIDServiceID(channel_id_service->GetUniqueID());
// Build a new HttpNetworkSession that uses the new ChannelIDService.
« no previous file with comments | « chrome/browser/net/quota_policy_channel_id_store.cc ('k') | chrome/browser/safe_browsing/safe_browsing_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698