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

Side by Side 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: Remove debug logs 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ 5 #ifndef COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_
6 #define COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ 6 #define COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 12 matching lines...) Expand all
23 // can make multiple URLRequests, so there is a one:many relationship between 23 // can make multiple URLRequests, so there is a one:many relationship between
24 // DataUseRecorders and URLRequests. Data used by each URLRequest will be 24 // DataUseRecorders and URLRequests. Data used by each URLRequest will be
25 // tracked by exactly one DataUseRecorder. 25 // tracked by exactly one DataUseRecorder.
26 class DataUseRecorder { 26 class DataUseRecorder {
27 public: 27 public:
28 DataUseRecorder(); 28 DataUseRecorder();
29 ~DataUseRecorder(); 29 ~DataUseRecorder();
30 30
31 // Returns the actual data used by the entity being tracked. 31 // Returns the actual data used by the entity being tracked.
32 DataUse& data_use() { return data_use_; } 32 DataUse& data_use() { return data_use_; }
33 base::hash_set<net::URLRequest*>& pending_url_requests() {
RyanSturm 2016/11/29 20:33:00 Can this return a const ref and be a const method?
Not at Google. Contact bengr 2016/11/30 00:21:16 Done.
34 return pending_url_requests_;
35 }
36 const net::URLRequest* main_url_request() { return main_url_request_; }
RyanSturm 2016/11/29 20:33:00 const method
Not at Google. Contact bengr 2016/11/30 00:21:16 Done.
37
38 void set_main_url_request(const net::URLRequest* request) {
39 main_url_request_ = request;
40 }
33 41
34 // Returns whether data use is complete and no additional data can be used 42 // Returns whether data use is complete and no additional data can be used
35 // by the entity tracked by this recorder. For example, 43 // by the entity tracked by this recorder. For example,
36 bool IsDataUseComplete(); 44 bool IsDataUseComplete();
37 45
46 void AddPendingURLRequest(net::URLRequest* request);
47 // void RemovePendingURLRequest(net::URLRequest* request);
RyanSturm 2016/11/29 20:33:00 This comment should be replaced by a description,
Not at Google. Contact bengr 2016/11/30 00:21:16 Done.
48 void RemoveAllPendingURLRequests();
49
50 // Returns whether there are any pending URLRequests whose data use is tracked
51 // by this DataUseRecorder.
52 bool HasPendingURLRequest(net::URLRequest* request);
53
54 // Merge another DataUseRecorder to this instance.
55 void MergeFrom(DataUseRecorder* other);
56
57 private:
58 friend class DataUseAscriber;
59
38 // Methods for tracking data use sources. These sources can initiate 60 // Methods for tracking data use sources. These sources can initiate
39 // URLRequests directly or indirectly. The entity whose data use is being 61 // URLRequests directly or indirectly. The entity whose data use is being
40 // tracked by this recorder may comprise of sub-entities each of which use 62 // tracked by this recorder may comprise of sub-entities each of which use
41 // network data. These helper methods help track these sub-entities. 63 // network data. These helper methods help track these sub-entities.
42 // A recorder will not be marked as having completed data use as long as it 64 // A recorder will not be marked as having completed data use as long as it
43 // has pending data sources. 65 // has pending data sources.
44 void AddPendingDataSource(void* source); 66 void AddPendingDataSource(void* source);
45 bool HasPendingDataSource(void* source); 67 bool HasPendingDataSource(void* source);
46 void RemovePendingDataSource(void* source); 68 void RemovePendingDataSource(void* source);
47 69
48 // Returns whether there are any pending URLRequests whose data use is tracked
49 // by this DataUseRecorder.
50 bool HasPendingURLRequest(const net::URLRequest* request);
51
52 // Method to merge another DataUseRecorder to this instance.
53 void MergeWith(DataUseRecorder* other);
54
55 private:
56 friend class DataUseAscriber;
57
58 // Network Delegate methods: 70 // Network Delegate methods:
59 void OnBeforeUrlRequest(net::URLRequest* request); 71 void OnBeforeUrlRequest(net::URLRequest* request);
60 void OnUrlRequestDestroyed(net::URLRequest* request); 72 void OnUrlRequestDestroyed(net::URLRequest* request);
61 void OnNetworkBytesSent(net::URLRequest* request, int64_t bytes_sent); 73 void OnNetworkBytesSent(net::URLRequest* request, int64_t bytes_sent);
62 void OnNetworkBytesReceived(net::URLRequest* request, int64_t bytes_received); 74 void OnNetworkBytesReceived(net::URLRequest* request, int64_t bytes_received);
63 75
64 // Pending URLRequests whose data is being tracked by this DataUseRecorder. 76 // Pending URLRequests whose data is being tracked by this DataUseRecorder.
65 base::hash_set<const net::URLRequest*> pending_url_requests_; 77 base::hash_set<net::URLRequest*> pending_url_requests_;
66 78
67 // Data sources other than URLRequests, whose data is being tracked by this 79 // Data sources other than URLRequests, whose data is being tracked by this
68 // DataUseRecorder. 80 // DataUseRecorder.
69 base::hash_set<const void*> pending_data_sources_; 81 base::hash_set<const void*> pending_data_sources_;
70 82
83 // For page loads this is main frame URLRequest.
RyanSturm 2016/11/29 20:33:00 nit: change this to something like: The main frame
Not at Google. Contact bengr 2016/11/30 00:21:16 Done.
84 const net::URLRequest* main_url_request_;
85
71 // The network data use measured by this DataUseRecorder. 86 // The network data use measured by this DataUseRecorder.
72 DataUse data_use_; 87 DataUse data_use_;
73 88
74 DISALLOW_COPY_AND_ASSIGN(DataUseRecorder); 89 DISALLOW_COPY_AND_ASSIGN(DataUseRecorder);
75 }; 90 };
76 91
77 } // namespace data_use_measurement 92 } // namespace data_use_measurement
78 93
79 #endif // COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_ 94 #endif // COMPONENTS_DATA_USE_MEASUREMENT_CORE_DATA_USE_RECORDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698