Chromium Code Reviews| Index: components/data_use_measurement/core/data_use_recorder.h |
| diff --git a/components/data_use_measurement/core/data_use_recorder.h b/components/data_use_measurement/core/data_use_recorder.h |
| index 8bd1514d6a040d34bb002829113f0a9e7c72b0c4..8e48677a8384a0be24fcab8bb006715cc32006a4 100644 |
| --- a/components/data_use_measurement/core/data_use_recorder.h |
| +++ b/components/data_use_measurement/core/data_use_recorder.h |
| @@ -6,8 +6,8 @@ |
| #define COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ |
| #include <stdint.h> |
| +#include <map> |
|
tbansal1
2017/06/23 22:11:21
nit: line break before #include <map>
Raj
2017/06/26 21:40:22
Done
|
| -#include "base/containers/hash_tables.h" |
| #include "base/macros.h" |
| #include "base/supports_user_data.h" |
| #include "components/data_use_measurement/core/data_use.h" |
| @@ -25,12 +25,24 @@ namespace data_use_measurement { |
| // tracked by exactly one DataUseRecorder. |
| class DataUseRecorder { |
| public: |
| + // Stores network data used by a URLRequest. |
| + struct URLRequestDataUse { |
| + URLRequestDataUse() : bytes_sent(0), bytes_received(0) {} |
| + |
|
rajendrant
2017/06/20 21:34:00
base::TimeTicks start_time will be added in a late
tbansal1
2017/06/26 21:44:28
Acknowledged.
|
| + int64_t bytes_sent; |
| + int64_t bytes_received; |
|
tbansal1
2017/06/23 22:11:22
For consistency, it would be better to have bytes_
Raj
2017/06/26 21:40:22
Done
|
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(URLRequestDataUse); |
| + }; |
| + |
| explicit DataUseRecorder(DataUse::TrafficType traffic_type); |
| virtual ~DataUseRecorder(); |
| // Returns the actual data used by the entity being tracked. |
| DataUse& data_use() { return data_use_; } |
| - const base::hash_set<net::URLRequest*>& pending_url_requests() const { |
| + const std::map<net::URLRequest*, URLRequestDataUse>& pending_url_requests() |
| + const { |
| return pending_url_requests_; |
| } |
| const net::URLRequest* main_url_request() const { return main_url_request_; } |
| @@ -57,6 +69,10 @@ class DataUseRecorder { |
| // this recorder. |
| void AddPendingURLRequest(net::URLRequest* request); |
| + // Moves pending |request| from |this| recorder to |other| recorder, and |
| + // updates the data use for the recorders. |
| + void MovePendingURLRequest(DataUseRecorder* other, net::URLRequest* request); |
| + |
| // Clears the list of pending URLRequests that ascribe data use to this |
| // recorder. |
| void RemoveAllPendingURLRequests(); |
| @@ -71,12 +87,13 @@ class DataUseRecorder { |
| void OnNetworkBytesReceived(net::URLRequest* request, int64_t bytes_received); |
| private: |
| - // Pending URLRequests whose data is being tracked by this DataUseRecorder. |
| - base::hash_set<net::URLRequest*> pending_url_requests_; |
| + // Updates the network data use for the url request. |
| + void UpdateNetworkByteCounts(net::URLRequest* request, |
| + int64_t bytes_received, |
| + int64_t bytes_sent); |
| - // Data sources other than URLRequests, whose data is being tracked by this |
| - // DataUseRecorder. |
| - base::hash_set<const void*> pending_data_sources_; |
| + // Pending URLRequests whose data is being tracked by this DataUseRecorder. |
| + std::map<net::URLRequest*, URLRequestDataUse> pending_url_requests_; |
| // The main frame URLRequest for page loads. Null if this is not tracking a |
| // page load. |