Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / components / data_reduction_proxy / core / browser / data_reduction_proxy_metrics.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_METRICS_H_
6 #define COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_METRICS_H_
7
8 #include "base/time/time.h"
9
10 namespace net {
11 class URLRequest;
12 }
13
14 class PrefService;
15
16 namespace data_reduction_proxy {
17
18 class DataReductionProxyStatisticsPrefs;
19
20 enum DataReductionProxyRequestType {
21   VIA_DATA_REDUCTION_PROXY,  // A request served by the data reduction proxy.
22
23   // Below are reasons why a request is not served by the enabled data reduction
24   // proxy. Off-the-record profile data is not counted in all cases.
25   HTTPS,  // An https request.
26   SHORT_BYPASS,  // The client is bypassed by the proxy for a short time.
27   LONG_BYPASS,  // The client is bypassed by the proxy for a long time (due
28                 // to country bypass policy, for example).
29   UNKNOWN_TYPE,  // Any other reason not listed above.
30 };
31
32 // Returns DataReductionProxyRequestType for |request|.
33 DataReductionProxyRequestType GetDataReductionProxyRequestType(
34     const net::URLRequest* request);
35
36 // Returns |received_content_length| as adjusted original content length if
37 // |original_content_length| has the invalid value (-1) or |request_type|
38 // is not |VIA_DATA_REDUCTION_PROXY|.
39 int64 GetAdjustedOriginalContentLength(
40     DataReductionProxyRequestType request_type,
41     int64 original_content_length,
42     int64 received_content_length);
43
44 // This is only exposed for testing. It is normally called by
45 // UpdateContentLengthPrefs.
46 void UpdateContentLengthPrefsForDataReductionProxy(
47     int received_content_length,
48     int original_content_length,
49     bool with_data_reduction_proxy_enabled,
50     DataReductionProxyRequestType request_type,
51     base::Time now,
52     DataReductionProxyStatisticsPrefs* prefs);
53
54 // Records daily data savings statistics to prefs and reports data savings UMA.
55 void UpdateContentLengthPrefs(
56     int received_content_length,
57     int original_content_length,
58     PrefService* profile_prefs,
59     DataReductionProxyRequestType request_type,
60     DataReductionProxyStatisticsPrefs* prefs);
61
62 }  // namespace data_reduction_proxy
63
64 #endif  // COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_METRICS_H_