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

Side by Side Diff: components/filesystem/public/cpp/prefs/filesystem_json_pref_store.cc

Issue 1918083002: Convert //components/[f-n]* from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: … 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/filesystem/public/cpp/prefs/filesystem_json_pref_store.h" 5 #include "components/filesystem/public/cpp/prefs/filesystem_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 "mojo/common/common_type_converters.h" 26 #include "mojo/common/common_type_converters.h"
27 27
28 namespace filesystem { 28 namespace filesystem {
29 29
30 // Result returned from internal read tasks. 30 // Result returned from internal read tasks.
31 struct FilesystemJsonPrefStore::ReadResult { 31 struct FilesystemJsonPrefStore::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 38
39 private: 39 private:
40 DISALLOW_COPY_AND_ASSIGN(ReadResult); 40 DISALLOW_COPY_AND_ASSIGN(ReadResult);
41 }; 41 };
42 42
43 FilesystemJsonPrefStore::ReadResult::ReadResult() 43 FilesystemJsonPrefStore::ReadResult::ReadResult()
44 : error(PersistentPrefStore::PREF_READ_ERROR_NONE) {} 44 : error(PersistentPrefStore::PREF_READ_ERROR_NONE) {}
45 45
46 FilesystemJsonPrefStore::ReadResult::~ReadResult() {} 46 FilesystemJsonPrefStore::ReadResult::~ReadResult() {}
47 47
48 namespace { 48 namespace {
49 49
50 PersistentPrefStore::PrefReadError HandleReadErrors(const base::Value* value) { 50 PersistentPrefStore::PrefReadError HandleReadErrors(const base::Value* value) {
51 if (!value->IsType(base::Value::TYPE_DICTIONARY)) 51 if (!value->IsType(base::Value::TYPE_DICTIONARY))
52 return PersistentPrefStore::PREF_READ_ERROR_JSON_TYPE; 52 return PersistentPrefStore::PREF_READ_ERROR_JSON_TYPE;
53 return PersistentPrefStore::PREF_READ_ERROR_NONE; 53 return PersistentPrefStore::PREF_READ_ERROR_NONE;
54 } 54 }
55 55
56 } // namespace 56 } // namespace
57 57
58 FilesystemJsonPrefStore::FilesystemJsonPrefStore( 58 FilesystemJsonPrefStore::FilesystemJsonPrefStore(
59 const std::string& pref_filename, 59 const std::string& pref_filename,
60 filesystem::FileSystemPtr filesystem, 60 filesystem::FileSystemPtr filesystem,
61 scoped_ptr<PrefFilter> pref_filter) 61 std::unique_ptr<PrefFilter> pref_filter)
62 : path_(pref_filename), 62 : path_(pref_filename),
63 binding_(this), 63 binding_(this),
64 filesystem_(std::move(filesystem)), 64 filesystem_(std::move(filesystem)),
65 prefs_(new base::DictionaryValue()), 65 prefs_(new base::DictionaryValue()),
66 read_only_(false), 66 read_only_(false),
67 pref_filter_(std::move(pref_filter)), 67 pref_filter_(std::move(pref_filter)),
68 initialized_(false), 68 initialized_(false),
69 filtering_in_progress_(false), 69 filtering_in_progress_(false),
70 pending_lossy_write_(false), 70 pending_lossy_write_(false),
71 read_error_(PREF_READ_ERROR_NONE) { 71 read_error_(PREF_READ_ERROR_NONE) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 } 110 }
111 111
112 bool FilesystemJsonPrefStore::GetMutableValue(const std::string& key, 112 bool FilesystemJsonPrefStore::GetMutableValue(const std::string& key,
113 base::Value** result) { 113 base::Value** result) {
114 DCHECK(CalledOnValidThread()); 114 DCHECK(CalledOnValidThread());
115 115
116 return prefs_->Get(key, result); 116 return prefs_->Get(key, result);
117 } 117 }
118 118
119 void FilesystemJsonPrefStore::SetValue(const std::string& key, 119 void FilesystemJsonPrefStore::SetValue(const std::string& key,
120 scoped_ptr<base::Value> value, 120 std::unique_ptr<base::Value> value,
121 uint32_t flags) { 121 uint32_t flags) {
122 DCHECK(CalledOnValidThread()); 122 DCHECK(CalledOnValidThread());
123 123
124 DCHECK(value); 124 DCHECK(value);
125 base::Value* old_value = nullptr; 125 base::Value* old_value = nullptr;
126 prefs_->Get(key, &old_value); 126 prefs_->Get(key, &old_value);
127 if (!old_value || !value->Equals(old_value)) { 127 if (!old_value || !value->Equals(old_value)) {
128 prefs_->Set(key, std::move(value)); 128 prefs_->Set(key, std::move(value));
129 ReportValueChanged(key, flags); 129 ReportValueChanged(key, flags);
130 } 130 }
131 } 131 }
132 132
133 void FilesystemJsonPrefStore::SetValueSilently(const std::string& key, 133 void FilesystemJsonPrefStore::SetValueSilently(
134 scoped_ptr<base::Value> value, 134 const std::string& key,
135 uint32_t flags) { 135 std::unique_ptr<base::Value> value,
136 uint32_t flags) {
136 DCHECK(CalledOnValidThread()); 137 DCHECK(CalledOnValidThread());
137 138
138 DCHECK(value); 139 DCHECK(value);
139 base::Value* old_value = nullptr; 140 base::Value* old_value = nullptr;
140 prefs_->Get(key, &old_value); 141 prefs_->Get(key, &old_value);
141 if (!old_value || !value->Equals(old_value)) { 142 if (!old_value || !value->Equals(old_value)) {
142 prefs_->Set(key, std::move(value)); 143 prefs_->Set(key, std::move(value));
143 ScheduleWrite(flags); 144 ScheduleWrite(flags);
144 } 145 }
145 } 146 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 if (pref_filter_) 229 if (pref_filter_)
229 pref_filter_->FilterUpdate(key); 230 pref_filter_->FilterUpdate(key);
230 231
231 FOR_EACH_OBSERVER(PrefStore::Observer, observers_, OnPrefValueChanged(key)); 232 FOR_EACH_OBSERVER(PrefStore::Observer, observers_, OnPrefValueChanged(key));
232 233
233 ScheduleWrite(flags); 234 ScheduleWrite(flags);
234 } 235 }
235 236
236 void FilesystemJsonPrefStore::OnFileSystemShutdown() {} 237 void FilesystemJsonPrefStore::OnFileSystemShutdown() {}
237 238
238 void FilesystemJsonPrefStore::OnFileRead(scoped_ptr<ReadResult> read_result) { 239 void FilesystemJsonPrefStore::OnFileRead(
240 std::unique_ptr<ReadResult> read_result) {
239 DCHECK(CalledOnValidThread()); 241 DCHECK(CalledOnValidThread());
240 242
241 DCHECK(read_result); 243 DCHECK(read_result);
242 244
243 scoped_ptr<base::DictionaryValue> unfiltered_prefs(new base::DictionaryValue); 245 std::unique_ptr<base::DictionaryValue> unfiltered_prefs(
246 new base::DictionaryValue);
244 247
245 read_error_ = read_result->error; 248 read_error_ = read_result->error;
246 249
247 switch (read_error_) { 250 switch (read_error_) {
248 case PREF_READ_ERROR_ACCESS_DENIED: 251 case PREF_READ_ERROR_ACCESS_DENIED:
249 case PREF_READ_ERROR_FILE_OTHER: 252 case PREF_READ_ERROR_FILE_OTHER:
250 case PREF_READ_ERROR_FILE_LOCKED: 253 case PREF_READ_ERROR_FILE_LOCKED:
251 case PREF_READ_ERROR_JSON_TYPE: 254 case PREF_READ_ERROR_JSON_TYPE:
252 case PREF_READ_ERROR_FILE_NOT_SPECIFIED: 255 case PREF_READ_ERROR_FILE_NOT_SPECIFIED:
253 read_only_ = true; 256 read_only_ = true;
(...skipping 28 matching lines...) Expand all
282 FinalizeFileRead(std::move(unfiltered_prefs), false); 285 FinalizeFileRead(std::move(unfiltered_prefs), false);
283 } 286 }
284 } 287 }
285 288
286 FilesystemJsonPrefStore::~FilesystemJsonPrefStore() { 289 FilesystemJsonPrefStore::~FilesystemJsonPrefStore() {
287 // TODO(erg): Now that writing is asynchronous, we can't really async write 290 // TODO(erg): Now that writing is asynchronous, we can't really async write
288 // prefs at shutdown. See comment in CommitPendingWrite(). 291 // prefs at shutdown. See comment in CommitPendingWrite().
289 } 292 }
290 293
291 void FilesystemJsonPrefStore::FinalizeFileRead( 294 void FilesystemJsonPrefStore::FinalizeFileRead(
292 scoped_ptr<base::DictionaryValue> prefs, 295 std::unique_ptr<base::DictionaryValue> prefs,
293 bool schedule_write) { 296 bool schedule_write) {
294 DCHECK(CalledOnValidThread()); 297 DCHECK(CalledOnValidThread());
295 298
296 filtering_in_progress_ = false; 299 filtering_in_progress_ = false;
297 300
298 prefs_ = std::move(prefs); 301 prefs_ = std::move(prefs);
299 302
300 initialized_ = true; 303 initialized_ = true;
301 304
302 if (schedule_write) 305 if (schedule_write)
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 387
385 void FilesystemJsonPrefStore::OnPreferencesReadStart() { 388 void FilesystemJsonPrefStore::OnPreferencesReadStart() {
386 directory_->ReadEntireFile( 389 directory_->ReadEntireFile(
387 path_, 390 path_,
388 Bind(&FilesystemJsonPrefStore::OnPreferencesFileRead, AsWeakPtr())); 391 Bind(&FilesystemJsonPrefStore::OnPreferencesFileRead, AsWeakPtr()));
389 } 392 }
390 393
391 void FilesystemJsonPrefStore::OnPreferencesFileRead( 394 void FilesystemJsonPrefStore::OnPreferencesFileRead(
392 FileError err, 395 FileError err,
393 mojo::Array<uint8_t> contents) { 396 mojo::Array<uint8_t> contents) {
394 scoped_ptr<FilesystemJsonPrefStore::ReadResult> read_result( 397 std::unique_ptr<FilesystemJsonPrefStore::ReadResult> read_result(
395 new FilesystemJsonPrefStore::ReadResult); 398 new FilesystemJsonPrefStore::ReadResult);
396 // TODO(erg): Needs even better error handling. 399 // TODO(erg): Needs even better error handling.
397 switch (err) { 400 switch (err) {
398 case FileError::IN_USE: 401 case FileError::IN_USE:
399 case FileError::ACCESS_DENIED: 402 case FileError::ACCESS_DENIED:
400 case FileError::NOT_A_FILE: { 403 case FileError::NOT_A_FILE: {
401 read_only_ = true; 404 read_only_ = true;
402 break; 405 break;
403 } 406 }
404 case FileError::FAILED: 407 case FileError::FAILED:
(...skipping 10 matching lines...) Expand all
415 reinterpret_cast<char*>(&contents.front()), contents.size())); 418 reinterpret_cast<char*>(&contents.front()), contents.size()));
416 read_result->value = deserializer.Deserialize(&error_code, &error_msg); 419 read_result->value = deserializer.Deserialize(&error_code, &error_msg);
417 read_result->error = HandleReadErrors(read_result->value.get()); 420 read_result->error = HandleReadErrors(read_result->value.get());
418 } 421 }
419 } 422 }
420 423
421 OnFileRead(std::move(read_result)); 424 OnFileRead(std::move(read_result));
422 } 425 }
423 426
424 } // namespace filesystem 427 } // namespace filesystem
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698