OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/file_util_proxy.h" | 5 #include "base/file_util_proxy.h" |
6 | 6 |
7 #include "base/message_loop_proxy.h" | 7 #include "base/message_loop_proxy.h" |
8 | 8 |
9 // TODO(jianli): Move the code from anonymous namespace to base namespace so | 9 // TODO(jianli): Move the code from anonymous namespace to base namespace so |
10 // that all of the base:: prefixes would be unnecessary. | 10 // that all of the base:: prefixes would be unnecessary. |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 | 462 |
463 private: | 463 private: |
464 base::FileUtilProxy::ReadDirectoryCallback* callback_; | 464 base::FileUtilProxy::ReadDirectoryCallback* callback_; |
465 FilePath file_path_; | 465 FilePath file_path_; |
466 std::vector<base::FileUtilProxy::Entry> entries_; | 466 std::vector<base::FileUtilProxy::Entry> entries_; |
467 }; | 467 }; |
468 | 468 |
469 class RelayGetFileInfo : public MessageLoopRelay { | 469 class RelayGetFileInfo : public MessageLoopRelay { |
470 public: | 470 public: |
471 RelayGetFileInfo(const FilePath& file_path, | 471 RelayGetFileInfo(const FilePath& file_path, |
472 base::FileUtilProxy::GetFileInfoCallback* callback) | 472 const base::FileUtilProxy::GetFileInfoCallback& callback) |
473 : callback_(callback), | 473 : callback_(callback), |
474 file_path_(file_path) { | 474 file_path_(file_path) { |
475 DCHECK(callback); | 475 DCHECK_EQ(false, callback.is_null()); |
476 } | 476 } |
477 | 477 |
478 protected: | 478 protected: |
479 virtual void RunWork() { | 479 virtual void RunWork() { |
480 if (!file_util::PathExists(file_path_)) { | 480 if (!file_util::PathExists(file_path_)) { |
481 set_error_code(base::PLATFORM_FILE_ERROR_NOT_FOUND); | 481 set_error_code(base::PLATFORM_FILE_ERROR_NOT_FOUND); |
482 return; | 482 return; |
483 } | 483 } |
484 if (!file_util::GetFileInfo(file_path_, &file_info_)) | 484 if (!file_util::GetFileInfo(file_path_, &file_info_)) |
485 set_error_code(base::PLATFORM_FILE_ERROR_FAILED); | 485 set_error_code(base::PLATFORM_FILE_ERROR_FAILED); |
486 } | 486 } |
487 | 487 |
488 virtual void RunCallback() { | 488 virtual void RunCallback() { |
489 callback_->Run(error_code(), file_info_); | 489 callback_.Run(error_code(), file_info_); |
490 delete callback_; | |
491 } | 490 } |
492 | 491 |
493 private: | 492 private: |
494 base::FileUtilProxy::GetFileInfoCallback* callback_; | 493 base::FileUtilProxy::GetFileInfoCallback callback_; |
495 FilePath file_path_; | 494 FilePath file_path_; |
496 base::PlatformFileInfo file_info_; | 495 base::PlatformFileInfo file_info_; |
497 }; | 496 }; |
498 | 497 |
499 class RelayGetFileInfoFromPlatformFile : public MessageLoopRelay { | 498 class RelayGetFileInfoFromPlatformFile : public MessageLoopRelay { |
500 public: | 499 public: |
501 RelayGetFileInfoFromPlatformFile( | 500 RelayGetFileInfoFromPlatformFile( |
502 base::PlatformFile file, | 501 base::PlatformFile file, |
503 base::FileUtilProxy::GetFileInfoCallback* callback) | 502 const base::FileUtilProxy::GetFileInfoCallback& callback) |
504 : callback_(callback), | 503 : callback_(callback), |
505 file_(file) { | 504 file_(file) { |
506 DCHECK(callback); | 505 DCHECK_EQ(false, callback.is_null()); |
507 } | 506 } |
508 | 507 |
509 protected: | 508 protected: |
510 virtual void RunWork() { | 509 virtual void RunWork() { |
511 if (!base::GetPlatformFileInfo(file_, &file_info_)) | 510 if (!base::GetPlatformFileInfo(file_, &file_info_)) |
512 set_error_code(base::PLATFORM_FILE_ERROR_FAILED); | 511 set_error_code(base::PLATFORM_FILE_ERROR_FAILED); |
513 } | 512 } |
514 | 513 |
515 virtual void RunCallback() { | 514 virtual void RunCallback() { |
516 callback_->Run(error_code(), file_info_); | 515 callback_.Run(error_code(), file_info_); |
517 delete callback_; | |
518 } | 516 } |
519 | 517 |
520 private: | 518 private: |
521 base::FileUtilProxy::GetFileInfoCallback* callback_; | 519 base::FileUtilProxy::GetFileInfoCallback callback_; |
522 base::PlatformFile file_; | 520 base::PlatformFile file_; |
523 base::PlatformFileInfo file_info_; | 521 base::PlatformFileInfo file_info_; |
524 }; | 522 }; |
525 | 523 |
526 class RelayRead : public MessageLoopRelay { | 524 class RelayRead : public MessageLoopRelay { |
527 public: | 525 public: |
528 RelayRead(base::PlatformFile file, | 526 RelayRead(base::PlatformFile file, |
529 int64 offset, | 527 int64 offset, |
530 int bytes_to_read, | 528 int bytes_to_read, |
531 base::FileUtilProxy::ReadCallback* callback) | 529 base::FileUtilProxy::ReadCallback* callback) |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 const EnsureFileExistsCallback& callback) { | 765 const EnsureFileExistsCallback& callback) { |
768 return Start(FROM_HERE, message_loop_proxy, new RelayEnsureFileExists( | 766 return Start(FROM_HERE, message_loop_proxy, new RelayEnsureFileExists( |
769 message_loop_proxy, file_path, callback)); | 767 message_loop_proxy, file_path, callback)); |
770 } | 768 } |
771 | 769 |
772 // Retrieves the information about a file. It is invalid to pass NULL for the | 770 // Retrieves the information about a file. It is invalid to pass NULL for the |
773 // callback. | 771 // callback. |
774 bool FileUtilProxy::GetFileInfo( | 772 bool FileUtilProxy::GetFileInfo( |
775 scoped_refptr<MessageLoopProxy> message_loop_proxy, | 773 scoped_refptr<MessageLoopProxy> message_loop_proxy, |
776 const FilePath& file_path, | 774 const FilePath& file_path, |
777 GetFileInfoCallback* callback) { | 775 const GetFileInfoCallback& callback) { |
778 return Start(FROM_HERE, message_loop_proxy, new RelayGetFileInfo( | 776 return Start(FROM_HERE, message_loop_proxy, new RelayGetFileInfo( |
779 file_path, callback)); | 777 file_path, callback)); |
780 } | 778 } |
781 | 779 |
782 // static | 780 // static |
783 bool FileUtilProxy::GetFileInfoFromPlatformFile( | 781 bool FileUtilProxy::GetFileInfoFromPlatformFile( |
784 scoped_refptr<MessageLoopProxy> message_loop_proxy, | 782 scoped_refptr<MessageLoopProxy> message_loop_proxy, |
785 PlatformFile file, | 783 PlatformFile file, |
786 GetFileInfoCallback* callback) { | 784 const GetFileInfoCallback& callback) { |
787 return Start(FROM_HERE, message_loop_proxy, | 785 return Start(FROM_HERE, message_loop_proxy, |
788 new RelayGetFileInfoFromPlatformFile(file, callback)); | 786 new RelayGetFileInfoFromPlatformFile(file, callback)); |
789 } | 787 } |
790 | 788 |
791 // static | 789 // static |
792 bool FileUtilProxy::ReadDirectory( | 790 bool FileUtilProxy::ReadDirectory( |
793 scoped_refptr<MessageLoopProxy> message_loop_proxy, | 791 scoped_refptr<MessageLoopProxy> message_loop_proxy, |
794 const FilePath& file_path, | 792 const FilePath& file_path, |
795 ReadDirectoryCallback* callback) { | 793 ReadDirectoryCallback* callback) { |
796 return Start(FROM_HERE, message_loop_proxy, new RelayReadDirectory( | 794 return Start(FROM_HERE, message_loop_proxy, new RelayReadDirectory( |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 | 919 |
922 // static | 920 // static |
923 bool FileUtilProxy::Flush( | 921 bool FileUtilProxy::Flush( |
924 scoped_refptr<MessageLoopProxy> message_loop_proxy, | 922 scoped_refptr<MessageLoopProxy> message_loop_proxy, |
925 PlatformFile file, | 923 PlatformFile file, |
926 StatusCallback* callback) { | 924 StatusCallback* callback) { |
927 return Start(FROM_HERE, message_loop_proxy, new RelayFlush(file, callback)); | 925 return Start(FROM_HERE, message_loop_proxy, new RelayFlush(file, callback)); |
928 } | 926 } |
929 | 927 |
930 } // namespace base | 928 } // namespace base |
OLD | NEW |