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

Side by Side Diff: components/domain_reliability/context.cc

Issue 2289763003: Remove stl_util use from domain_reliability. (Closed)
Patch Set: win Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/domain_reliability/context.h" 5 #include "components/domain_reliability/context.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 UMA_HISTOGRAM_SPARSE_SLOWLY( 90 UMA_HISTOGRAM_SPARSE_SLOWLY(
91 "DomainReliability.ReportedBeaconError_HasServerIP", 91 "DomainReliability.ReportedBeaconError_HasServerIP",
92 -beacon->chrome_error); 92 -beacon->chrome_error);
93 } 93 }
94 // TODO(juliatuttle): Histogram HTTP response code? 94 // TODO(juliatuttle): Histogram HTTP response code?
95 95
96 // Allow beacons about reports, but don't schedule an upload for more than 96 // Allow beacons about reports, but don't schedule an upload for more than
97 // one layer of recursion, to avoid infinite report loops. 97 // one layer of recursion, to avoid infinite report loops.
98 if (beacon->upload_depth <= kMaxUploadDepthToSchedule) 98 if (beacon->upload_depth <= kMaxUploadDepthToSchedule)
99 scheduler_.OnBeaconAdded(); 99 scheduler_.OnBeaconAdded();
100 beacons_.push_back(beacon.release()); 100 beacons_.push_back(std::move(beacon));
101 bool should_evict = beacons_.size() > kMaxQueuedBeacons; 101 bool should_evict = beacons_.size() > kMaxQueuedBeacons;
102 if (should_evict) 102 if (should_evict)
103 RemoveOldestBeacon(); 103 RemoveOldestBeacon();
104 104
105 LogOnBeaconDidEvictHistogram(should_evict); 105 LogOnBeaconDidEvictHistogram(should_evict);
106 } 106 }
107 107
108 void DomainReliabilityContext::ClearBeacons() { 108 void DomainReliabilityContext::ClearBeacons() {
109 base::STLDeleteElements(&beacons_);
110 beacons_.clear(); 109 beacons_.clear();
111 uploading_beacons_size_ = 0; 110 uploading_beacons_size_ = 0;
112 } 111 }
113 112
114 std::unique_ptr<Value> DomainReliabilityContext::GetWebUIData() const { 113 std::unique_ptr<Value> DomainReliabilityContext::GetWebUIData() const {
115 DictionaryValue* context_value = new DictionaryValue(); 114 DictionaryValue* context_value = new DictionaryValue();
116 115
117 context_value->SetString("origin", config().origin.spec()); 116 context_value->SetString("origin", config().origin.spec());
118 context_value->SetInteger("beacon_count", static_cast<int>(beacons_.size())); 117 context_value->SetInteger("beacon_count", static_cast<int>(beacons_.size()));
119 context_value->SetInteger("uploading_beacon_count", 118 context_value->SetInteger("uploading_beacon_count",
120 static_cast<int>(uploading_beacons_size_)); 119 static_cast<int>(uploading_beacons_size_));
121 context_value->Set("scheduler", scheduler_.GetWebUIData()); 120 context_value->Set("scheduler", scheduler_.GetWebUIData());
122 121
123 return std::unique_ptr<Value>(context_value); 122 return std::unique_ptr<Value>(context_value);
124 } 123 }
125 124
126 void DomainReliabilityContext::GetQueuedBeaconsForTesting( 125 void DomainReliabilityContext::GetQueuedBeaconsForTesting(
127 std::vector<const DomainReliabilityBeacon*>* beacons_out) const { 126 std::vector<const DomainReliabilityBeacon*>* beacons_out) const {
128 DCHECK(this); 127 DCHECK(this);
129 DCHECK(beacons_out); 128 DCHECK(beacons_out);
130 beacons_out->assign(beacons_.begin(), beacons_.end()); 129 beacons_out->clear();
130 for (const auto& beacon : beacons_)
131 beacons_out->push_back(beacon.get());
131 } 132 }
132 133
133 void DomainReliabilityContext::ScheduleUpload( 134 void DomainReliabilityContext::ScheduleUpload(
134 base::TimeDelta min_delay, 135 base::TimeDelta min_delay,
135 base::TimeDelta max_delay) { 136 base::TimeDelta max_delay) {
136 dispatcher_->ScheduleTask( 137 dispatcher_->ScheduleTask(
137 base::Bind( 138 base::Bind(
138 &DomainReliabilityContext::StartUpload, 139 &DomainReliabilityContext::StartUpload,
139 weak_factory_.GetWeakPtr()), 140 weak_factory_.GetWeakPtr()),
140 min_delay, 141 min_delay,
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 upload_time_ = base::TimeTicks(); 198 upload_time_ = base::TimeTicks();
198 } 199 }
199 200
200 std::unique_ptr<const Value> DomainReliabilityContext::CreateReport( 201 std::unique_ptr<const Value> DomainReliabilityContext::CreateReport(
201 base::TimeTicks upload_time, 202 base::TimeTicks upload_time,
202 const GURL& collector_url, 203 const GURL& collector_url,
203 int* max_upload_depth_out) const { 204 int* max_upload_depth_out) const {
204 int max_upload_depth = 0; 205 int max_upload_depth = 0;
205 206
206 std::unique_ptr<ListValue> beacons_value(new ListValue()); 207 std::unique_ptr<ListValue> beacons_value(new ListValue());
207 for (const auto* beacon : beacons_) { 208 for (const auto& beacon : beacons_) {
208 beacons_value->Append(beacon->ToValue(upload_time, 209 beacons_value->Append(beacon->ToValue(upload_time,
209 *last_network_change_time_, 210 *last_network_change_time_,
210 collector_url, 211 collector_url,
211 config().path_prefixes)); 212 config().path_prefixes));
212 if (beacon->upload_depth > max_upload_depth) 213 if (beacon->upload_depth > max_upload_depth)
213 max_upload_depth = beacon->upload_depth; 214 max_upload_depth = beacon->upload_depth;
214 } 215 }
215 216
216 std::unique_ptr<DictionaryValue> report_value(new DictionaryValue()); 217 std::unique_ptr<DictionaryValue> report_value(new DictionaryValue());
217 report_value->SetString("reporter", upload_reporter_string_); 218 report_value->SetString("reporter", upload_reporter_string_);
218 report_value->Set("entries", beacons_value.release()); 219 report_value->Set("entries", beacons_value.release());
219 220
220 *max_upload_depth_out = max_upload_depth; 221 *max_upload_depth_out = max_upload_depth;
221 return std::move(report_value); 222 return std::move(report_value);
222 } 223 }
223 224
224 void DomainReliabilityContext::MarkUpload() { 225 void DomainReliabilityContext::MarkUpload() {
225 DCHECK_EQ(0u, uploading_beacons_size_); 226 DCHECK_EQ(0u, uploading_beacons_size_);
226 uploading_beacons_size_ = beacons_.size(); 227 uploading_beacons_size_ = beacons_.size();
227 DCHECK_NE(0u, uploading_beacons_size_); 228 DCHECK_NE(0u, uploading_beacons_size_);
228 } 229 }
229 230
230 void DomainReliabilityContext::CommitUpload() { 231 void DomainReliabilityContext::CommitUpload() {
231 auto begin = beacons_.begin(); 232 auto begin = beacons_.begin();
232 auto end = begin + uploading_beacons_size_; 233 auto end = begin + uploading_beacons_size_;
233 base::STLDeleteContainerPointers(begin, end);
234 beacons_.erase(begin, end); 234 beacons_.erase(begin, end);
235 DCHECK_NE(0u, uploading_beacons_size_); 235 DCHECK_NE(0u, uploading_beacons_size_);
236 uploading_beacons_size_ = 0; 236 uploading_beacons_size_ = 0;
237 } 237 }
238 238
239 void DomainReliabilityContext::RollbackUpload() { 239 void DomainReliabilityContext::RollbackUpload() {
240 DCHECK_NE(0u, uploading_beacons_size_); 240 DCHECK_NE(0u, uploading_beacons_size_);
241 uploading_beacons_size_ = 0; 241 uploading_beacons_size_ = 0;
242 } 242 }
243 243
244 void DomainReliabilityContext::RemoveOldestBeacon() { 244 void DomainReliabilityContext::RemoveOldestBeacon() {
245 DCHECK(!beacons_.empty()); 245 DCHECK(!beacons_.empty());
246 246
247 VLOG(1) << "Beacon queue for " << config().origin << " full; " 247 VLOG(1) << "Beacon queue for " << config().origin << " full; "
248 << "removing oldest beacon"; 248 << "removing oldest beacon";
249 249
250 delete beacons_.front();
251 beacons_.pop_front(); 250 beacons_.pop_front();
252 251
253 // If that just removed a beacon counted in uploading_beacons_size_, decrement 252 // If that just removed a beacon counted in uploading_beacons_size_, decrement
254 // that. 253 // that.
255 if (uploading_beacons_size_ > 0) 254 if (uploading_beacons_size_ > 0)
256 --uploading_beacons_size_; 255 --uploading_beacons_size_;
257 } 256 }
258 257
259 } // namespace domain_reliability 258 } // namespace domain_reliability
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698