OLD | NEW |
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 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 void FilesystemJsonPrefStore::PerformWrite() { | 320 void FilesystemJsonPrefStore::PerformWrite() { |
321 if (!directory_) { | 321 if (!directory_) { |
322 OpenFilesystem( | 322 OpenFilesystem( |
323 Bind(&FilesystemJsonPrefStore::OnTempFileWriteStart, AsWeakPtr())); | 323 Bind(&FilesystemJsonPrefStore::OnTempFileWriteStart, AsWeakPtr())); |
324 } else { | 324 } else { |
325 OnTempFileWriteStart(); | 325 OnTempFileWriteStart(); |
326 } | 326 } |
327 } | 327 } |
328 | 328 |
329 void FilesystemJsonPrefStore::OpenFilesystem(base::Closure callback) { | 329 void FilesystemJsonPrefStore::OpenFilesystem(base::Closure callback) { |
| 330 filesystem::FileSystemClientPtr client; |
| 331 binding_.Bind(GetProxy(&client)); |
| 332 |
330 filesystem_->OpenFileSystem( | 333 filesystem_->OpenFileSystem( |
331 "origin", GetProxy(&directory_), binding_.CreateInterfacePtrAndBind(), | 334 "origin", GetProxy(&directory_), std::move(client), |
332 base::Bind(&FilesystemJsonPrefStore::OnOpenFilesystem, AsWeakPtr(), | 335 base::Bind(&FilesystemJsonPrefStore::OnOpenFilesystem, AsWeakPtr(), |
333 callback)); | 336 callback)); |
334 } | 337 } |
335 | 338 |
336 void FilesystemJsonPrefStore::OnOpenFilesystem(base::Closure callback, | 339 void FilesystemJsonPrefStore::OnOpenFilesystem(base::Closure callback, |
337 FileError err) { | 340 FileError err) { |
338 if (err != FileError::OK) { | 341 if (err != FileError::OK) { |
339 // Do real error checking. | 342 // Do real error checking. |
340 NOTIMPLEMENTED(); | 343 NOTIMPLEMENTED(); |
341 return; | 344 return; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 mojo::Array<uint8_t> contents) { | 421 mojo::Array<uint8_t> contents) { |
419 scoped_ptr<FilesystemJsonPrefStore::ReadResult> read_result( | 422 scoped_ptr<FilesystemJsonPrefStore::ReadResult> read_result( |
420 new FilesystemJsonPrefStore::ReadResult); | 423 new FilesystemJsonPrefStore::ReadResult); |
421 // TODO(erg): Needs even better error handling. | 424 // TODO(erg): Needs even better error handling. |
422 switch (err) { | 425 switch (err) { |
423 case FileError::IN_USE: | 426 case FileError::IN_USE: |
424 case FileError::ACCESS_DENIED: { | 427 case FileError::ACCESS_DENIED: { |
425 read_only_ = true; | 428 read_only_ = true; |
426 break; | 429 break; |
427 } | 430 } |
428 case FileError::FAILED: | |
429 case FileError::NOT_FOUND: { | 431 case FileError::NOT_FOUND: { |
430 // If the file just doesn't exist, maybe this is the first run. Just | 432 // If the file just doesn't exist, maybe this is the first run. Just |
431 // don't pass a value. | 433 // don't pass a value. |
432 read_result->error = PREF_READ_ERROR_NO_FILE; | 434 read_result->error = PREF_READ_ERROR_NO_FILE; |
433 break; | 435 break; |
434 } | 436 } |
435 default: { | 437 default: { |
436 int error_code; | 438 int error_code; |
437 std::string error_msg; | 439 std::string error_msg; |
438 JSONStringValueDeserializer deserializer(base::StringPiece( | 440 JSONStringValueDeserializer deserializer(base::StringPiece( |
439 reinterpret_cast<char*>(&contents.front()), contents.size())); | 441 reinterpret_cast<char*>(&contents.front()), contents.size())); |
440 read_result->value = deserializer.Deserialize(&error_code, &error_msg); | 442 read_result->value = deserializer.Deserialize(&error_code, &error_msg); |
441 read_result->error = HandleReadErrors(read_result->value.get()); | 443 read_result->error = HandleReadErrors(read_result->value.get()); |
442 } | 444 } |
443 } | 445 } |
444 | 446 |
445 preferences_file_.reset(); | 447 preferences_file_.reset(); |
446 | 448 |
447 OnFileRead(std::move(read_result)); | 449 OnFileRead(std::move(read_result)); |
448 } | 450 } |
449 | 451 |
450 } // namespace filesystem | 452 } // namespace filesystem |
OLD | NEW |