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

Side by Side Diff: webkit/fileapi/file_system_operation.cc

Issue 9004019: Cleanup: Removing FileSystemPathManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 11 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) 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 "webkit/fileapi/file_system_operation.h" 5 #include "webkit/fileapi/file_system_operation.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/time.h" 8 #include "base/time.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "net/base/escape.h" 10 #include "net/base/escape.h"
11 #include "net/url_request/url_request_context.h" 11 #include "net/url_request/url_request_context.h"
12 #include "webkit/fileapi/file_system_callback_dispatcher.h" 12 #include "webkit/fileapi/file_system_callback_dispatcher.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_proxy.h" 14 #include "webkit/fileapi/file_system_file_util_proxy.h"
15 #include "webkit/fileapi/file_system_mount_point_provider.h"
15 #include "webkit/fileapi/file_system_operation_context.h" 16 #include "webkit/fileapi/file_system_operation_context.h"
16 #include "webkit/fileapi/file_system_path_manager.h"
17 #include "webkit/fileapi/file_system_quota_util.h" 17 #include "webkit/fileapi/file_system_quota_util.h"
18 #include "webkit/fileapi/file_system_types.h" 18 #include "webkit/fileapi/file_system_types.h"
19 #include "webkit/fileapi/file_system_util.h" 19 #include "webkit/fileapi/file_system_util.h"
20 #include "webkit/fileapi/file_writer_delegate.h" 20 #include "webkit/fileapi/file_writer_delegate.h"
21 #include "webkit/fileapi/local_file_util.h" 21 #include "webkit/fileapi/local_file_util.h"
22 #include "webkit/fileapi/quota_file_util.h" 22 #include "webkit/fileapi/quota_file_util.h"
23 #include "webkit/quota/quota_types.h" 23 #include "webkit/quota/quota_types.h"
24 24
25 namespace fileapi { 25 namespace fileapi {
26 26
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 94
95 DCHECK(file_system_context()); 95 DCHECK(file_system_context());
96 operation_context_.set_src_origin_url(origin_url); 96 operation_context_.set_src_origin_url(origin_url);
97 operation_context_.set_src_type(type); 97 operation_context_.set_src_type(type);
98 // TODO(ericu): We don't really need to make this call if !create. 98 // TODO(ericu): We don't really need to make this call if !create.
99 // Also, in the future we won't need it either way, as long as we do all 99 // Also, in the future we won't need it either way, as long as we do all
100 // permission+quota checks beforehand. We only need it now because we have to 100 // permission+quota checks beforehand. We only need it now because we have to
101 // create an unpredictable directory name. Without that, we could lazily 101 // create an unpredictable directory name. Without that, we could lazily
102 // create the root later on the first filesystem write operation, and just 102 // create the root later on the first filesystem write operation, and just
103 // return GetFileSystemRootURI() here. 103 // return GetFileSystemRootURI() here.
104 file_system_context()->path_manager()->ValidateFileSystemRootAndGetURL( 104 FileSystemMountPointProvider* mount_point_provider =
105 file_system_context()->GetMountPointProvider(type);
106 if (!mount_point_provider) {
107 DidGetRootPath(false, FilePath(), std::string());
108 delete this;
109 return;
110 }
111 mount_point_provider->ValidateFileSystemRootAndGetURL(
105 origin_url, type, create, 112 origin_url, type, create,
106 base::Bind(&FileSystemOperation::DidGetRootPath, 113 base::Bind(&FileSystemOperation::DidGetRootPath,
107 base::Owned(this))); 114 base::Owned(this)));
108 } 115 }
109 116
110 void FileSystemOperation::CreateFile(const GURL& path, 117 void FileSystemOperation::CreateFile(const GURL& path,
111 bool exclusive) { 118 bool exclusive) {
112 #ifndef NDEBUG 119 #ifndef NDEBUG
113 DCHECK(kOperationNone == pending_operation_); 120 DCHECK(kOperationNone == pending_operation_);
114 pending_operation_ = kOperationCreateFile; 121 pending_operation_ = kOperationCreateFile;
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 FilePath* virtual_path, FileSystemFileUtil** file_util) { 776 FilePath* virtual_path, FileSystemFileUtil** file_util) {
770 if (!VerifyFileSystemPath(path, origin_url, type, virtual_path, file_util)) 777 if (!VerifyFileSystemPath(path, origin_url, type, virtual_path, file_util))
771 return false; 778 return false;
772 779
773 // Any write access is disallowed on the root path. 780 // Any write access is disallowed on the root path.
774 if (virtual_path->value().length() == 0 || 781 if (virtual_path->value().length() == 0 ||
775 virtual_path->DirName().value() == virtual_path->value()) { 782 virtual_path->DirName().value() == virtual_path->value()) {
776 dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY); 783 dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY);
777 return false; 784 return false;
778 } 785 }
779 if (create && file_system_context()->path_manager()->IsRestrictedFileName( 786 if (create &&
780 *type, virtual_path->BaseName())) { 787 file_system_context()->GetMountPointProvider(*type)->IsRestrictedFileName(
788 virtual_path->BaseName())) {
781 dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY); 789 dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY);
782 return false; 790 return false;
783 } 791 }
784 792
785 return true; 793 return true;
786 } 794 }
787 795
788 bool FileSystemOperation::VerifyFileSystemPath( 796 bool FileSystemOperation::VerifyFileSystemPath(
789 const GURL& path, GURL* origin_url, FileSystemType* type, 797 const GURL& path, GURL* origin_url, FileSystemType* type,
790 FilePath* virtual_path, FileSystemFileUtil** file_util) { 798 FilePath* virtual_path, FileSystemFileUtil** file_util) {
791 DCHECK(file_system_context()); 799 DCHECK(file_system_context());
792 800
793 if (!CrackFileSystemURL(path, origin_url, type, virtual_path)) { 801 if (!CrackFileSystemURL(path, origin_url, type, virtual_path)) {
794 dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_INVALID_URL); 802 dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_INVALID_URL);
795 return false; 803 return false;
796 } 804 }
797 if (!file_system_context()->path_manager()->IsAccessAllowed( 805 if (!file_system_context()->GetMountPointProvider(*type)->IsAccessAllowed(
798 *origin_url, *type, *virtual_path)) { 806 *origin_url, *type, *virtual_path)) {
799 dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY); 807 dispatcher_->DidFail(base::PLATFORM_FILE_ERROR_SECURITY);
800 return false; 808 return false;
801 } 809 }
802 DCHECK(file_util); 810 DCHECK(file_util);
803 *file_util = file_system_context()->path_manager()->GetFileUtil(*type); 811 *file_util = file_system_context()->GetFileUtil(*type);
804 DCHECK(*file_util); 812 DCHECK(*file_util);
805 813
806 return true; 814 return true;
807 } 815 }
808 816
809 bool FileSystemOperation::SetupSrcContextForRead(const GURL& path) { 817 bool FileSystemOperation::SetupSrcContextForRead(const GURL& path) {
810 GURL origin_url; 818 GURL origin_url;
811 FileSystemType type; 819 FileSystemType type;
812 FileSystemFileUtil* file_util; 820 FileSystemFileUtil* file_util;
813 bool result = VerifyFileSystemPathForRead( 821 bool result = VerifyFileSystemPathForRead(
(...skipping 27 matching lines...) Expand all
841 bool result = VerifyFileSystemPathForWrite( 849 bool result = VerifyFileSystemPathForWrite(
842 path, create, &origin_url, &type, &dest_virtual_path_, &file_util); 850 path, create, &origin_url, &type, &dest_virtual_path_, &file_util);
843 operation_context_.set_dest_origin_url(origin_url); 851 operation_context_.set_dest_origin_url(origin_url);
844 operation_context_.set_dest_type(type); 852 operation_context_.set_dest_type(type);
845 if (!operation_context_.dest_file_util()) 853 if (!operation_context_.dest_file_util())
846 operation_context_.set_dest_file_util(file_util); 854 operation_context_.set_dest_file_util(file_util);
847 return result; 855 return result;
848 } 856 }
849 857
850 } // namespace fileapi 858 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/fileapi/file_system_mount_point_provider_unittest.cc ('k') | webkit/fileapi/file_system_operation_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698