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

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_file_system.cc

Issue 9580016: Fixed remaining CL comments from review of http://codereview.chromium.org/9561009/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
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 "chrome/browser/chromeos/gdata/gdata_file_system.h" 5 #include "chrome/browser/chromeos/gdata/gdata_file_system.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/json/json_writer.h" 10 #include "base/json/json_writer.h"
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 base::PLATFORM_FILE_OK)); 451 base::PLATFORM_FILE_OK));
452 } 452 }
453 453
454 return; 454 return;
455 } 455 }
456 case FOUND_MISSING: { 456 case FOUND_MISSING: {
457 // There is a missing folder to be created here, move on with the rest of 457 // There is a missing folder to be created here, move on with the rest of
458 // this function. 458 // this function.
459 break; 459 break;
460 } 460 }
461 default: {
462 NOTREACHED();
463 break;
464 }
461 } 465 }
462 466
463 // Do we have a parent directory here as well? We can't then create target 467 // Do we have a parent directory here as well? We can't then create target
464 // directory if this is not a recursive operation. 468 // directory if this is not a recursive operation.
465 if (directory_path != first_missing_path && !is_recursive) { 469 if (directory_path != first_missing_path && !is_recursive) {
466 if (!callback.is_null()) { 470 if (!callback.is_null()) {
467 reply_proxy->PostTask(FROM_HERE, 471 reply_proxy->PostTask(FROM_HERE,
468 base::Bind(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND)); 472 base::Bind(callback, base::PLATFORM_FILE_ERROR_NOT_FOUND));
469 } 473 }
470 return; 474 return;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 if (error != base::PLATFORM_FILE_OK) { 571 if (error != base::PLATFORM_FILE_OK) {
568 if (!params.callback.is_null()) 572 if (!params.callback.is_null())
569 params.proxy->PostTask(FROM_HERE, base::Bind(params.callback, error)); 573 params.proxy->PostTask(FROM_HERE, base::Bind(params.callback, error));
570 574
571 return; 575 return;
572 } 576 }
573 577
574 // Not done yet with recursive directory creation? 578 // Not done yet with recursive directory creation?
575 if (params.target_directory_path != params.created_directory_path && 579 if (params.target_directory_path != params.created_directory_path &&
576 params.is_recursive) { 580 params.is_recursive) {
577 CreateDirectory(params.target_directory_path, 581 CreateDirectoryInternal(params.target_directory_path,
578 params.is_exclusive, 582 params.is_exclusive,
579 params.is_recursive, 583 params.is_recursive,
580 params.callback); 584 params.callback,
585 params.proxy);
581 return; 586 return;
582 } 587 }
583 588
584 if (!params.callback.is_null()) { 589 if (!params.callback.is_null()) {
585 // Finally done with the create request. 590 // Finally done with the create request.
586 params.proxy->PostTask(FROM_HERE, base::Bind(params.callback, 591 params.proxy->PostTask(FROM_HERE, base::Bind(params.callback,
587 base::PLATFORM_FILE_OK)); 592 base::PLATFORM_FILE_OK));
588 } 593 }
589 } 594 }
590 595
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 continue; 739 continue;
735 } 740 }
736 741
737 GDataFileBase* file = GDataFileBase::FromDocumentEntry(dir, doc); 742 GDataFileBase* file = GDataFileBase::FromDocumentEntry(dir, doc);
738 if (file) 743 if (file)
739 dir->AddFile(file); 744 dir->AddFile(file);
740 } 745 }
741 return base::PLATFORM_FILE_OK; 746 return base::PLATFORM_FILE_OK;
742 } 747 }
743 748
744
745 base::PlatformFileError GDataFileSystem::AddNewDirectory( 749 base::PlatformFileError GDataFileSystem::AddNewDirectory(
746 const FilePath& directory_path, base::Value* entry_value) { 750 const FilePath& directory_path, base::Value* entry_value) {
747 if (!entry_value) 751 if (!entry_value)
748 return base::PLATFORM_FILE_ERROR_FAILED; 752 return base::PLATFORM_FILE_ERROR_FAILED;
749 753
750 scoped_ptr<DocumentEntry> entry(DocumentEntry::CreateFrom(entry_value)); 754 scoped_ptr<DocumentEntry> entry(DocumentEntry::CreateFrom(entry_value));
751 755
752 if (!entry.get()) 756 if (!entry.get())
753 return base::PLATFORM_FILE_ERROR_FAILED; 757 return base::PLATFORM_FILE_ERROR_FAILED;
754 758
755 // We need to lock here as well (despite FindFileByPath lock) since directory 759 // We need to lock here as well (despite FindFileByPath lock) since directory
756 // instance below is a 'live' object. 760 // instance below is a 'live' object.
757 base::AutoLock lock(lock_); 761 base::AutoLock lock(lock_);
758 762
759 // Find parent directory element within the cached file system snapshot. 763 // Find parent directory element within the cached file system snapshot.
760 scoped_refptr<ReadOnlyFindFileDelegate> update_delegate( 764 scoped_refptr<ReadOnlyFindFileDelegate> update_delegate(
761 new ReadOnlyFindFileDelegate()); 765 new ReadOnlyFindFileDelegate());
762 UnsafeFindFileByPath(directory_path.DirName(), update_delegate); 766 UnsafeFindFileByPath(directory_path.DirName(), update_delegate);
763 767
764 GDataFileBase* file = update_delegate->file(); 768 GDataFileBase* file = update_delegate->file();
765 if (!file) 769 if (!file)
766 return base::PLATFORM_FILE_ERROR_FAILED; 770 return base::PLATFORM_FILE_ERROR_FAILED;
767 771
772 // Check if parent is a directory since in theory since this is a callback
773 // something could in the meantime have nuked the parent dir and created a
774 // file with the exact same name.
768 GDataDirectory* parent_dir = file->AsGDataDirectory(); 775 GDataDirectory* parent_dir = file->AsGDataDirectory();
769 if (!parent_dir) 776 if (!parent_dir)
770 return base::PLATFORM_FILE_ERROR_FAILED; 777 return base::PLATFORM_FILE_ERROR_FAILED;
771 778
772 GDataFileBase* new_file = GDataFileBase::FromDocumentEntry(parent_dir, 779 GDataFileBase* new_file = GDataFileBase::FromDocumentEntry(parent_dir,
773 entry.get()); 780 entry.get());
774 if (!new_file) 781 if (!new_file)
775 return base::PLATFORM_FILE_ERROR_FAILED; 782 return base::PLATFORM_FILE_ERROR_FAILED;
776 783
777 parent_dir->AddFile(new_file); 784 parent_dir->AddFile(new_file);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 840
834 GDataFileSystemFactory::~GDataFileSystemFactory() { 841 GDataFileSystemFactory::~GDataFileSystemFactory() {
835 } 842 }
836 843
837 ProfileKeyedService* GDataFileSystemFactory::BuildServiceInstanceFor( 844 ProfileKeyedService* GDataFileSystemFactory::BuildServiceInstanceFor(
838 Profile* profile) const { 845 Profile* profile) const {
839 return new GDataFileSystem(profile); 846 return new GDataFileSystem(profile);
840 } 847 }
841 848
842 } // namespace gdata 849 } // namespace gdata
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698