| 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..c04f7abfb55b042018db96408a3ae09a61b34911 100644
|
| --- a/components/data_use_measurement/core/data_use_recorder.h
|
| +++ b/components/data_use_measurement/core/data_use_recorder.h
|
| @@ -7,7 +7,8 @@
|
|
|
| #include <stdint.h>
|
|
|
| -#include "base/containers/hash_tables.h"
|
| +#include <map>
|
| +
|
| #include "base/macros.h"
|
| #include "base/supports_user_data.h"
|
| #include "components/data_use_measurement/core/data_use.h"
|
| @@ -25,12 +26,24 @@ namespace data_use_measurement {
|
| // tracked by exactly one DataUseRecorder.
|
| class DataUseRecorder {
|
| public:
|
| + // Stores network data used by a URLRequest.
|
| + struct URLRequestDataUse {
|
| + URLRequestDataUse() : bytes_received(0), bytes_sent(0) {}
|
| +
|
| + int64_t bytes_received;
|
| + int64_t bytes_sent;
|
| +
|
| + 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,13 +70,14 @@ 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();
|
|
|
| - // Merge another DataUseRecorder to this instance.
|
| - void MergeFrom(DataUseRecorder* other);
|
| -
|
| // Network Delegate methods:
|
| void OnBeforeUrlRequest(net::URLRequest* request);
|
| void OnUrlRequestDestroyed(net::URLRequest* request);
|
| @@ -71,12 +85,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.
|
|
|