diff options
author | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-22 10:13:29 +0000 |
---|---|---|
committer | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-22 10:13:29 +0000 |
commit | d1bd77e0ffdd3b798e304f2af52a6caf923de454 (patch) | |
tree | 2c9687b58f48c2e7ae6d02105c7be67a8b2a1f4e | |
parent | 12c99ab07047534e4e1abbc49890c92e0d86db2c (diff) | |
download | chromium_src-d1bd77e0ffdd3b798e304f2af52a6caf923de454.zip chromium_src-d1bd77e0ffdd3b798e304f2af52a6caf923de454.tar.gz chromium_src-d1bd77e0ffdd3b798e304f2af52a6caf923de454.tar.bz2 |
Some clean-up in chromeos::FileSystemBackend.
* Removes special permission for chrome:// scheme. In the very old days the file
manager app was runnnig in chrome://files, but now it is not. No client is
accessing file systems from chrome:// web UI scheme.
* Gets rid of unused #include and forward declarations.
* Rewrites dispatches by file system types to switch() from sequence of if()'s.
BUG=none
Review URL: https://codereview.chromium.org/246583003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265221 0039d316-1c4b-4281-b951-d872f2087c98
4 files changed, 46 insertions, 66 deletions
diff --git a/chrome/browser/chromeos/fileapi/file_system_backend.cc b/chrome/browser/chromeos/fileapi/file_system_backend.cc index 78a5fd8..62ced14 100644 --- a/chrome/browser/chromeos/fileapi/file_system_backend.cc +++ b/chrome/browser/chromeos/fileapi/file_system_backend.cc @@ -6,10 +6,7 @@ #include "base/logging.h" #include "base/memory/scoped_ptr.h" -#include "base/message_loop/message_loop.h" #include "base/strings/stringprintf.h" -#include "base/strings/utf_string_conversions.h" -#include "base/synchronization/lock.h" #include "chrome/browser/chromeos/fileapi/file_access_permissions.h" #include "chrome/browser/chromeos/fileapi/file_system_backend_delegate.h" #include "chromeos/dbus/cros_disks_client.h" @@ -21,13 +18,6 @@ #include "webkit/browser/fileapi/file_system_operation.h" #include "webkit/browser/fileapi/file_system_operation_context.h" #include "webkit/browser/fileapi/file_system_url.h" -#include "webkit/browser/fileapi/isolated_context.h" - -namespace { - -const char kChromeUIScheme[] = "chrome"; - -} // namespace namespace chromeos { @@ -152,11 +142,6 @@ bool FileSystemBackend::IsAccessAllowed( if (!url.is_valid()) return false; - // Permit access to mount points from internal WebUI. - const GURL& origin_url = url.origin(); - if (origin_url.SchemeIs(kChromeUIScheme)) - return true; - // No extra check is needed for isolated file systems. if (url.mount_type() == fileapi::kFileSystemTypeIsolated) return true; @@ -164,7 +149,7 @@ bool FileSystemBackend::IsAccessAllowed( if (!CanHandleURL(url)) return false; - std::string extension_id = origin_url.host(); + std::string extension_id = url.origin().host(); // TODO(mtomasz): Temporarily whitelist TimeScapes. Remove this in M-31. // See: crbug.com/271946 if (extension_id == "mlbmkoenclnokonejhlfakkeabdlmpek" && @@ -232,14 +217,18 @@ std::vector<base::FilePath> FileSystemBackend::GetRootDirectories() const { fileapi::AsyncFileUtil* FileSystemBackend::GetAsyncFileUtil( fileapi::FileSystemType type) { - if (type == fileapi::kFileSystemTypeDrive) - return drive_delegate_->GetAsyncFileUtil(type); - if (type == fileapi::kFileSystemTypeProvided) - return file_system_provider_delegate_->GetAsyncFileUtil(type); - - DCHECK(type == fileapi::kFileSystemTypeNativeLocal || - type == fileapi::kFileSystemTypeRestrictedNativeLocal); - return local_file_util_.get(); + switch (type) { + case fileapi::kFileSystemTypeDrive: + return drive_delegate_->GetAsyncFileUtil(type); + case fileapi::kFileSystemTypeProvided: + return file_system_provider_delegate_->GetAsyncFileUtil(type); + case fileapi::kFileSystemTypeNativeLocal: + case fileapi::kFileSystemTypeRestrictedNativeLocal: + return local_file_util_.get(); + default: + NOTREACHED(); + } + return NULL; } fileapi::CopyOrMoveFileValidatorFactory* @@ -285,19 +274,22 @@ FileSystemBackend::CreateFileStreamReader( if (!IsAccessAllowed(url)) return scoped_ptr<webkit_blob::FileStreamReader>(); - if (url.type() == fileapi::kFileSystemTypeDrive) { - return drive_delegate_->CreateFileStreamReader( - url, offset, expected_modification_time, context); - } - - if (url.type() == fileapi::kFileSystemTypeProvided) { - return file_system_provider_delegate_->CreateFileStreamReader( - url, offset, expected_modification_time, context); + switch (url.type()) { + case fileapi::kFileSystemTypeDrive: + return drive_delegate_->CreateFileStreamReader( + url, offset, expected_modification_time, context); + case fileapi::kFileSystemTypeProvided: + return file_system_provider_delegate_->CreateFileStreamReader( + url, offset, expected_modification_time, context); + case fileapi::kFileSystemTypeNativeLocal: + case fileapi::kFileSystemTypeRestrictedNativeLocal: + return scoped_ptr<webkit_blob::FileStreamReader>( + webkit_blob::FileStreamReader::CreateForFileSystemFile( + context, url, offset, expected_modification_time)); + default: + NOTREACHED(); } - - return scoped_ptr<webkit_blob::FileStreamReader>( - webkit_blob::FileStreamReader::CreateForFileSystemFile( - context, url, offset, expected_modification_time)); + return scoped_ptr<webkit_blob::FileStreamReader>(); } scoped_ptr<fileapi::FileStreamWriter> @@ -310,22 +302,24 @@ FileSystemBackend::CreateFileStreamWriter( if (!IsAccessAllowed(url)) return scoped_ptr<fileapi::FileStreamWriter>(); - if (url.type() == fileapi::kFileSystemTypeDrive) - return drive_delegate_->CreateFileStreamWriter(url, offset, context); - - if (url.type() == fileapi::kFileSystemTypeRestrictedNativeLocal) - return scoped_ptr<fileapi::FileStreamWriter>(); - - if (url.type() == fileapi::kFileSystemTypeProvided) { - return file_system_provider_delegate_->CreateFileStreamWriter( - url, offset, context); + switch (url.type()) { + case fileapi::kFileSystemTypeDrive: + return drive_delegate_->CreateFileStreamWriter(url, offset, context); + case fileapi::kFileSystemTypeProvided: + return file_system_provider_delegate_->CreateFileStreamWriter( + url, offset, context); + case fileapi::kFileSystemTypeNativeLocal: + return scoped_ptr<fileapi::FileStreamWriter>( + fileapi::FileStreamWriter::CreateForLocalFile( + context->default_file_task_runner(), url.path(), offset, + fileapi::FileStreamWriter::OPEN_EXISTING_FILE)); + case fileapi::kFileSystemTypeRestrictedNativeLocal: + // Restricted native local file system is read only. + return scoped_ptr<fileapi::FileStreamWriter>(); + default: + NOTREACHED(); } - - DCHECK(url.type() == fileapi::kFileSystemTypeNativeLocal); - return scoped_ptr<fileapi::FileStreamWriter>( - fileapi::FileStreamWriter::CreateForLocalFile( - context->default_file_task_runner(), url.path(), offset, - fileapi::FileStreamWriter::OPEN_EXISTING_FILE)); + return scoped_ptr<fileapi::FileStreamWriter>(); } bool FileSystemBackend::GetVirtualPath( diff --git a/chrome/browser/chromeos/fileapi/file_system_backend.h b/chrome/browser/chromeos/fileapi/file_system_backend.h index 409b36d..9578126 100644 --- a/chrome/browser/chromeos/fileapi/file_system_backend.h +++ b/chrome/browser/chromeos/fileapi/file_system_backend.h @@ -5,26 +5,21 @@ #ifndef CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_SYSTEM_BACKEND_H_ #define CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_SYSTEM_BACKEND_H_ -#include <map> #include <string> #include <vector> #include "base/compiler_specific.h" #include "base/files/file_path.h" #include "base/memory/scoped_ptr.h" -#include "base/synchronization/lock.h" #include "webkit/browser/fileapi/file_system_backend.h" #include "webkit/browser/quota/special_storage_policy.h" -#include "webkit/browser/webkit_storage_browser_export.h" #include "webkit/common/fileapi/file_system_types.h" namespace fileapi { class CopyOrMoveFileValidatorFactory; class ExternalMountPoints; -class FileSystemFileUtil; class FileSystemURL; -class IsolatedContext; -} +} // namespace fileapi namespace chromeos { diff --git a/chrome/browser/chromeos/fileapi/file_system_backend_delegate.h b/chrome/browser/chromeos/fileapi/file_system_backend_delegate.h index fbf048d..5fcda49 100644 --- a/chrome/browser/chromeos/fileapi/file_system_backend_delegate.h +++ b/chrome/browser/chromeos/fileapi/file_system_backend_delegate.h @@ -7,7 +7,6 @@ #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" -#include "base/platform_file.h" #include "webkit/common/fileapi/file_system_types.h" namespace base { @@ -17,7 +16,6 @@ class Time; namespace fileapi { class AsyncFileUtil; class FileSystemContext; -class FileSystemOperation; class FileSystemURL; class FileStreamWriter; } // namespace fileapi diff --git a/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc b/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc index bb4c747..2687ace 100644 --- a/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc +++ b/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc @@ -199,13 +199,6 @@ TEST(ChromeOSFileSystemBackendTest, AccessPermissions) { backend.RevokeAccessForExtension(extension); EXPECT_FALSE(backend.IsAccessAllowed( CreateFileSystemURL(extension, "removable/foo", mount_points.get()))); - - fileapi::FileSystemURL internal_url = FileSystemURL::CreateForTest( - GURL("chrome://foo"), - fileapi::kFileSystemTypeExternal, - base::FilePath(FPL("removable/"))); - // Internal WebUI should have full access. - EXPECT_TRUE(backend.IsAccessAllowed(internal_url)); } TEST(ChromeOSFileSystemBackendTest, GetVirtualPathConflictWithSystemPoints) { |