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

Side by Side Diff: webkit/fileapi/syncable/local_file_sync_context.cc

Issue 12315004: Migrated sync_file_type and file_change from namespace fileapi to sync_file_system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 10 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 "webkit/fileapi/syncable/local_file_sync_context.h" 5 #include "webkit/fileapi/syncable/local_file_sync_context.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/platform_file.h" 9 #include "base/platform_file.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
11 #include "base/stl_util.h" 11 #include "base/stl_util.h"
12 #include "base/task_runner_util.h" 12 #include "base/task_runner_util.h"
13 #include "webkit/fileapi/file_system_context.h" 13 #include "webkit/fileapi/file_system_context.h"
14 #include "webkit/fileapi/file_system_file_util.h" 14 #include "webkit/fileapi/file_system_file_util.h"
15 #include "webkit/fileapi/file_system_operation_context.h" 15 #include "webkit/fileapi/file_system_operation_context.h"
16 #include "webkit/fileapi/file_system_task_runners.h" 16 #include "webkit/fileapi/file_system_task_runners.h"
17 #include "webkit/fileapi/local_file_system_operation.h" 17 #include "webkit/fileapi/local_file_system_operation.h"
18 #include "webkit/fileapi/syncable/file_change.h" 18 #include "webkit/fileapi/syncable/file_change.h"
19 #include "webkit/fileapi/syncable/local_file_change_tracker.h" 19 #include "webkit/fileapi/syncable/local_file_change_tracker.h"
20 #include "webkit/fileapi/syncable/local_origin_change_observer.h" 20 #include "webkit/fileapi/syncable/local_origin_change_observer.h"
21 #include "webkit/fileapi/syncable/sync_file_metadata.h" 21 #include "webkit/fileapi/syncable/sync_file_metadata.h"
22 #include "webkit/fileapi/syncable/syncable_file_operation_runner.h" 22 #include "webkit/fileapi/syncable/syncable_file_operation_runner.h"
23 #include "webkit/fileapi/syncable/syncable_file_system_util.h" 23 #include "webkit/fileapi/syncable/syncable_file_system_util.h"
24 24
25 using sync_file_system::FileChangeList;
26 using sync_file_system::SyncFileType;
27
25 namespace fileapi { 28 namespace fileapi {
26 29
27 namespace { 30 namespace {
28 const int kMaxConcurrentSyncableOperation = 3; 31 const int kMaxConcurrentSyncableOperation = 3;
29 const int kNotifyChangesDurationInSec = 1; 32 const int kNotifyChangesDurationInSec = 1;
30 const int kMaxURLsToFetchForLocalSync = 5; 33 const int kMaxURLsToFetchForLocalSync = 5;
31 } // namespace 34 } // namespace
32 35
33 LocalFileSyncContext::LocalFileSyncContext( 36 LocalFileSyncContext::LocalFileSyncContext(
34 base::SingleThreadTaskRunner* ui_task_runner, 37 base::SingleThreadTaskRunner* ui_task_runner,
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 // No need to register; fire the callback now. 169 // No need to register; fire the callback now.
167 ui_task_runner_->PostTask(FROM_HERE, on_syncable_callback); 170 ui_task_runner_->PostTask(FROM_HERE, on_syncable_callback);
168 return; 171 return;
169 } 172 }
170 url_waiting_sync_on_io_ = url; 173 url_waiting_sync_on_io_ = url;
171 url_syncable_callback_ = on_syncable_callback; 174 url_syncable_callback_ = on_syncable_callback;
172 } 175 }
173 176
174 void LocalFileSyncContext::ApplyRemoteChange( 177 void LocalFileSyncContext::ApplyRemoteChange(
175 FileSystemContext* file_system_context, 178 FileSystemContext* file_system_context,
176 const FileChange& change, 179 const sync_file_system::FileChange& change,
177 const base::FilePath& local_path, 180 const base::FilePath& local_path,
178 const FileSystemURL& url, 181 const FileSystemURL& url,
179 const SyncStatusCallback& callback) { 182 const SyncStatusCallback& callback) {
180 if (!io_task_runner_->RunsTasksOnCurrentThread()) { 183 if (!io_task_runner_->RunsTasksOnCurrentThread()) {
181 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 184 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
182 io_task_runner_->PostTask( 185 io_task_runner_->PostTask(
183 FROM_HERE, 186 FROM_HERE,
184 base::Bind(&LocalFileSyncContext::ApplyRemoteChange, this, 187 base::Bind(&LocalFileSyncContext::ApplyRemoteChange, this,
185 make_scoped_refptr(file_system_context), 188 make_scoped_refptr(file_system_context),
186 change, local_path, url, callback)); 189 change, local_path, url, callback));
187 return; 190 return;
188 } 191 }
189 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 192 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
190 DCHECK(!sync_status()->IsWritable(url)); 193 DCHECK(!sync_status()->IsWritable(url));
191 DCHECK(!sync_status()->IsWriting(url)); 194 DCHECK(!sync_status()->IsWriting(url));
192 LocalFileSystemOperation* operation = CreateFileSystemOperationForSync( 195 LocalFileSystemOperation* operation = CreateFileSystemOperationForSync(
193 file_system_context); 196 file_system_context);
194 DCHECK(operation); 197 DCHECK(operation);
195 FileSystemOperation::StatusCallback operation_callback = 198 FileSystemOperation::StatusCallback operation_callback =
196 base::Bind(&LocalFileSyncContext::DidApplyRemoteChange, 199 base::Bind(&LocalFileSyncContext::DidApplyRemoteChange,
197 this, url, callback); 200 this, url, callback);
198 switch (change.change()) { 201 switch (change.change()) {
199 case FileChange::FILE_CHANGE_ADD_OR_UPDATE: 202 case sync_file_system::FileChange::FILE_CHANGE_ADD_OR_UPDATE:
200 switch (change.file_type()) { 203 switch (change.file_type()) {
201 case SYNC_FILE_TYPE_FILE: 204 case sync_file_system::SYNC_FILE_TYPE_FILE:
202 DCHECK(!local_path.empty()); 205 DCHECK(!local_path.empty());
203 operation->CopyInForeignFile(local_path, url, operation_callback); 206 operation->CopyInForeignFile(local_path, url, operation_callback);
204 break; 207 break;
205 case SYNC_FILE_TYPE_DIRECTORY: 208 case sync_file_system::SYNC_FILE_TYPE_DIRECTORY:
206 operation->CreateDirectory( 209 operation->CreateDirectory(
207 url, false /* exclusive */, true /* recursive */, 210 url, false /* exclusive */, true /* recursive */,
208 operation_callback); 211 operation_callback);
209 break; 212 break;
210 case SYNC_FILE_TYPE_UNKNOWN: 213 case sync_file_system::SYNC_FILE_TYPE_UNKNOWN:
211 NOTREACHED() << "File type unknown for ADD_OR_UPDATE change"; 214 NOTREACHED() << "File type unknown for ADD_OR_UPDATE change";
212 } 215 }
213 break; 216 break;
214 case FileChange::FILE_CHANGE_DELETE: 217 case sync_file_system::FileChange::FILE_CHANGE_DELETE:
215 operation->Remove(url, true /* recursive */, operation_callback); 218 operation->Remove(url, true /* recursive */, operation_callback);
216 break; 219 break;
217 } 220 }
218 } 221 }
219 222
220 void LocalFileSyncContext::RecordFakeLocalChange( 223 void LocalFileSyncContext::RecordFakeLocalChange(
221 FileSystemContext* file_system_context, 224 FileSystemContext* file_system_context,
222 const fileapi::FileSystemURL& url, 225 const fileapi::FileSystemURL& url,
223 const fileapi::FileChange& change, 226 const sync_file_system::FileChange& change,
224 const fileapi::SyncStatusCallback& callback) { 227 const fileapi::SyncStatusCallback& callback) {
225 // This is called on UI thread and to be relayed to FILE thread. 228 // This is called on UI thread and to be relayed to FILE thread.
226 DCHECK(file_system_context); 229 DCHECK(file_system_context);
227 if (!file_system_context->task_runners()->file_task_runner()-> 230 if (!file_system_context->task_runners()->file_task_runner()->
228 RunsTasksOnCurrentThread()) { 231 RunsTasksOnCurrentThread()) {
229 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); 232 DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
230 file_system_context->task_runners()->file_task_runner()->PostTask( 233 file_system_context->task_runners()->file_task_runner()->PostTask(
231 FROM_HERE, 234 FROM_HERE,
232 base::Bind(&LocalFileSyncContext::RecordFakeLocalChange, 235 base::Bind(&LocalFileSyncContext::RecordFakeLocalChange,
233 this, make_scoped_refptr(file_system_context), 236 this, make_scoped_refptr(file_system_context),
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 url, 580 url,
578 &file_info, 581 &file_info,
579 &platform_path); 582 &platform_path);
580 if (status == SYNC_STATUS_OK && 583 if (status == SYNC_STATUS_OK &&
581 file_error != base::PLATFORM_FILE_OK && 584 file_error != base::PLATFORM_FILE_OK &&
582 file_error != base::PLATFORM_FILE_ERROR_NOT_FOUND) 585 file_error != base::PLATFORM_FILE_ERROR_NOT_FOUND)
583 status = PlatformFileErrorToSyncStatusCode(file_error); 586 status = PlatformFileErrorToSyncStatusCode(file_error);
584 587
585 DCHECK(!file_info.is_symbolic_link); 588 DCHECK(!file_info.is_symbolic_link);
586 589
587 SyncFileType file_type = SYNC_FILE_TYPE_FILE; 590 SyncFileType file_type = sync_file_system::SYNC_FILE_TYPE_FILE;
588 if (file_error == base::PLATFORM_FILE_ERROR_NOT_FOUND) 591 if (file_error == base::PLATFORM_FILE_ERROR_NOT_FOUND)
589 file_type = SYNC_FILE_TYPE_UNKNOWN; 592 file_type = sync_file_system::SYNC_FILE_TYPE_UNKNOWN;
590 else if (file_info.is_directory) 593 else if (file_info.is_directory)
591 file_type = SYNC_FILE_TYPE_DIRECTORY; 594 file_type = sync_file_system::SYNC_FILE_TYPE_DIRECTORY;
592 595
593 LocalFileSyncInfo sync_file_info; 596 LocalFileSyncInfo sync_file_info;
594 sync_file_info.url = url; 597 sync_file_info.url = url;
595 sync_file_info.local_file_path = platform_path; 598 sync_file_info.local_file_path = platform_path;
596 sync_file_info.metadata.file_type = file_type; 599 sync_file_info.metadata.file_type = file_type;
597 sync_file_info.metadata.size = file_info.size; 600 sync_file_info.metadata.size = file_info.size;
598 sync_file_info.metadata.last_modified = file_info.last_modified; 601 sync_file_info.metadata.last_modified = file_info.last_modified;
599 sync_file_info.changes = changes; 602 sync_file_info.changes = changes;
600 603
601 ui_task_runner_->PostTask(FROM_HERE, 604 ui_task_runner_->PostTask(FROM_HERE,
(...skipping 22 matching lines...) Expand all
624 } 627 }
625 628
626 void LocalFileSyncContext::DidGetFileMetadata( 629 void LocalFileSyncContext::DidGetFileMetadata(
627 const SyncFileMetadataCallback& callback, 630 const SyncFileMetadataCallback& callback,
628 base::PlatformFileError file_error, 631 base::PlatformFileError file_error,
629 const base::PlatformFileInfo& file_info, 632 const base::PlatformFileInfo& file_info,
630 const base::FilePath& platform_path) { 633 const base::FilePath& platform_path) {
631 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 634 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
632 SyncFileMetadata metadata; 635 SyncFileMetadata metadata;
633 if (file_error == base::PLATFORM_FILE_OK) { 636 if (file_error == base::PLATFORM_FILE_OK) {
634 metadata.file_type = file_info.is_directory ? SYNC_FILE_TYPE_DIRECTORY 637 metadata.file_type = file_info.is_directory ?
635 : SYNC_FILE_TYPE_FILE; 638 sync_file_system::SYNC_FILE_TYPE_DIRECTORY :
639 sync_file_system::SYNC_FILE_TYPE_FILE;
636 metadata.size = file_info.size; 640 metadata.size = file_info.size;
637 metadata.last_modified = file_info.last_modified; 641 metadata.last_modified = file_info.last_modified;
638 } 642 }
639 ui_task_runner_->PostTask( 643 ui_task_runner_->PostTask(
640 FROM_HERE, 644 FROM_HERE,
641 base::Bind(callback, 645 base::Bind(callback,
642 PlatformFileErrorToSyncStatusCode(file_error), 646 PlatformFileErrorToSyncStatusCode(file_error),
643 metadata)); 647 metadata));
644 } 648 }
645 649
646 base::TimeDelta LocalFileSyncContext::NotifyChangesDuration() { 650 base::TimeDelta LocalFileSyncContext::NotifyChangesDuration() {
647 if (mock_notify_changes_duration_in_sec_ >= 0) 651 if (mock_notify_changes_duration_in_sec_ >= 0)
648 return base::TimeDelta::FromSeconds(mock_notify_changes_duration_in_sec_); 652 return base::TimeDelta::FromSeconds(mock_notify_changes_duration_in_sec_);
649 return base::TimeDelta::FromSeconds(kNotifyChangesDurationInSec); 653 return base::TimeDelta::FromSeconds(kNotifyChangesDurationInSec);
650 } 654 }
651 655
652 } // namespace fileapi 656 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/fileapi/syncable/local_file_sync_context.h ('k') | webkit/fileapi/syncable/local_file_sync_context_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698