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

Side by Side Diff: chrome/browser/sync_file_system/local/local_file_sync_context.cc

Issue 389983002: [SyncFS] Interface clean up around LocalfileSyncContext::GetFileForLocalSync (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/sync_file_system/local/local_file_sync_context.h" 5 #include "chrome/browser/sync_file_system/local/local_file_sync_context.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 FROM_HERE, 100 FROM_HERE,
101 base::Bind(&LocalFileSyncContext::ShutdownOnIOThread, this)); 101 base::Bind(&LocalFileSyncContext::ShutdownOnIOThread, this));
102 } 102 }
103 103
104 void LocalFileSyncContext::GetFileForLocalSync( 104 void LocalFileSyncContext::GetFileForLocalSync(
105 FileSystemContext* file_system_context, 105 FileSystemContext* file_system_context,
106 const LocalFileSyncInfoCallback& callback) { 106 const LocalFileSyncInfoCallback& callback) {
107 DCHECK(file_system_context); 107 DCHECK(file_system_context);
108 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 108 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
109 109
110 std::deque<FileSystemURL>* urls = new std::deque<FileSystemURL>; 110 base::PostTaskAndReplyWithResult(
111 file_system_context->default_file_task_runner()->PostTaskAndReply( 111 file_system_context->default_file_task_runner(),
112 FROM_HERE, 112 FROM_HERE,
113 base::Bind(&LocalFileSyncContext::GetNextURLsForSyncOnFileThread, 113 base::Bind(&LocalFileSyncContext::GetNextURLsForSyncOnFileThread,
114 this, make_scoped_refptr(file_system_context), 114 this, make_scoped_refptr(file_system_context)),
115 base::Unretained(urls)),
116 base::Bind(&LocalFileSyncContext::TryPrepareForLocalSync, 115 base::Bind(&LocalFileSyncContext::TryPrepareForLocalSync,
117 this, make_scoped_refptr(file_system_context), 116 this, make_scoped_refptr(file_system_context), callback));
118 base::Owned(urls), callback));
119 } 117 }
120 118
121 void LocalFileSyncContext::ClearChangesForURL( 119 void LocalFileSyncContext::ClearChangesForURL(
122 FileSystemContext* file_system_context, 120 FileSystemContext* file_system_context,
123 const FileSystemURL& url, 121 const FileSystemURL& url,
124 const base::Closure& done_callback) { 122 const base::Closure& done_callback) {
125 // This is initially called on UI thread and to be relayed to FILE thread. 123 // This is initially called on UI thread and to be relayed to FILE thread.
126 DCHECK(file_system_context); 124 DCHECK(file_system_context);
127 if (!file_system_context->default_file_task_runner()-> 125 if (!file_system_context->default_file_task_runner()->
128 RunsTasksOnCurrentThread()) { 126 RunsTasksOnCurrentThread()) {
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
755 753
756 StatusCallbackQueue& callback_queue = 754 StatusCallbackQueue& callback_queue =
757 pending_initialize_callbacks_[file_system_context]; 755 pending_initialize_callbacks_[file_system_context];
758 for (StatusCallbackQueue::iterator iter = callback_queue.begin(); 756 for (StatusCallbackQueue::iterator iter = callback_queue.begin();
759 iter != callback_queue.end(); ++iter) { 757 iter != callback_queue.end(); ++iter) {
760 ui_task_runner_->PostTask(FROM_HERE, base::Bind(*iter, status)); 758 ui_task_runner_->PostTask(FROM_HERE, base::Bind(*iter, status));
761 } 759 }
762 pending_initialize_callbacks_.erase(file_system_context); 760 pending_initialize_callbacks_.erase(file_system_context);
763 } 761 }
764 762
765 void LocalFileSyncContext::GetNextURLsForSyncOnFileThread( 763 scoped_ptr<LocalFileSyncContext::FileSystemURLQueue>
766 FileSystemContext* file_system_context, 764 LocalFileSyncContext::GetNextURLsForSyncOnFileThread(
767 std::deque<FileSystemURL>* urls) { 765 FileSystemContext* file_system_context) {
768 DCHECK(file_system_context); 766 DCHECK(file_system_context);
769 DCHECK(file_system_context->default_file_task_runner()-> 767 DCHECK(file_system_context->default_file_task_runner()->
770 RunsTasksOnCurrentThread()); 768 RunsTasksOnCurrentThread());
771 SyncFileSystemBackend* backend = 769 SyncFileSystemBackend* backend =
772 SyncFileSystemBackend::GetBackend(file_system_context); 770 SyncFileSystemBackend::GetBackend(file_system_context);
773 DCHECK(backend); 771 DCHECK(backend);
774 DCHECK(backend->change_tracker()); 772 DCHECK(backend->change_tracker());
773 scoped_ptr<FileSystemURLQueue> urls(new FileSystemURLQueue);
775 backend->change_tracker()->GetNextChangedURLs( 774 backend->change_tracker()->GetNextChangedURLs(
776 urls, kMaxURLsToFetchForLocalSync); 775 urls.get(), kMaxURLsToFetchForLocalSync);
777 } 776 }
peria 2014/07/14 10:08:37 no return
tzik 2014/07/14 10:23:36 Done. It's surprising that this code has passed th
778 777
779 void LocalFileSyncContext::TryPrepareForLocalSync( 778 void LocalFileSyncContext::TryPrepareForLocalSync(
780 FileSystemContext* file_system_context, 779 FileSystemContext* file_system_context,
781 std::deque<FileSystemURL>* urls, 780 const LocalFileSyncInfoCallback& callback,
782 const LocalFileSyncInfoCallback& callback) { 781 scoped_ptr<FileSystemURLQueue> urls) {
783 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 782 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
784 DCHECK(urls); 783 DCHECK(urls);
785 784
786 if (shutdown_on_ui_) { 785 if (shutdown_on_ui_) {
787 callback.Run(SYNC_STATUS_ABORT, LocalFileSyncInfo(), 786 callback.Run(SYNC_STATUS_ABORT, LocalFileSyncInfo(),
788 webkit_blob::ScopedFile()); 787 webkit_blob::ScopedFile());
789 return; 788 return;
790 } 789 }
791 790
792 if (urls->empty()) { 791 if (urls->empty()) {
793 callback.Run(SYNC_STATUS_NO_CHANGE_TO_SYNC, LocalFileSyncInfo(), 792 callback.Run(SYNC_STATUS_NO_CHANGE_TO_SYNC, LocalFileSyncInfo(),
794 webkit_blob::ScopedFile()); 793 webkit_blob::ScopedFile());
795 return; 794 return;
796 } 795 }
797 796
798 const FileSystemURL url = urls->front(); 797 const FileSystemURL url = urls->front();
799 urls->pop_front(); 798 urls->pop_front();
800 std::deque<FileSystemURL>* remaining = new std::deque<FileSystemURL>;
801 remaining->swap(*urls);
802 799
803 PrepareForSync( 800 PrepareForSync(
804 file_system_context, url, SYNC_SNAPSHOT, 801 file_system_context, url, SYNC_SNAPSHOT,
805 base::Bind(&LocalFileSyncContext::DidTryPrepareForLocalSync, 802 base::Bind(&LocalFileSyncContext::DidTryPrepareForLocalSync,
806 this, make_scoped_refptr(file_system_context), 803 this, make_scoped_refptr(file_system_context),
807 base::Owned(remaining), callback)); 804 base::Passed(&urls), callback));
808 } 805 }
809 806
810 void LocalFileSyncContext::DidTryPrepareForLocalSync( 807 void LocalFileSyncContext::DidTryPrepareForLocalSync(
811 FileSystemContext* file_system_context, 808 FileSystemContext* file_system_context,
812 std::deque<FileSystemURL>* remaining_urls, 809 scoped_ptr<FileSystemURLQueue> remaining_urls,
813 const LocalFileSyncInfoCallback& callback, 810 const LocalFileSyncInfoCallback& callback,
814 SyncStatusCode status, 811 SyncStatusCode status,
815 const LocalFileSyncInfo& sync_file_info, 812 const LocalFileSyncInfo& sync_file_info,
816 webkit_blob::ScopedFile snapshot) { 813 webkit_blob::ScopedFile snapshot) {
817 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 814 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
818 if (status != SYNC_STATUS_FILE_BUSY) { 815 if (status != SYNC_STATUS_FILE_BUSY) {
819 callback.Run(status, sync_file_info, snapshot.Pass()); 816 callback.Run(status, sync_file_info, snapshot.Pass());
820 return; 817 return;
821 } 818 }
822 // Recursively call TryPrepareForLocalSync with remaining_urls. 819 // Recursively call TryPrepareForLocalSync with remaining_urls.
823 TryPrepareForLocalSync(file_system_context, remaining_urls, callback); 820 TryPrepareForLocalSync(file_system_context, callback, remaining_urls.Pass());
824 } 821 }
825 822
826 void LocalFileSyncContext::DidGetWritingStatusForSync( 823 void LocalFileSyncContext::DidGetWritingStatusForSync(
827 FileSystemContext* file_system_context, 824 FileSystemContext* file_system_context,
828 SyncStatusCode status, 825 SyncStatusCode status,
829 const FileSystemURL& url, 826 const FileSystemURL& url,
830 SyncMode sync_mode, 827 SyncMode sync_mode,
831 const LocalFileSyncInfoCallback& callback) { 828 const LocalFileSyncInfoCallback& callback) {
832 // This gets called on UI thread and relays the task on FILE thread. 829 // This gets called on UI thread and relays the task on FILE thread.
833 DCHECK(file_system_context); 830 DCHECK(file_system_context);
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 return; 996 return;
1000 } 997 }
1001 998
1002 FileSystemURL url_for_sync = CreateSyncableFileSystemURLForSync( 999 FileSystemURL url_for_sync = CreateSyncableFileSystemURLForSync(
1003 file_system_context, dest_url); 1000 file_system_context, dest_url);
1004 file_system_context->operation_runner()->CopyInForeignFile( 1001 file_system_context->operation_runner()->CopyInForeignFile(
1005 local_path, url_for_sync, callback); 1002 local_path, url_for_sync, callback);
1006 } 1003 }
1007 1004
1008 } // namespace sync_file_system 1005 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698