OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ | 5 #ifndef COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ |
6 #define COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ | 6 #define COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
(...skipping 12 matching lines...) Expand all Loading... | |
23 // can make multiple URLRequests, so there is a one:many relationship between | 23 // can make multiple URLRequests, so there is a one:many relationship between |
24 // DataUseRecorders and URLRequests. Data used by each URLRequest will be | 24 // DataUseRecorders and URLRequests. Data used by each URLRequest will be |
25 // tracked by exactly one DataUseRecorder. | 25 // tracked by exactly one DataUseRecorder. |
26 class DataUseRecorder { | 26 class DataUseRecorder { |
27 public: | 27 public: |
28 DataUseRecorder(); | 28 DataUseRecorder(); |
29 ~DataUseRecorder(); | 29 ~DataUseRecorder(); |
30 | 30 |
31 // Returns the actual data used by the entity being tracked. | 31 // Returns the actual data used by the entity being tracked. |
32 DataUse& data_use() { return data_use_; } | 32 DataUse& data_use() { return data_use_; } |
33 base::hash_set<net::URLRequest*>& pending_url_requests() { | |
RyanSturm
2016/11/29 20:33:00
Can this return a const ref and be a const method?
Not at Google. Contact bengr
2016/11/30 00:21:16
Done.
| |
34 return pending_url_requests_; | |
35 } | |
36 const net::URLRequest* main_url_request() { return main_url_request_; } | |
RyanSturm
2016/11/29 20:33:00
const method
Not at Google. Contact bengr
2016/11/30 00:21:16
Done.
| |
37 | |
38 void set_main_url_request(const net::URLRequest* request) { | |
39 main_url_request_ = request; | |
40 } | |
33 | 41 |
34 // Returns whether data use is complete and no additional data can be used | 42 // Returns whether data use is complete and no additional data can be used |
35 // by the entity tracked by this recorder. For example, | 43 // by the entity tracked by this recorder. For example, |
36 bool IsDataUseComplete(); | 44 bool IsDataUseComplete(); |
37 | 45 |
46 void AddPendingURLRequest(net::URLRequest* request); | |
47 // void RemovePendingURLRequest(net::URLRequest* request); | |
RyanSturm
2016/11/29 20:33:00
This comment should be replaced by a description,
Not at Google. Contact bengr
2016/11/30 00:21:16
Done.
| |
48 void RemoveAllPendingURLRequests(); | |
49 | |
50 // Returns whether there are any pending URLRequests whose data use is tracked | |
51 // by this DataUseRecorder. | |
52 bool HasPendingURLRequest(net::URLRequest* request); | |
53 | |
54 // Merge another DataUseRecorder to this instance. | |
55 void MergeFrom(DataUseRecorder* other); | |
56 | |
57 private: | |
58 friend class DataUseAscriber; | |
59 | |
38 // Methods for tracking data use sources. These sources can initiate | 60 // Methods for tracking data use sources. These sources can initiate |
39 // URLRequests directly or indirectly. The entity whose data use is being | 61 // URLRequests directly or indirectly. The entity whose data use is being |
40 // tracked by this recorder may comprise of sub-entities each of which use | 62 // tracked by this recorder may comprise of sub-entities each of which use |
41 // network data. These helper methods help track these sub-entities. | 63 // network data. These helper methods help track these sub-entities. |
42 // A recorder will not be marked as having completed data use as long as it | 64 // A recorder will not be marked as having completed data use as long as it |
43 // has pending data sources. | 65 // has pending data sources. |
44 void AddPendingDataSource(void* source); | 66 void AddPendingDataSource(void* source); |
45 bool HasPendingDataSource(void* source); | 67 bool HasPendingDataSource(void* source); |
46 void RemovePendingDataSource(void* source); | 68 void RemovePendingDataSource(void* source); |
47 | 69 |
48 // Returns whether there are any pending URLRequests whose data use is tracked | |
49 // by this DataUseRecorder. | |
50 bool HasPendingURLRequest(const net::URLRequest* request); | |
51 | |
52 // Method to merge another DataUseRecorder to this instance. | |
53 void MergeWith(DataUseRecorder* other); | |
54 | |
55 private: | |
56 friend class DataUseAscriber; | |
57 | |
58 // Network Delegate methods: | 70 // Network Delegate methods: |
59 void OnBeforeUrlRequest(net::URLRequest* request); | 71 void OnBeforeUrlRequest(net::URLRequest* request); |
60 void OnUrlRequestDestroyed(net::URLRequest* request); | 72 void OnUrlRequestDestroyed(net::URLRequest* request); |
61 void OnNetworkBytesSent(net::URLRequest* request, int64_t bytes_sent); | 73 void OnNetworkBytesSent(net::URLRequest* request, int64_t bytes_sent); |
62 void OnNetworkBytesReceived(net::URLRequest* request, int64_t bytes_received); | 74 void OnNetworkBytesReceived(net::URLRequest* request, int64_t bytes_received); |
63 | 75 |
64 // Pending URLRequests whose data is being tracked by this DataUseRecorder. | 76 // Pending URLRequests whose data is being tracked by this DataUseRecorder. |
65 base::hash_set<const net::URLRequest*> pending_url_requests_; | 77 base::hash_set<net::URLRequest*> pending_url_requests_; |
66 | 78 |
67 // Data sources other than URLRequests, whose data is being tracked by this | 79 // Data sources other than URLRequests, whose data is being tracked by this |
68 // DataUseRecorder. | 80 // DataUseRecorder. |
69 base::hash_set<const void*> pending_data_sources_; | 81 base::hash_set<const void*> pending_data_sources_; |
70 | 82 |
83 // For page loads this is main frame URLRequest. | |
RyanSturm
2016/11/29 20:33:00
nit: change this to something like: The main frame
Not at Google. Contact bengr
2016/11/30 00:21:16
Done.
| |
84 const net::URLRequest* main_url_request_; | |
85 | |
71 // The network data use measured by this DataUseRecorder. | 86 // The network data use measured by this DataUseRecorder. |
72 DataUse data_use_; | 87 DataUse data_use_; |
73 | 88 |
74 DISALLOW_COPY_AND_ASSIGN(DataUseRecorder); | 89 DISALLOW_COPY_AND_ASSIGN(DataUseRecorder); |
75 }; | 90 }; |
76 | 91 |
77 } // namespace data_use_measurement | 92 } // namespace data_use_measurement |
78 | 93 |
79 #endif // COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ | 94 #endif // COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ |
OLD | NEW |