Index: webkit/fileapi/sandbox_mount_point_provider.h |
=================================================================== |
--- webkit/fileapi/sandbox_mount_point_provider.h (revision 0) |
+++ webkit/fileapi/sandbox_mount_point_provider.h (revision 0) |
@@ -0,0 +1,118 @@ |
+// 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. |
+ |
+#ifndef WEBKIT_FILEAPI_SANDBOX_MOUNT_POINT_PROVIDER_H_ |
+#define WEBKIT_FILEAPI_SANDBOX_MOUNT_POINT_PROVIDER_H_ |
+ |
+#include "base/file_path.h" |
+#include "googleurl/src/gurl.h" |
+#include "webkit/fileapi/file_system_mount_point_provider.h" |
+ |
+class GURL; |
+ |
+namespace base { |
+class MessageLoopProxy; |
+} |
+ |
+namespace fileapi { |
+ |
+class SandboxMountPointProvider : public FileSystemMountPointProvider { |
+ public: |
+ |
+ SandboxMountPointProvider( |
+ FileSystemPathManager* path_manager, |
+ scoped_refptr<base::MessageLoopProxy> file_message_loop, |
+ const FilePath& profile_path); |
+ |
+ // Checks if mount point access is allowed from |origin_url|. |
+ virtual bool IsAccessAllowed(const GURL& origin_url); |
+ |
+ // Retrieves the root path for the given |origin_url| and |type|, and |
+ // calls the given |callback| with the root path and name. |
+ // If |create| is true this also creates the directory if it doesn't exist. |
+ void GetFileSystemRootPath( |
+ const GURL& origin_url, |
+ FileSystemType type, |
+ bool create, |
+ FileSystemPathManager::GetRootPathCallback* callback); |
+ |
+ // Like GetFileSystemRootPath, but synchronous, and can be called only while |
+ // running on the file thread. |
+ FilePath GetFileSystemRootPathOnFileThread( |
+ const GURL& origin_url, |
+ FileSystemType type, |
+ bool create); |
+ |
+ // The FileSystem directory name. |
+ static const FilePath::CharType kFileSystemDirectory[]; |
+ |
+ static const char kPersistentName[]; |
+ static const char kTemporaryName[]; |
+ |
+ const FilePath& base_path() const { |
+ return base_path_; |
+ } |
+ |
+ // Checks if a given |name| contains any restricted names/chars in it. |
+ virtual bool IsRestrictedFileName(const FilePath& filename) const; |
+ |
+ // Returns the origin identifier string, which is used as a part of the |
+ // sandboxed path component, for the given |url|. |
+ static std::string GetOriginIdentifierFromURL(const GURL& url); |
+ |
+ // Gets a base directory path of the sandboxed filesystem that is |
+ // specified by |origin_identifier| and |type|. |
+ // |base_path| must be pointing the FileSystem's data directory |
+ // under the profile directory, i.e. <profile_dir>/kFileSystemDirectory. |
+ // Returns an empty path if any of the given parameters are invalid. |
+ // Returned directory path does not contain 'unique' part, therefore |
+ // it is not an actual root path for the filesystem. |
+ static FilePath GetFileSystemBaseDirectoryForOriginAndType( |
+ const FilePath& base_path, |
+ const std::string& origin_identifier, |
+ fileapi::FileSystemType type); |
+ |
+ // Enumerates origins under the given |base_path|. |
+ // This must be used on the FILE thread. |
+ class OriginEnumerator { |
+ public: |
+ OriginEnumerator(const FilePath& base_path); |
+ |
+ // Returns the next origin identifier. Returns empty if there are no |
+ // more origins. |
+ std::string Next(); |
+ |
+ bool HasTemporary(); |
+ bool HasPersistent(); |
+ const FilePath& path() { return current_; } |
+ |
+ private: |
+ file_util::FileEnumerator enumerator_; |
+ FilePath current_; |
+ }; |
+ |
+ private: |
+ bool GetOriginBasePathAndName( |
+ const GURL& origin_url, |
+ FilePath* base_path, |
+ FileSystemType type, |
+ std::string* name); |
+ |
+ class GetFileSystemRootPathTask; |
+ |
+ // The path_manager_ isn't owned by this instance; this instance is owned by |
+ // the path_manager_, and they have the same lifetime. |
+ FileSystemPathManager* path_manager_; |
+ |
+ scoped_refptr<base::MessageLoopProxy> file_message_loop_; |
+ |
+ const FilePath base_path_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SandboxMountPointProvider); |
+}; |
+ |
+} // namespace fileapi |
+ |
+#endif // WEBKIT_FILEAPI_SANDBOX_MOUNT_POINT_PROVIDER_H_ |
+ |
Property changes on: webkit\fileapi\sandbox_mount_point_provider.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |