diff options
Diffstat (limited to 'webkit/fileapi/file_system_path_manager.cc')
-rw-r--r-- | webkit/fileapi/file_system_path_manager.cc | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/webkit/fileapi/file_system_path_manager.cc b/webkit/fileapi/file_system_path_manager.cc deleted file mode 100644 index a6eb20f..0000000 --- a/webkit/fileapi/file_system_path_manager.cc +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "webkit/fileapi/file_system_path_manager.h" - -#include "base/rand_util.h" -#include "base/logging.h" -#include "base/memory/scoped_ptr.h" -#include "base/message_loop.h" -#include "base/message_loop_proxy.h" -#include "base/stringprintf.h" -#include "base/string_util.h" -#include "base/utf_string_conversions.h" -#include "googleurl/src/gurl.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebFileSystem.h" -#include "webkit/fileapi/file_system_util.h" -#include "webkit/fileapi/sandbox_mount_point_provider.h" -#include "webkit/glue/webkit_glue.h" - -#if defined(OS_CHROMEOS) -#include "webkit/chromeos/fileapi/cros_mount_point_provider.h" -#endif - -// We use some of WebKit types for conversions between origin identifiers -// and origin URLs. -using WebKit::WebFileSystem; - -using base::PlatformFileError; - -static const char kChromeScheme[] = "chrome"; -static const char kExtensionScheme[] = "chrome-extension"; - -namespace fileapi { - -FileSystemPathManager::FileSystemPathManager( - scoped_refptr<base::MessageLoopProxy> file_message_loop, - const FilePath& profile_path, - scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy, - bool is_incognito, - bool allow_file_access_from_files) - : is_incognito_(is_incognito), - allow_file_access_from_files_(allow_file_access_from_files), - sandbox_provider_( - new SandboxMountPointProvider( - ALLOW_THIS_IN_INITIALIZER_LIST(this), - file_message_loop, - profile_path)) { -#if defined(OS_CHROMEOS) - external_provider_.reset( - new chromeos::CrosMountPointProvider(special_storage_policy)); -#endif -} - -FileSystemPathManager::~FileSystemPathManager() {} - -void FileSystemPathManager::ValidateFileSystemRootAndGetURL( - const GURL& origin_url, fileapi::FileSystemType type, bool create, - const GetRootPathCallback& callback) { - FileSystemMountPointProvider* mount_point_provider = - GetMountPointProvider(type); - if (!mount_point_provider) { - callback.Run(false, FilePath(), std::string()); - return; - } - mount_point_provider->ValidateFileSystemRootAndGetURL( - origin_url, type, create, callback); -} - -FilePath FileSystemPathManager::ValidateFileSystemRootAndGetPathOnFileThread( - const GURL& origin_url, FileSystemType type, const FilePath& virtual_path, - bool create) { - FileSystemMountPointProvider* mount_point_provider = - GetMountPointProvider(type); - if (!mount_point_provider) - return FilePath(); - return mount_point_provider->ValidateFileSystemRootAndGetPathOnFileThread( - origin_url, type, virtual_path, create); -} - -bool FileSystemPathManager::IsAllowedScheme(const GURL& url) const { - // Basically we only accept http or https. We allow file:// URLs - // only if --allow-file-access-from-files flag is given. - return url.SchemeIs("http") || url.SchemeIs("https") || - url.SchemeIs(kExtensionScheme) || url.SchemeIs(kChromeScheme) || - (url.SchemeIsFile() && allow_file_access_from_files_); -} - -// static -std::string FileSystemPathManager::GetFileSystemTypeString( - fileapi::FileSystemType type) { - if (type == fileapi::kFileSystemTypeTemporary) - return fileapi::kTemporaryName; - else if (type == fileapi::kFileSystemTypePersistent) - return fileapi::kPersistentName; - else if (type == fileapi::kFileSystemTypeExternal) - return fileapi::kExternalName; - return std::string(); -} - -// Checks if a given |name| contains any restricted names/chars in it. -bool FileSystemPathManager::IsRestrictedFileName( - FileSystemType type, const FilePath& filename) { - FileSystemMountPointProvider* mount_point_provider = - GetMountPointProvider(type); - if (!mount_point_provider) - return true; - return mount_point_provider->IsRestrictedFileName(filename); -} - -// Checks if an origin has access to a particular filesystem type. -bool FileSystemPathManager::IsAccessAllowed( - const GURL& origin, FileSystemType type, const FilePath& virtual_path) { - FileSystemMountPointProvider* mount_point_provider = - GetMountPointProvider(type); - DCHECK(mount_point_provider); - return mount_point_provider->IsAccessAllowed(origin, type, virtual_path); -} - -FileSystemFileUtil* FileSystemPathManager::GetFileUtil( - FileSystemType type) const { - FileSystemMountPointProvider* mount_point_provider = - GetMountPointProvider(type); - DCHECK(mount_point_provider); - return mount_point_provider->GetFileUtil(); -} - -FileSystemMountPointProvider* FileSystemPathManager::GetMountPointProvider( - FileSystemType type) const { - switch (type) { - case kFileSystemTypeTemporary: - case kFileSystemTypePersistent: - return sandbox_provider(); - case kFileSystemTypeExternal: - return external_provider(); - case kFileSystemTypeUnknown: - default: - NOTREACHED(); - return NULL; - } -} - -} // namespace fileapi - -COMPILE_ASSERT(int(WebFileSystem::TypeTemporary) == \ - int(fileapi::kFileSystemTypeTemporary), mismatching_enums); -COMPILE_ASSERT(int(WebFileSystem::TypePersistent) == \ - int(fileapi::kFileSystemTypePersistent), mismatching_enums); -COMPILE_ASSERT(int(WebFileSystem::TypeExternal) == \ - int(fileapi::kFileSystemTypeExternal), mismatching_enums); |