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. |