Index: components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle.cc |
diff --git a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle.cc b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle.cc |
index 4d728239ced8a6a02b0dd5b64e52c2020a1896e8..9650b4a71a0e60f6cf8c99f4f350940fab175328 100644 |
--- a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle.cc |
+++ b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle.cc |
@@ -102,18 +102,27 @@ SubresourceFilterSafeBrowsingActivationThrottle:: |
: NavigationThrottle(handle), |
io_task_runner_(content::BrowserThread::GetTaskRunnerForThread( |
content::BrowserThread::IO)), |
- database_client_( |
- new SubresourceFilterSafeBrowsingActivationThrottle::SBDatabaseClient( |
- std::move(database_manager), |
- AsWeakPtr(), |
- base::ThreadTaskRunnerHandle::Get()), |
- base::OnTaskRunnerDeleter(io_task_runner_)) {} |
+ database_client_(nullptr, base::OnTaskRunnerDeleter(io_task_runner_)) { |
+ // The throttle can be created without a valid database manager. If so, it |
+ // becomes a pass-through throttle and should never defer. |
+ if (database_manager) { |
+ std::unique_ptr<SBDatabaseClient, base::OnTaskRunnerDeleter> |
+ database_client( |
+ new SubresourceFilterSafeBrowsingActivationThrottle:: |
+ SBDatabaseClient(std::move(database_manager), AsWeakPtr(), |
+ base::ThreadTaskRunnerHandle::Get()), |
+ base::OnTaskRunnerDeleter(io_task_runner_)); |
+ database_client_ = std::move(database_client); |
engedy
2017/05/02 18:21:54
nit: Does .reset() work for unique_ptr's with cust
Charlie Harrison
2017/05/02 20:08:49
Nope, but you can use the move equality operator.
|
+ } |
+} |
SubresourceFilterSafeBrowsingActivationThrottle:: |
~SubresourceFilterSafeBrowsingActivationThrottle() {} |
content::NavigationThrottle::ThrottleCheckResult |
SubresourceFilterSafeBrowsingActivationThrottle::WillProcessResponse() { |
+ if (!database_client_) |
+ return content::NavigationThrottle::PROCEED; |
io_task_runner_->PostTask( |
FROM_HERE, base::Bind(&SubresourceFilterSafeBrowsingActivationThrottle:: |
SBDatabaseClient::CheckUrlOnIO, |