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 50a303cf7849faa3f32a8787cafbe931c7e41573..5a0e52fa706c9d8d4131e911bfc84a32e52a0a06 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 |
@@ -14,6 +14,7 @@ |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service_client.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_delegate.h" |
+#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_experiments_stats.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_interceptor.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_mutable_config_values.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_network_delegate.h" |
@@ -142,6 +143,11 @@ DataReductionProxyIOData::DataReductionProxyIOData( |
proxy_delegate_.reset( |
new DataReductionProxyDelegate(request_options_.get(), config_.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|. |
+ experiments_stats_.reset(new DataReductionProxyExperimentsStats(base::Bind( |
+ &DataReductionProxyIOData::SetInt64Pref, base::Unretained(this)))); |
} |
DataReductionProxyIOData::DataReductionProxyIOData() |
@@ -177,6 +183,7 @@ void DataReductionProxyIOData::InitializeOnIOThread() { |
config_->InitializeOnIOThread(basic_url_request_context_getter_.get()); |
if (config_client_.get()) |
config_client_->InitializeOnIOThread(url_request_context_getter_); |
+ experiments_stats_->InitializeOnIOThread(); |
ui_task_runner_->PostTask( |
FROM_HERE, |
base::Bind(&DataReductionProxyService::SetIOData, |
@@ -209,7 +216,8 @@ DataReductionProxyIOData::CreateNetworkDelegate( |
scoped_ptr<DataReductionProxyNetworkDelegate> network_delegate( |
new DataReductionProxyNetworkDelegate( |
wrapped_network_delegate.Pass(), config_.get(), |
- request_options_.get(), configurator_.get())); |
+ request_options_.get(), configurator_.get(), |
+ experiments_stats_.get())); |
if (track_proxy_bypass_statistics) |
network_delegate->InitIODataAndUMA(this, bypass_stats_.get()); |
return network_delegate.Pass(); |
@@ -279,4 +287,12 @@ void DataReductionProxyIOData::SetUnreachable(bool unreachable) { |
service_, unreachable)); |
} |
+void DataReductionProxyIOData::SetInt64Pref(const std::string& pref_path, |
+ int64 value) { |
+ DCHECK(io_task_runner_->BelongsToCurrentThread()); |
+ ui_task_runner_->PostTask( |
+ FROM_HERE, base::Bind(&DataReductionProxyService::SetInt64Pref, service_, |
+ pref_path, value)); |
+} |
+ |
} // namespace data_reduction_proxy |