OLD | NEW |
---|---|
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 #include "components/data_use_measurement/core/data_use_recorder.h" | 5 #include "components/data_use_measurement/core/data_use_recorder.h" |
6 | 6 |
7 #include "net/url_request/url_request.h" | 7 #include "net/url_request/url_request.h" |
8 | 8 |
9 namespace data_use_measurement { | 9 namespace data_use_measurement { |
10 | 10 |
11 DataUseRecorder::DataUseRecorder(DataUse::TrafficType traffic_type) | 11 DataUseRecorder::DataUseRecorder(DataUse::TrafficType traffic_type) |
12 : main_url_request_(nullptr), data_use_(traffic_type), is_visible_(false) {} | 12 : main_url_request_(nullptr), data_use_(traffic_type), is_visible_(false) {} |
13 | 13 |
14 DataUseRecorder::~DataUseRecorder() {} | 14 DataUseRecorder::~DataUseRecorder() {} |
15 | 15 |
16 bool DataUseRecorder::IsDataUseComplete() { | 16 bool DataUseRecorder::IsDataUseComplete() { |
17 return pending_url_requests_.empty() && pending_data_sources_.empty(); | 17 return pending_url_requests_.empty(); |
18 } | 18 } |
19 | 19 |
20 void DataUseRecorder::AddPendingURLRequest(net::URLRequest* request) { | 20 void DataUseRecorder::AddPendingURLRequest(net::URLRequest* request) { |
21 pending_url_requests_.insert(request); | 21 pending_url_requests_.emplace(std::piecewise_construct, |
22 std::forward_as_tuple(request), | |
23 std::forward_as_tuple()); | |
22 } | 24 } |
23 | 25 |
24 void DataUseRecorder::OnUrlRequestDestroyed(net::URLRequest* request) { | 26 void DataUseRecorder::OnUrlRequestDestroyed(net::URLRequest* request) { |
25 pending_url_requests_.erase(request); | 27 pending_url_requests_.erase(request); |
26 } | 28 } |
27 | 29 |
30 void DataUseRecorder::MovePendingURLRequest(DataUseRecorder* other, | |
31 net::URLRequest* request) { | |
32 auto request_it = pending_url_requests_.find(request); | |
33 DCHECK(request_it != pending_url_requests_.end()); | |
34 DCHECK(other->pending_url_requests_.find(request) == | |
35 other->pending_url_requests_.end()); | |
36 | |
37 other->UpdateNetworkByteCounts(request, request_it->second.bytes_received, | |
tbansal1
2017/06/23 22:11:21
Do we need to insert |request| in |other-> pending
Raj
2017/06/26 21:40:22
Yes. Fixed.
Will add unittest when MovePendingURLR
| |
38 request_it->second.bytes_sent); | |
39 data_use_.IncrementTotalBytes(request_it->second.bytes_received, | |
tbansal1
2017/06/23 22:11:21
Why is IncrementTotalBytes() called here?
Raj
2017/06/26 21:40:22
It should be called with -ve bytes, for decrementi
| |
40 request_it->second.bytes_sent); | |
41 pending_url_requests_.erase(request_it); | |
42 } | |
43 | |
28 void DataUseRecorder::RemoveAllPendingURLRequests() { | 44 void DataUseRecorder::RemoveAllPendingURLRequests() { |
29 pending_url_requests_.clear(); | 45 pending_url_requests_.clear(); |
30 } | 46 } |
31 | 47 |
32 void DataUseRecorder::OnBeforeUrlRequest(net::URLRequest* request) {} | 48 void DataUseRecorder::OnBeforeUrlRequest(net::URLRequest* request) {} |
33 | 49 |
34 void DataUseRecorder::OnNetworkBytesReceived(net::URLRequest* request, | 50 void DataUseRecorder::OnNetworkBytesReceived(net::URLRequest* request, |
35 int64_t bytes_received) { | 51 int64_t bytes_received) { |
36 data_use_.IncrementTotalBytes(bytes_received, 0); | 52 UpdateNetworkByteCounts(request, bytes_received, 0); |
37 } | 53 } |
38 | 54 |
39 void DataUseRecorder::OnNetworkBytesSent(net::URLRequest* request, | 55 void DataUseRecorder::OnNetworkBytesSent(net::URLRequest* request, |
40 int64_t bytes_sent) { | 56 int64_t bytes_sent) { |
41 data_use_.IncrementTotalBytes(0, bytes_sent); | 57 UpdateNetworkByteCounts(request, 0, bytes_sent); |
58 } | |
59 | |
60 void DataUseRecorder::UpdateNetworkByteCounts(net::URLRequest* request, | |
61 int64_t bytes_received, | |
62 int64_t bytes_sent) { | |
63 data_use_.IncrementTotalBytes(bytes_received, bytes_sent); | |
64 auto request_it = pending_url_requests_.find(request); | |
65 DCHECK(request_it != pending_url_requests_.end()); | |
tbansal1
2017/06/23 22:11:21
dcheck not needed.
Raj
2017/06/26 21:40:22
Done
| |
66 request_it->second.bytes_received += bytes_received; | |
67 request_it->second.bytes_sent += bytes_sent; | |
42 } | 68 } |
43 | 69 |
44 void DataUseRecorder::MergeFrom(DataUseRecorder* other) { | 70 void DataUseRecorder::MergeFrom(DataUseRecorder* other) { |
45 data_use_.MergeFrom(other->data_use()); | 71 data_use_.MergeFrom(other->data_use()); |
46 } | 72 } |
47 | 73 |
48 } // namespace data_use_measurement | 74 } // namespace data_use_measurement |
OLD | NEW |