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

Side by Side Diff: components/prefs/json_pref_store.cc

Issue 1907043002: Convert //components/prefs from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: IWYU fixes Created 4 years, 8 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/prefs/json_pref_store.h" 5 #include "components/prefs/json_pref_store.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 15 matching lines...) Expand all
26 #include "base/time/default_clock.h" 26 #include "base/time/default_clock.h"
27 #include "base/values.h" 27 #include "base/values.h"
28 #include "components/prefs/pref_filter.h" 28 #include "components/prefs/pref_filter.h"
29 29
30 // Result returned from internal read tasks. 30 // Result returned from internal read tasks.
31 struct JsonPrefStore::ReadResult { 31 struct JsonPrefStore::ReadResult {
32 public: 32 public:
33 ReadResult(); 33 ReadResult();
34 ~ReadResult(); 34 ~ReadResult();
35 35
36 scoped_ptr<base::Value> value; 36 std::unique_ptr<base::Value> value;
37 PrefReadError error; 37 PrefReadError error;
38 bool no_dir; 38 bool no_dir;
39 39
40 private: 40 private:
41 DISALLOW_COPY_AND_ASSIGN(ReadResult); 41 DISALLOW_COPY_AND_ASSIGN(ReadResult);
42 }; 42 };
43 43
44 JsonPrefStore::ReadResult::ReadResult() 44 JsonPrefStore::ReadResult::ReadResult()
45 : error(PersistentPrefStore::PREF_READ_ERROR_NONE), no_dir(false) { 45 : error(PersistentPrefStore::PREF_READ_ERROR_NONE), no_dir(false) {
46 } 46 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 102
103 // The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS 103 // The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS
104 // macro adapted to allow for a dynamically suffixed histogram name. 104 // macro adapted to allow for a dynamically suffixed histogram name.
105 // Note: The factory creates and owns the histogram. 105 // Note: The factory creates and owns the histogram.
106 base::HistogramBase* histogram = base::Histogram::FactoryGet( 106 base::HistogramBase* histogram = base::Histogram::FactoryGet(
107 "Settings.JsonDataReadSizeKilobytes." + spaceless_basename, 1, 10000, 50, 107 "Settings.JsonDataReadSizeKilobytes." + spaceless_basename, 1, 10000, 50,
108 base::HistogramBase::kUmaTargetedHistogramFlag); 108 base::HistogramBase::kUmaTargetedHistogramFlag);
109 histogram->Add(static_cast<int>(size) / 1024); 109 histogram->Add(static_cast<int>(size) / 1024);
110 } 110 }
111 111
112 scoped_ptr<JsonPrefStore::ReadResult> ReadPrefsFromDisk( 112 std::unique_ptr<JsonPrefStore::ReadResult> ReadPrefsFromDisk(
113 const base::FilePath& path, 113 const base::FilePath& path,
114 const base::FilePath& alternate_path) { 114 const base::FilePath& alternate_path) {
115 if (!base::PathExists(path) && !alternate_path.empty() && 115 if (!base::PathExists(path) && !alternate_path.empty() &&
116 base::PathExists(alternate_path)) { 116 base::PathExists(alternate_path)) {
117 base::Move(alternate_path, path); 117 base::Move(alternate_path, path);
118 } 118 }
119 119
120 int error_code; 120 int error_code;
121 std::string error_msg; 121 std::string error_msg;
122 scoped_ptr<JsonPrefStore::ReadResult> read_result( 122 std::unique_ptr<JsonPrefStore::ReadResult> read_result(
123 new JsonPrefStore::ReadResult); 123 new JsonPrefStore::ReadResult);
124 JSONFileValueDeserializer deserializer(path); 124 JSONFileValueDeserializer deserializer(path);
125 read_result->value = deserializer.Deserialize(&error_code, &error_msg); 125 read_result->value = deserializer.Deserialize(&error_code, &error_msg);
126 read_result->error = 126 read_result->error =
127 HandleReadErrors(read_result->value.get(), path, error_code, error_msg); 127 HandleReadErrors(read_result->value.get(), path, error_code, error_msg);
128 read_result->no_dir = !base::PathExists(path.DirName()); 128 read_result->no_dir = !base::PathExists(path.DirName());
129 129
130 if (read_result->error == PersistentPrefStore::PREF_READ_ERROR_NONE) 130 if (read_result->error == PersistentPrefStore::PREF_READ_ERROR_NONE)
131 RecordJsonDataSizeHistogram(path, deserializer.get_last_read_size()); 131 RecordJsonDataSizeHistogram(path, deserializer.get_last_read_size());
132 132
133 return read_result; 133 return read_result;
134 } 134 }
135 135
136 } // namespace 136 } // namespace
137 137
138 // static 138 // static
139 scoped_refptr<base::SequencedTaskRunner> JsonPrefStore::GetTaskRunnerForFile( 139 scoped_refptr<base::SequencedTaskRunner> JsonPrefStore::GetTaskRunnerForFile(
140 const base::FilePath& filename, 140 const base::FilePath& filename,
141 base::SequencedWorkerPool* worker_pool) { 141 base::SequencedWorkerPool* worker_pool) {
142 std::string token("json_pref_store-"); 142 std::string token("json_pref_store-");
143 token.append(filename.AsUTF8Unsafe()); 143 token.append(filename.AsUTF8Unsafe());
144 return worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( 144 return worker_pool->GetSequencedTaskRunnerWithShutdownBehavior(
145 worker_pool->GetNamedSequenceToken(token), 145 worker_pool->GetNamedSequenceToken(token),
146 base::SequencedWorkerPool::BLOCK_SHUTDOWN); 146 base::SequencedWorkerPool::BLOCK_SHUTDOWN);
147 } 147 }
148 148
149 JsonPrefStore::JsonPrefStore( 149 JsonPrefStore::JsonPrefStore(
150 const base::FilePath& pref_filename, 150 const base::FilePath& pref_filename,
151 const scoped_refptr<base::SequencedTaskRunner>& sequenced_task_runner, 151 const scoped_refptr<base::SequencedTaskRunner>& sequenced_task_runner,
152 scoped_ptr<PrefFilter> pref_filter) 152 std::unique_ptr<PrefFilter> pref_filter)
153 : JsonPrefStore(pref_filename, 153 : JsonPrefStore(pref_filename,
154 base::FilePath(), 154 base::FilePath(),
155 sequenced_task_runner, 155 sequenced_task_runner,
156 std::move(pref_filter)) {} 156 std::move(pref_filter)) {}
157 157
158 JsonPrefStore::JsonPrefStore( 158 JsonPrefStore::JsonPrefStore(
159 const base::FilePath& pref_filename, 159 const base::FilePath& pref_filename,
160 const base::FilePath& pref_alternate_filename, 160 const base::FilePath& pref_alternate_filename,
161 const scoped_refptr<base::SequencedTaskRunner>& sequenced_task_runner, 161 const scoped_refptr<base::SequencedTaskRunner>& sequenced_task_runner,
162 scoped_ptr<PrefFilter> pref_filter) 162 std::unique_ptr<PrefFilter> pref_filter)
163 : path_(pref_filename), 163 : path_(pref_filename),
164 alternate_path_(pref_alternate_filename), 164 alternate_path_(pref_alternate_filename),
165 sequenced_task_runner_(sequenced_task_runner), 165 sequenced_task_runner_(sequenced_task_runner),
166 prefs_(new base::DictionaryValue()), 166 prefs_(new base::DictionaryValue()),
167 read_only_(false), 167 read_only_(false),
168 writer_(pref_filename, sequenced_task_runner), 168 writer_(pref_filename, sequenced_task_runner),
169 pref_filter_(std::move(pref_filter)), 169 pref_filter_(std::move(pref_filter)),
170 initialized_(false), 170 initialized_(false),
171 filtering_in_progress_(false), 171 filtering_in_progress_(false),
172 pending_lossy_write_(false), 172 pending_lossy_write_(false),
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 } 213 }
214 214
215 bool JsonPrefStore::GetMutableValue(const std::string& key, 215 bool JsonPrefStore::GetMutableValue(const std::string& key,
216 base::Value** result) { 216 base::Value** result) {
217 DCHECK(CalledOnValidThread()); 217 DCHECK(CalledOnValidThread());
218 218
219 return prefs_->Get(key, result); 219 return prefs_->Get(key, result);
220 } 220 }
221 221
222 void JsonPrefStore::SetValue(const std::string& key, 222 void JsonPrefStore::SetValue(const std::string& key,
223 scoped_ptr<base::Value> value, 223 std::unique_ptr<base::Value> value,
224 uint32_t flags) { 224 uint32_t flags) {
225 DCHECK(CalledOnValidThread()); 225 DCHECK(CalledOnValidThread());
226 226
227 DCHECK(value); 227 DCHECK(value);
228 base::Value* old_value = nullptr; 228 base::Value* old_value = nullptr;
229 prefs_->Get(key, &old_value); 229 prefs_->Get(key, &old_value);
230 if (!old_value || !value->Equals(old_value)) { 230 if (!old_value || !value->Equals(old_value)) {
231 prefs_->Set(key, std::move(value)); 231 prefs_->Set(key, std::move(value));
232 ReportValueChanged(key, flags); 232 ReportValueChanged(key, flags);
233 } 233 }
234 } 234 }
235 235
236 void JsonPrefStore::SetValueSilently(const std::string& key, 236 void JsonPrefStore::SetValueSilently(const std::string& key,
237 scoped_ptr<base::Value> value, 237 std::unique_ptr<base::Value> value,
238 uint32_t flags) { 238 uint32_t flags) {
239 DCHECK(CalledOnValidThread()); 239 DCHECK(CalledOnValidThread());
240 240
241 DCHECK(value); 241 DCHECK(value);
242 base::Value* old_value = nullptr; 242 base::Value* old_value = nullptr;
243 prefs_->Get(key, &old_value); 243 prefs_->Get(key, &old_value);
244 if (!old_value || !value->Equals(old_value)) { 244 if (!old_value || !value->Equals(old_value)) {
245 prefs_->Set(key, std::move(value)); 245 prefs_->Set(key, std::move(value));
246 ScheduleWrite(flags); 246 ScheduleWrite(flags);
247 } 247 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 const base::Closure& on_next_successful_write) { 327 const base::Closure& on_next_successful_write) {
328 DCHECK(CalledOnValidThread()); 328 DCHECK(CalledOnValidThread());
329 329
330 writer_.RegisterOnNextSuccessfulWriteCallback(on_next_successful_write); 330 writer_.RegisterOnNextSuccessfulWriteCallback(on_next_successful_write);
331 } 331 }
332 332
333 void JsonPrefStore::ClearMutableValues() { 333 void JsonPrefStore::ClearMutableValues() {
334 NOTIMPLEMENTED(); 334 NOTIMPLEMENTED();
335 } 335 }
336 336
337 void JsonPrefStore::OnFileRead(scoped_ptr<ReadResult> read_result) { 337 void JsonPrefStore::OnFileRead(std::unique_ptr<ReadResult> read_result) {
338 DCHECK(CalledOnValidThread()); 338 DCHECK(CalledOnValidThread());
339 339
340 DCHECK(read_result); 340 DCHECK(read_result);
341 341
342 scoped_ptr<base::DictionaryValue> unfiltered_prefs(new base::DictionaryValue); 342 std::unique_ptr<base::DictionaryValue> unfiltered_prefs(
343 new base::DictionaryValue);
343 344
344 read_error_ = read_result->error; 345 read_error_ = read_result->error;
345 346
346 bool initialization_successful = !read_result->no_dir; 347 bool initialization_successful = !read_result->no_dir;
347 348
348 if (initialization_successful) { 349 if (initialization_successful) {
349 switch (read_error_) { 350 switch (read_error_) {
350 case PREF_READ_ERROR_ACCESS_DENIED: 351 case PREF_READ_ERROR_ACCESS_DENIED:
351 case PREF_READ_ERROR_FILE_OTHER: 352 case PREF_READ_ERROR_FILE_OTHER:
352 case PREF_READ_ERROR_FILE_LOCKED: 353 case PREF_READ_ERROR_FILE_LOCKED:
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 pref_filter_->FilterSerializeData(prefs_.get()); 405 pref_filter_->FilterSerializeData(prefs_.get());
405 406
406 JSONStringValueSerializer serializer(output); 407 JSONStringValueSerializer serializer(output);
407 // Not pretty-printing prefs shrinks pref file size by ~30%. To obtain 408 // Not pretty-printing prefs shrinks pref file size by ~30%. To obtain
408 // readable prefs for debugging purposes, you can dump your prefs into any 409 // readable prefs for debugging purposes, you can dump your prefs into any
409 // command-line or online JSON pretty printing tool. 410 // command-line or online JSON pretty printing tool.
410 serializer.set_pretty_print(false); 411 serializer.set_pretty_print(false);
411 return serializer.Serialize(*prefs_); 412 return serializer.Serialize(*prefs_);
412 } 413 }
413 414
414 void JsonPrefStore::FinalizeFileRead(bool initialization_successful, 415 void JsonPrefStore::FinalizeFileRead(
415 scoped_ptr<base::DictionaryValue> prefs, 416 bool initialization_successful,
416 bool schedule_write) { 417 std::unique_ptr<base::DictionaryValue> prefs,
418 bool schedule_write) {
417 DCHECK(CalledOnValidThread()); 419 DCHECK(CalledOnValidThread());
418 420
419 filtering_in_progress_ = false; 421 filtering_in_progress_ = false;
420 422
421 if (!initialization_successful) { 423 if (!initialization_successful) {
422 FOR_EACH_OBSERVER(PrefStore::Observer, 424 FOR_EACH_OBSERVER(PrefStore::Observer,
423 observers_, 425 observers_,
424 OnInitializationCompleted(false)); 426 OnInitializationCompleted(false));
425 return; 427 return;
426 } 428 }
(...skipping 26 matching lines...) Expand all
453 } 455 }
454 456
455 // NOTE: This value should NOT be changed without renaming the histogram 457 // NOTE: This value should NOT be changed without renaming the histogram
456 // otherwise it will create incompatible buckets. 458 // otherwise it will create incompatible buckets.
457 const int32_t 459 const int32_t
458 JsonPrefStore::WriteCountHistogram::kHistogramWriteReportIntervalMins = 5; 460 JsonPrefStore::WriteCountHistogram::kHistogramWriteReportIntervalMins = 5;
459 461
460 JsonPrefStore::WriteCountHistogram::WriteCountHistogram( 462 JsonPrefStore::WriteCountHistogram::WriteCountHistogram(
461 const base::TimeDelta& commit_interval, 463 const base::TimeDelta& commit_interval,
462 const base::FilePath& path) 464 const base::FilePath& path)
463 : WriteCountHistogram(commit_interval, 465 : WriteCountHistogram(
464 path, 466 commit_interval,
465 scoped_ptr<base::Clock>(new base::DefaultClock)) { 467 path,
466 } 468 std::unique_ptr<base::Clock>(new base::DefaultClock)) {}
467 469
468 JsonPrefStore::WriteCountHistogram::WriteCountHistogram( 470 JsonPrefStore::WriteCountHistogram::WriteCountHistogram(
469 const base::TimeDelta& commit_interval, 471 const base::TimeDelta& commit_interval,
470 const base::FilePath& path, 472 const base::FilePath& path,
471 scoped_ptr<base::Clock> clock) 473 std::unique_ptr<base::Clock> clock)
472 : commit_interval_(commit_interval), 474 : commit_interval_(commit_interval),
473 path_(path), 475 path_(path),
474 clock_(clock.release()), 476 clock_(clock.release()),
475 report_interval_( 477 report_interval_(
476 base::TimeDelta::FromMinutes(kHistogramWriteReportIntervalMins)), 478 base::TimeDelta::FromMinutes(kHistogramWriteReportIntervalMins)),
477 last_report_time_(clock_->Now()), 479 last_report_time_(clock_->Now()),
478 writes_since_last_report_(0) { 480 writes_since_last_report_(0) {}
479 }
480 481
481 JsonPrefStore::WriteCountHistogram::~WriteCountHistogram() { 482 JsonPrefStore::WriteCountHistogram::~WriteCountHistogram() {
482 ReportOutstandingWrites(); 483 ReportOutstandingWrites();
483 } 484 }
484 485
485 void JsonPrefStore::WriteCountHistogram::RecordWriteOccured() { 486 void JsonPrefStore::WriteCountHistogram::RecordWriteOccured() {
486 ReportOutstandingWrites(); 487 ReportOutstandingWrites();
487 488
488 ++writes_since_last_report_; 489 ++writes_since_last_report_;
489 } 490 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 DCHECK_EQ(31, num_buckets); 533 DCHECK_EQ(31, num_buckets);
533 534
534 // The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS 535 // The histogram below is an expansion of the UMA_HISTOGRAM_CUSTOM_COUNTS
535 // macro adapted to allow for a dynamically suffixed histogram name. 536 // macro adapted to allow for a dynamically suffixed histogram name.
536 // Note: The factory creates and owns the histogram. 537 // Note: The factory creates and owns the histogram.
537 base::HistogramBase* histogram = base::Histogram::FactoryGet( 538 base::HistogramBase* histogram = base::Histogram::FactoryGet(
538 histogram_name, min_value, max_value, num_buckets, 539 histogram_name, min_value, max_value, num_buckets,
539 base::HistogramBase::kUmaTargetedHistogramFlag); 540 base::HistogramBase::kUmaTargetedHistogramFlag);
540 return histogram; 541 return histogram;
541 } 542 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698