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

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.cc

Issue 1054363002: Update DataReductionProxyNetworkDelegate/BypassStats to post tasks safely. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: bengr CR comments Created 5 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
Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.cc
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.cc
index bfbe85ead560240673b5665aa39794db11702b08..3c9ebefd54ba877b608680514af818ae412ae3d6 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.cc
@@ -64,10 +64,15 @@ DataReductionProxyIOData::DataReductionProxyIOData(
configurator_.get(), event_store_.get()));
}
+ // It is safe to use base::Unretained here, since it gets executed
+ // synchronously on the IO thread, and |this| outlives the caller (since the
+ // caller is owned by |this|.
+ bypass_stats_.reset(new DataReductionProxyBypassStats(
+ config_.get(), base::Bind(&DataReductionProxyIOData::SetUnreachable,
+ base::Unretained(this))));
request_options_.reset(new DataReductionProxyRequestOptions(
client_, config_.get(), io_task_runner_));
request_options_->Init();
-
if (use_config_client) {
config_client_.reset(new DataReductionProxyConfigServiceClient(
params.Pass(), GetBackoffPolicy(), request_options_.get(),
@@ -127,20 +132,30 @@ DataReductionProxyIOData::CreateNetworkDelegate(
new DataReductionProxyNetworkDelegate(
wrapped_network_delegate.Pass(), config_.get(),
request_options_.get(), configurator_.get()));
- if (track_proxy_bypass_statistics && !bypass_stats_) {
- bypass_stats_.reset(new DataReductionProxyBypassStats(
- config_.get(), base::Bind(&DataReductionProxyIOData::SetUnreachable,
- base::Unretained(this)), ui_task_runner_));
- network_delegate->InitIODataAndUMA(ui_task_runner_, this, &enabled_,
- bypass_stats_.get());
- }
+ if (track_proxy_bypass_statistics)
+ network_delegate->InitIODataAndUMA(this, &enabled_, bypass_stats_.get());
return network_delegate.Pass();
}
+void DataReductionProxyIOData::UpdateContentLengths(
+ int received_content_length,
+ int original_content_length,
+ bool data_reduction_proxy_enabled,
+ DataReductionProxyRequestType request_type) {
+ DCHECK(io_task_runner_->BelongsToCurrentThread());
+ ui_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&DataReductionProxyService::UpdateContentLengths,
+ service_, received_content_length, original_content_length,
+ data_reduction_proxy_enabled, request_type));
+}
+
void DataReductionProxyIOData::SetUnreachable(bool unreachable) {
- DCHECK(ui_task_runner_->BelongsToCurrentThread());
- if (service_)
- service_->settings()->SetUnreachable(unreachable);
+ DCHECK(io_task_runner_->BelongsToCurrentThread());
+ ui_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&DataReductionProxyService::SetUnreachable,
+ service_, unreachable));
}
} // namespace data_reduction_proxy

Powered by Google App Engine
This is Rietveld 408576698