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

Unified Diff: chrome/browser/safe_browsing/safe_browsing_service.cc

Issue 1814543002: Fix callsites to URLRequestContext::CopyFrom (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase; s/scoped_ptr/std::unique_ptr/ Created 4 years, 8 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
« no previous file with comments | « chrome/browser/profiles/profile_io_data.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/safe_browsing/safe_browsing_service.cc
diff --git a/chrome/browser/safe_browsing/safe_browsing_service.cc b/chrome/browser/safe_browsing/safe_browsing_service.cc
index a9e5bfc1d89e8bc9d8c8bba0c3a78489fe6ea86b..4cc6b1a60e9284863d66a06c5cfdb25e7a6fa7b3 100644
--- a/chrome/browser/safe_browsing/safe_browsing_service.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_service.cc
@@ -20,6 +20,7 @@
#include "base/strings/string_util.h"
#include "base/threading/thread.h"
#include "base/threading/thread_restrictions.h"
+#include "base/threading/worker_pool.h"
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
@@ -46,6 +47,11 @@
#include "google_apis/google_api_keys.h"
#include "net/cookies/cookie_store.h"
#include "net/extras/sqlite/cookie_crypto_delegate.h"
+#include "net/extras/sqlite/sqlite_channel_id_store.h"
+#include "net/http/http_network_layer.h"
+#include "net/http/http_transaction_factory.h"
+#include "net/ssl/channel_id_service.h"
+#include "net/ssl/default_channel_id_store.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_getter.h"
@@ -80,6 +86,8 @@ namespace {
// Filename suffix for the cookie database.
const base::FilePath::CharType kCookiesFile[] = FILE_PATH_LITERAL(" Cookies");
+const base::FilePath::CharType kChannelIDFile[] =
+ FILE_PATH_LITERAL(" Channel IDs");
// The default URL prefix where browser fetches chunk updates, hashes,
// and reports safe browsing hits and malware details.
@@ -105,6 +113,11 @@ base::FilePath CookieFilePath() {
SafeBrowsingService::GetBaseFilename().value() + kCookiesFile);
}
+base::FilePath ChannelIDFilePath() {
+ return base::FilePath(SafeBrowsingService::GetBaseFilename().value() +
+ kChannelIDFile);
+}
+
} // namespace
class SafeBrowsingURLRequestContextGetter
@@ -135,6 +148,10 @@ class SafeBrowsingURLRequestContextGetter
std::unique_ptr<net::URLRequestContext> safe_browsing_request_context_;
scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_;
+
+ std::unique_ptr<net::ChannelIDService> channel_id_service_;
+ std::unique_ptr<net::HttpNetworkSession> http_network_session_;
+ std::unique_ptr<net::HttpTransactionFactory> http_transaction_factory_;
};
SafeBrowsingURLRequestContextGetter::SafeBrowsingURLRequestContextGetter(
@@ -166,17 +183,36 @@ SafeBrowsingURLRequestContextGetter::GetURLRequestContext() {
nullptr));
safe_browsing_request_context_->set_cookie_store(
safe_browsing_cookie_store_.get());
- // The above cookie store will persist cookies, but the ChannelIDService in
- // the system request context is ephemeral, which could lead to losing the
- // keys that cookies are bound to. Since this is only used for safe
- // browsing, any cookie bindings don't matter.
- //
- // For crbug.com/548423, the channel ID store and cookie store used for a
- // request are being tracked to see if an ephemeral channel ID store is used
- // with a persistent cookie store (which apart from here would be a bug).
- // The following line tells that tracking to ignore the mismatch from this
- // URLRequestContext.
- safe_browsing_request_context_->set_has_known_mismatched_cookie_store();
+
+ // Set up the ChannelIDService
+ scoped_refptr<net::SQLiteChannelIDStore> channel_id_db =
+ new net::SQLiteChannelIDStore(
+ ChannelIDFilePath(),
+ BrowserThread::GetBlockingPool()->GetSequencedTaskRunner(
+ base::SequencedWorkerPool::GetSequenceToken()));
+ channel_id_service_.reset(new net::ChannelIDService(
+ new net::DefaultChannelIDStore(channel_id_db.get()),
+ base::WorkerPool::GetTaskRunner(true)));
+ safe_browsing_request_context_->set_channel_id_service(
+ channel_id_service_.get());
+
+ // Rebuild the HttpNetworkSession and the HttpTransactionFactory to use the
+ // new ChannelIDService.
+ if (safe_browsing_request_context_->http_transaction_factory() &&
+ safe_browsing_request_context_->http_transaction_factory()
+ ->GetSession()) {
+ net::HttpNetworkSession::Params safe_browsing_params =
+ safe_browsing_request_context_->http_transaction_factory()
+ ->GetSession()
+ ->params();
+ safe_browsing_params.channel_id_service = channel_id_service_.get();
+ http_network_session_.reset(
+ new net::HttpNetworkSession(safe_browsing_params));
+ http_transaction_factory_.reset(
+ new net::HttpNetworkLayer(http_network_session_.get()));
+ safe_browsing_request_context_->set_http_transaction_factory(
+ http_transaction_factory_.get());
+ }
}
return safe_browsing_request_context_.get();
« no previous file with comments | « chrome/browser/profiles/profile_io_data.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698