summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-22 10:13:29 +0000
committerkinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-22 10:13:29 +0000
commitd1bd77e0ffdd3b798e304f2af52a6caf923de454 (patch)
tree2c9687b58f48c2e7ae6d02105c7be67a8b2a1f4e
parent12c99ab07047534e4e1abbc49890c92e0d86db2c (diff)
downloadchromium_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
-rw-r--r--chrome/browser/chromeos/fileapi/file_system_backend.cc96
-rw-r--r--chrome/browser/chromeos/fileapi/file_system_backend.h7
-rw-r--r--chrome/browser/chromeos/fileapi/file_system_backend_delegate.h2
-rw-r--r--chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc7
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) {