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

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

Issue 2534023002: Create a DataUseRecorder instance for each page load in Chrome. (Closed)
Patch Set: Use emplace to insert; remove copy constructor Created 4 years 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 f9888cbbbfb6c906ae43094efffd0fef692f7168..d406c5b81a6c89b5b9689ebb48f173bdcb608206 100644
--- a/components/data_use_measurement/core/data_use_recorder.h
+++ b/components/data_use_measurement/core/data_use_recorder.h
@@ -30,11 +30,37 @@ class 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 {
+ return pending_url_requests_;
+ }
+ const net::URLRequest* main_url_request() const { return main_url_request_; }
+
+ void set_main_url_request(const net::URLRequest* request) {
+ main_url_request_ = request;
+ }
// Returns whether data use is complete and no additional data can be used
// by the entity tracked by this recorder. For example,
bool IsDataUseComplete();
+ // Adds |request| to the list of pending URLRequests that ascribe data use to
+ // this recorder.
+ void AddPendingURLRequest(net::URLRequest* request);
+
+ // Clears the list of pending URLRequests that ascribe data use to this
+ // recorder.
+ void RemoveAllPendingURLRequests();
+
+ // Returns whether there are any pending URLRequests whose data use is tracked
+ // by this DataUseRecorder.
+ bool HasPendingURLRequest(net::URLRequest* request);
+
+ // Merge another DataUseRecorder to this instance.
+ void MergeFrom(DataUseRecorder* other);
+
+ private:
+ friend class DataUseAscriber;
+
// Methods for tracking data use sources. These sources can initiate
// URLRequests directly or indirectly. The entity whose data use is being
// tracked by this recorder may comprise of sub-entities each of which use
@@ -45,16 +71,6 @@ class DataUseRecorder {
bool HasPendingDataSource(void* source);
void RemovePendingDataSource(void* source);
- // Returns whether there are any pending URLRequests whose data use is tracked
- // by this DataUseRecorder.
- bool HasPendingURLRequest(const net::URLRequest* request);
-
- // Method to merge another DataUseRecorder to this instance.
- void MergeWith(DataUseRecorder* other);
-
- private:
- friend class DataUseAscriber;
-
// Network Delegate methods:
void OnBeforeUrlRequest(net::URLRequest* request);
void OnUrlRequestDestroyed(net::URLRequest* request);
@@ -62,12 +78,16 @@ class DataUseRecorder {
void OnNetworkBytesReceived(net::URLRequest* request, int64_t bytes_received);
// Pending URLRequests whose data is being tracked by this DataUseRecorder.
- base::hash_set<const net::URLRequest*> pending_url_requests_;
+ base::hash_set<net::URLRequest*> pending_url_requests_;
// Data sources other than URLRequests, whose data is being tracked by this
// DataUseRecorder.
base::hash_set<const void*> pending_data_sources_;
+ // The main frame URLRequest for page loads. Null if this is not tracking a
+ // page load.
+ const net::URLRequest* main_url_request_;
+
// The network data use measured by this DataUseRecorder.
DataUse data_use_;

Powered by Google App Engine
This is Rietveld 408576698