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

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

Issue 1127893002: Add DataReductionProxyExperimentsStats and UMA for measuring potentially non-compressed bytes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test failures Created 5 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: components/data_reduction_proxy/core/browser/data_reduction_proxy_experiments_stats.cc
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_experiments_stats.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_experiments_stats.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ddf3de1d1bcb390da8c55a2161abeb02444505b8
--- /dev/null
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_experiments_stats.cc
@@ -0,0 +1,67 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_experiments_stats.h"
+
+#include "base/logging.h"
+#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_retrieval_params.h"
+#include "components/data_reduction_proxy/core/common/data_reduction_proxy_pref_names.h"
+
+namespace data_reduction_proxy {
+
+DataReductionProxyExperimentsStats::DataReductionProxyExperimentsStats(
+ const Int64ValueSetter& value_setter)
+ : value_setter_(value_setter), initialized_(false) {
+ // Constructed on the UI thread, but should be checked on the IO thread.
+ thread_checker_.DetachFromThread();
+}
+
+DataReductionProxyExperimentsStats::~DataReductionProxyExperimentsStats() {
+}
+
+void DataReductionProxyExperimentsStats::InitializeOnUIThread(scoped_ptr<
+ DataReductionProxyConfigRetrievalParams> config_retrieval_params) {
+ DCHECK(!initialized_);
+ config_retrieval_params_ = config_retrieval_params.Pass();
+
+ // This method may be called from the UI thread, but should be checked on the
+ // IO thread.
+ thread_checker_.DetachFromThread();
+}
+
+void DataReductionProxyExperimentsStats::InitializeOnIOThread() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK(!initialized_);
+ initialized_ = true;
+ if (config_retrieval_params_) {
+ if (config_retrieval_params_->loaded_expired_config())
+ UpdateSimulatedConfig();
+ config_refresh_time_.Start(
+ FROM_HERE, config_retrieval_params_->refresh_interval(), this,
+ &DataReductionProxyExperimentsStats::UpdateSimulatedConfig);
+ }
+}
+
+void DataReductionProxyExperimentsStats::RecordBytes(
+ const base::Time& request_time,
+ DataReductionProxyRequestType request_type,
+ int64 received_content_length,
+ int64 original_content_length) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ if (config_retrieval_params_) {
+ // Only measure requests which flowed through the Data Reduction Proxy.
+ if (request_type == VIA_DATA_REDUCTION_PROXY) {
+ config_retrieval_params_->RecordStats(
+ request_time, received_content_length, original_content_length);
+ }
+ }
+}
+
+void DataReductionProxyExperimentsStats::UpdateSimulatedConfig() {
+ DCHECK(config_retrieval_params_);
+ value_setter_.Run(prefs::kSimulatedConfigRetrieveTime,
+ base::Time::Now().ToInternalValue());
+}
+
+} // namespace data_reduction_proxy

Powered by Google App Engine
This is Rietveld 408576698