Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Unified Diff: components/data_use_measurement/core/data_use_recorder.h

Issue 2947973002: Support moving pending requests from one DataUseRecorder to another (Closed)
Patch Set: rebase Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.
« no previous file with comments | « components/data_use_measurement/core/data_use.cc ('k') | components/data_use_measurement/core/data_use_recorder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698