OLD | NEW |
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/canned_syncable_file_system.h" | 5 #include "chrome/browser/sync_file_system/local/canned_syncable_file_system.h" |
6 | 6 |
| 7 #include <stddef.h> |
| 8 |
7 #include <algorithm> | 9 #include <algorithm> |
8 #include <iterator> | 10 #include <iterator> |
9 | 11 |
10 #include "base/bind.h" | 12 #include "base/bind.h" |
11 #include "base/bind_helpers.h" | 13 #include "base/bind_helpers.h" |
12 #include "base/files/file.h" | 14 #include "base/files/file.h" |
13 #include "base/files/file_util.h" | 15 #include "base/files/file_util.h" |
14 #include "base/guid.h" | 16 #include "base/guid.h" |
| 17 #include "base/macros.h" |
15 #include "base/run_loop.h" | 18 #include "base/run_loop.h" |
16 #include "base/single_thread_task_runner.h" | 19 #include "base/single_thread_task_runner.h" |
17 #include "base/task_runner_util.h" | 20 #include "base/task_runner_util.h" |
18 #include "base/thread_task_runner_handle.h" | 21 #include "base/thread_task_runner_handle.h" |
19 #include "base/trace_event/trace_event.h" | 22 #include "base/trace_event/trace_event.h" |
20 #include "chrome/browser/sync_file_system/file_change.h" | 23 #include "chrome/browser/sync_file_system/file_change.h" |
21 #include "chrome/browser/sync_file_system/local/local_file_change_tracker.h" | 24 #include "chrome/browser/sync_file_system/local/local_file_change_tracker.h" |
22 #include "chrome/browser/sync_file_system/local/local_file_sync_context.h" | 25 #include "chrome/browser/sync_file_system/local/local_file_sync_context.h" |
23 #include "chrome/browser/sync_file_system/local/sync_file_system_backend.h" | 26 #include "chrome/browser/sync_file_system/local/sync_file_system_backend.h" |
24 #include "chrome/browser/sync_file_system/syncable_file_system_util.h" | 27 #include "chrome/browser/sync_file_system/syncable_file_system_util.h" |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 | 164 |
162 ~WriteHelper() { | 165 ~WriteHelper() { |
163 if (request_context_) { | 166 if (request_context_) { |
164 base::ThreadTaskRunnerHandle::Get()->DeleteSoon( | 167 base::ThreadTaskRunnerHandle::Get()->DeleteSoon( |
165 FROM_HERE, request_context_.release()); | 168 FROM_HERE, request_context_.release()); |
166 } | 169 } |
167 } | 170 } |
168 | 171 |
169 ScopedTextBlob* scoped_text_blob() const { return blob_data_.get(); } | 172 ScopedTextBlob* scoped_text_blob() const { return blob_data_.get(); } |
170 | 173 |
171 void DidWrite(const base::Callback<void(int64 result)>& completion_callback, | 174 void DidWrite(const base::Callback<void(int64_t result)>& completion_callback, |
172 File::Error error, int64 bytes, bool complete) { | 175 File::Error error, |
| 176 int64_t bytes, |
| 177 bool complete) { |
173 if (error == base::File::FILE_OK) { | 178 if (error == base::File::FILE_OK) { |
174 bytes_written_ += bytes; | 179 bytes_written_ += bytes; |
175 if (!complete) | 180 if (!complete) |
176 return; | 181 return; |
177 } | 182 } |
178 completion_callback.Run(error == base::File::FILE_OK ? | 183 completion_callback.Run(error == base::File::FILE_OK |
179 bytes_written_ : static_cast<int64>(error)); | 184 ? bytes_written_ |
| 185 : static_cast<int64_t>(error)); |
180 } | 186 } |
181 | 187 |
182 private: | 188 private: |
183 int64 bytes_written_; | 189 int64_t bytes_written_; |
184 scoped_ptr<MockBlobURLRequestContext> request_context_; | 190 scoped_ptr<MockBlobURLRequestContext> request_context_; |
185 scoped_ptr<ScopedTextBlob> blob_data_; | 191 scoped_ptr<ScopedTextBlob> blob_data_; |
186 | 192 |
187 DISALLOW_COPY_AND_ASSIGN(WriteHelper); | 193 DISALLOW_COPY_AND_ASSIGN(WriteHelper); |
188 }; | 194 }; |
189 | 195 |
190 void DidGetUsageAndQuota(const storage::StatusCallback& callback, | 196 void DidGetUsageAndQuota(const storage::StatusCallback& callback, |
191 int64* usage_out, | 197 int64_t* usage_out, |
192 int64* quota_out, | 198 int64_t* quota_out, |
193 storage::QuotaStatusCode status, | 199 storage::QuotaStatusCode status, |
194 int64 usage, | 200 int64_t usage, |
195 int64 quota) { | 201 int64_t quota) { |
196 *usage_out = usage; | 202 *usage_out = usage; |
197 *quota_out = quota; | 203 *quota_out = quota; |
198 callback.Run(status); | 204 callback.Run(status); |
199 } | 205 } |
200 | 206 |
201 void EnsureLastTaskRuns(base::SingleThreadTaskRunner* runner) { | 207 void EnsureLastTaskRuns(base::SingleThreadTaskRunner* runner) { |
202 base::RunLoop run_loop; | 208 base::RunLoop run_loop; |
203 runner->PostTaskAndReply( | 209 runner->PostTaskAndReply( |
204 FROM_HERE, base::Bind(&base::DoNothing), run_loop.QuitClosure()); | 210 FROM_HERE, base::Bind(&base::DoNothing), run_loop.QuitClosure()); |
205 run_loop.Run(); | 211 run_loop.Run(); |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 File::Error CannedSyncableFileSystem::Move( | 372 File::Error CannedSyncableFileSystem::Move( |
367 const FileSystemURL& src_url, const FileSystemURL& dest_url) { | 373 const FileSystemURL& src_url, const FileSystemURL& dest_url) { |
368 return RunOnThread<File::Error>(io_task_runner_.get(), | 374 return RunOnThread<File::Error>(io_task_runner_.get(), |
369 FROM_HERE, | 375 FROM_HERE, |
370 base::Bind(&CannedSyncableFileSystem::DoMove, | 376 base::Bind(&CannedSyncableFileSystem::DoMove, |
371 base::Unretained(this), | 377 base::Unretained(this), |
372 src_url, | 378 src_url, |
373 dest_url)); | 379 dest_url)); |
374 } | 380 } |
375 | 381 |
376 File::Error CannedSyncableFileSystem::TruncateFile( | 382 File::Error CannedSyncableFileSystem::TruncateFile(const FileSystemURL& url, |
377 const FileSystemURL& url, int64 size) { | 383 int64_t size) { |
378 return RunOnThread<File::Error>( | 384 return RunOnThread<File::Error>( |
379 io_task_runner_.get(), | 385 io_task_runner_.get(), |
380 FROM_HERE, | 386 FROM_HERE, |
381 base::Bind(&CannedSyncableFileSystem::DoTruncateFile, | 387 base::Bind(&CannedSyncableFileSystem::DoTruncateFile, |
382 base::Unretained(this), | 388 base::Unretained(this), |
383 url, | 389 url, |
384 size)); | 390 size)); |
385 } | 391 } |
386 | 392 |
387 File::Error CannedSyncableFileSystem::TouchFile( | 393 File::Error CannedSyncableFileSystem::TouchFile( |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 FileEntryList* entries) { | 466 FileEntryList* entries) { |
461 return RunOnThread<File::Error>( | 467 return RunOnThread<File::Error>( |
462 io_task_runner_.get(), | 468 io_task_runner_.get(), |
463 FROM_HERE, | 469 FROM_HERE, |
464 base::Bind(&CannedSyncableFileSystem::DoReadDirectory, | 470 base::Bind(&CannedSyncableFileSystem::DoReadDirectory, |
465 base::Unretained(this), | 471 base::Unretained(this), |
466 url, | 472 url, |
467 entries)); | 473 entries)); |
468 } | 474 } |
469 | 475 |
470 int64 CannedSyncableFileSystem::Write( | 476 int64_t CannedSyncableFileSystem::Write( |
471 net::URLRequestContext* url_request_context, | 477 net::URLRequestContext* url_request_context, |
472 const FileSystemURL& url, | 478 const FileSystemURL& url, |
473 scoped_ptr<storage::BlobDataHandle> blob_data_handle) { | 479 scoped_ptr<storage::BlobDataHandle> blob_data_handle) { |
474 return RunOnThread<int64>(io_task_runner_.get(), | 480 return RunOnThread<int64_t>( |
475 FROM_HERE, | 481 io_task_runner_.get(), FROM_HERE, |
476 base::Bind(&CannedSyncableFileSystem::DoWrite, | 482 base::Bind(&CannedSyncableFileSystem::DoWrite, base::Unretained(this), |
477 base::Unretained(this), | 483 url_request_context, url, base::Passed(&blob_data_handle))); |
478 url_request_context, | |
479 url, | |
480 base::Passed(&blob_data_handle))); | |
481 } | 484 } |
482 | 485 |
483 int64 CannedSyncableFileSystem::WriteString( | 486 int64_t CannedSyncableFileSystem::WriteString(const FileSystemURL& url, |
484 const FileSystemURL& url, const std::string& data) { | 487 const std::string& data) { |
485 return RunOnThread<int64>(io_task_runner_.get(), | 488 return RunOnThread<int64_t>( |
486 FROM_HERE, | 489 io_task_runner_.get(), FROM_HERE, |
487 base::Bind(&CannedSyncableFileSystem::DoWriteString, | 490 base::Bind(&CannedSyncableFileSystem::DoWriteString, |
488 base::Unretained(this), | 491 base::Unretained(this), url, data)); |
489 url, | |
490 data)); | |
491 } | 492 } |
492 | 493 |
493 File::Error CannedSyncableFileSystem::DeleteFileSystem() { | 494 File::Error CannedSyncableFileSystem::DeleteFileSystem() { |
494 EXPECT_TRUE(is_filesystem_set_up_); | 495 EXPECT_TRUE(is_filesystem_set_up_); |
495 return RunOnThread<File::Error>( | 496 return RunOnThread<File::Error>( |
496 io_task_runner_.get(), | 497 io_task_runner_.get(), |
497 FROM_HERE, | 498 FROM_HERE, |
498 base::Bind(&FileSystemContext::DeleteFileSystem, | 499 base::Bind(&FileSystemContext::DeleteFileSystem, |
499 file_system_context_, | 500 file_system_context_, |
500 origin_, | 501 origin_, |
501 type_)); | 502 type_)); |
502 } | 503 } |
503 | 504 |
504 storage::QuotaStatusCode CannedSyncableFileSystem::GetUsageAndQuota( | 505 storage::QuotaStatusCode CannedSyncableFileSystem::GetUsageAndQuota( |
505 int64* usage, | 506 int64_t* usage, |
506 int64* quota) { | 507 int64_t* quota) { |
507 return RunOnThread<storage::QuotaStatusCode>( | 508 return RunOnThread<storage::QuotaStatusCode>( |
508 io_task_runner_.get(), | 509 io_task_runner_.get(), |
509 FROM_HERE, | 510 FROM_HERE, |
510 base::Bind(&CannedSyncableFileSystem::DoGetUsageAndQuota, | 511 base::Bind(&CannedSyncableFileSystem::DoGetUsageAndQuota, |
511 base::Unretained(this), | 512 base::Unretained(this), |
512 usage, | 513 usage, |
513 quota)); | 514 quota)); |
514 } | 515 } |
515 | 516 |
516 void CannedSyncableFileSystem::GetChangedURLsInTracker( | 517 void CannedSyncableFileSystem::GetChangedURLsInTracker( |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
603 void CannedSyncableFileSystem::DoMove( | 604 void CannedSyncableFileSystem::DoMove( |
604 const FileSystemURL& src_url, | 605 const FileSystemURL& src_url, |
605 const FileSystemURL& dest_url, | 606 const FileSystemURL& dest_url, |
606 const StatusCallback& callback) { | 607 const StatusCallback& callback) { |
607 EXPECT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); | 608 EXPECT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); |
608 EXPECT_TRUE(is_filesystem_opened_); | 609 EXPECT_TRUE(is_filesystem_opened_); |
609 operation_runner()->Move( | 610 operation_runner()->Move( |
610 src_url, dest_url, storage::FileSystemOperation::OPTION_NONE, callback); | 611 src_url, dest_url, storage::FileSystemOperation::OPTION_NONE, callback); |
611 } | 612 } |
612 | 613 |
613 void CannedSyncableFileSystem::DoTruncateFile( | 614 void CannedSyncableFileSystem::DoTruncateFile(const FileSystemURL& url, |
614 const FileSystemURL& url, int64 size, | 615 int64_t size, |
615 const StatusCallback& callback) { | 616 const StatusCallback& callback) { |
616 EXPECT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); | 617 EXPECT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); |
617 EXPECT_TRUE(is_filesystem_opened_); | 618 EXPECT_TRUE(is_filesystem_opened_); |
618 operation_runner()->Truncate(url, size, callback); | 619 operation_runner()->Truncate(url, size, callback); |
619 } | 620 } |
620 | 621 |
621 void CannedSyncableFileSystem::DoTouchFile( | 622 void CannedSyncableFileSystem::DoTouchFile( |
622 const FileSystemURL& url, | 623 const FileSystemURL& url, |
623 const base::Time& last_access_time, | 624 const base::Time& last_access_time, |
624 const base::Time& last_modified_time, | 625 const base::Time& last_modified_time, |
625 const StatusCallback& callback) { | 626 const StatusCallback& callback) { |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 MockBlobURLRequestContext* url_request_context( | 707 MockBlobURLRequestContext* url_request_context( |
707 new MockBlobURLRequestContext(file_system_context_.get())); | 708 new MockBlobURLRequestContext(file_system_context_.get())); |
708 WriteHelper* helper = new WriteHelper(url_request_context, data); | 709 WriteHelper* helper = new WriteHelper(url_request_context, data); |
709 operation_runner()->Write(url_request_context, url, | 710 operation_runner()->Write(url_request_context, url, |
710 helper->scoped_text_blob()->GetBlobDataHandle(), 0, | 711 helper->scoped_text_blob()->GetBlobDataHandle(), 0, |
711 base::Bind(&WriteHelper::DidWrite, | 712 base::Bind(&WriteHelper::DidWrite, |
712 base::Owned(helper), callback)); | 713 base::Owned(helper), callback)); |
713 } | 714 } |
714 | 715 |
715 void CannedSyncableFileSystem::DoGetUsageAndQuota( | 716 void CannedSyncableFileSystem::DoGetUsageAndQuota( |
716 int64* usage, | 717 int64_t* usage, |
717 int64* quota, | 718 int64_t* quota, |
718 const storage::StatusCallback& callback) { | 719 const storage::StatusCallback& callback) { |
719 // crbug.com/349708 | 720 // crbug.com/349708 |
720 TRACE_EVENT0("io", "CannedSyncableFileSystem::DoGetUsageAndQuota"); | 721 TRACE_EVENT0("io", "CannedSyncableFileSystem::DoGetUsageAndQuota"); |
721 | 722 |
722 EXPECT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); | 723 EXPECT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); |
723 EXPECT_TRUE(is_filesystem_opened_); | 724 EXPECT_TRUE(is_filesystem_opened_); |
724 DCHECK(quota_manager_.get()); | 725 DCHECK(quota_manager_.get()); |
725 quota_manager_->GetUsageAndQuota( | 726 quota_manager_->GetUsageAndQuota( |
726 origin_, storage_type(), | 727 origin_, storage_type(), |
727 base::Bind(&DidGetUsageAndQuota, callback, usage, quota)); | 728 base::Bind(&DidGetUsageAndQuota, callback, usage, quota)); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 sync_status_ = status; | 760 sync_status_ = status; |
760 quit_closure.Run(); | 761 quit_closure.Run(); |
761 } | 762 } |
762 | 763 |
763 void CannedSyncableFileSystem::InitializeSyncStatusObserver() { | 764 void CannedSyncableFileSystem::InitializeSyncStatusObserver() { |
764 ASSERT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); | 765 ASSERT_TRUE(io_task_runner_->RunsTasksOnCurrentThread()); |
765 backend()->sync_context()->sync_status()->AddObserver(this); | 766 backend()->sync_context()->sync_status()->AddObserver(this); |
766 } | 767 } |
767 | 768 |
768 } // namespace sync_file_system | 769 } // namespace sync_file_system |
OLD | NEW |