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

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h

Issue 2249903004: Adding a DataSavingsRecorder interface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: bengr comments Created 4 years, 4 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 | « no previous file | components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h b/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h
index ca6644ca7a004c895dc0c5d86ee3d2a1726cf1d5..4405aa624791fe7dfa4e323a678b4536bf766f00 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h
@@ -15,59 +15,65 @@
#include "base/containers/scoped_ptr_hash_map.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/threading/thread_checker.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_metrics.h"
#include "components/data_reduction_proxy/core/browser/db_data_owner.h"
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_pref_names.h"
+#include "components/data_reduction_proxy/core/common/data_savings_recorder.h"
#include "components/prefs/pref_member.h"
class PrefService;
namespace base {
class ListValue;
class Value;
}
namespace data_reduction_proxy {
class DataReductionProxyService;
class DataUsageBucket;
class DataUseGroup;
class PerSiteDataUsage;
// Data reduction proxy delayed pref service reduces the number calls to pref
// service by storing prefs in memory and writing to the given PrefService after
// |delay| amount of time. If |delay| is zero, the delayed pref service writes
// directly to the PrefService and does not store the prefs in memory. All
// prefs must be stored and read on the UI thread.
-class DataReductionProxyCompressionStats {
+class DataReductionProxyCompressionStats : public DataSavingsRecorder {
public:
typedef base::ScopedPtrHashMap<std::string, std::unique_ptr<PerSiteDataUsage>>
SiteUsageMap;
// Collects and store data usage and compression statistics. Basic data usage
// stats are stored in browser preferences. More detailed stats broken down
// by site and internet type are stored in |DataReductionProxyStore|.
//
// To store basic stats, it constructs a data reduction proxy delayed pref
// service object using |pref_service|. Writes prefs to |pref_service| after
// |delay| and stores them in |pref_map_| and |list_pref_map| between writes.
// If |delay| is zero, writes directly to the PrefService and does not store
// in the maps.
DataReductionProxyCompressionStats(DataReductionProxyService* service,
PrefService* pref_service,
const base::TimeDelta& delay);
~DataReductionProxyCompressionStats();
+ // DataSavingsRecorder implementation:
+ void UpdateDataSavings(const std::string& data_usage_host,
+ int64_t data_used,
+ int64_t original_size) override;
+
// Records detailed data usage broken down by connection type and domain. Also
// records daily data savings statistics to prefs and reports data savings
// UMA. |compressed_size| and |original_size| are measured in bytes.
void UpdateContentLengths(int64_t compressed_size,
int64_t original_size,
bool data_reduction_proxy_enabled,
DataReductionProxyRequestType request_type,
const scoped_refptr<DataUseGroup>& data_use_group,
const std::string& mime_type);
@@ -217,20 +223,30 @@ class DataReductionProxyCompressionStats {
// Called when |prefs::kDataUsageReportingEnabled| pref values changes.
// Initializes data usage statistics in memory when pref is enabled and
// persists data usage to memory when pref is disabled.
void OnDataUsageReportingPrefChanged();
// Normalizes the hostname for data usage attribution. Returns a substring
// without the protocol.
// Example: "http://www.finance.google.com" -> "www.finance.google.com"
static std::string NormalizeHostname(const std::string& host);
+ // Records detailed data usage broken down by |host|. Also records daily data
+ // savings statistics to prefs and reports data savings UMA. |data_used| and
+ // |original_size| are measured in bytes.
+ void RecordData(int64_t data_used,
+ int64_t original_size,
+ bool data_saver_enabled,
+ DataReductionProxyRequestType request_type,
+ const std::string& data_use_host,
+ const std::string& mime_type);
+
DataReductionProxyService* service_;
PrefService* pref_service_;
const base::TimeDelta delay_;
DataReductionProxyPrefMap pref_map_;
DataReductionProxyListPrefMap list_pref_map_;
BooleanPrefMember data_usage_reporting_enabled_;
// Maintains detailed data usage for current interval.
SiteUsageMap data_usage_map_;
« no previous file with comments | « no previous file | components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698