summaryrefslogtreecommitdiffstats
path: root/storage/browser/fileapi/mount_points.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/browser/fileapi/mount_points.h')
-rw-r--r--storage/browser/fileapi/mount_points.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/storage/browser/fileapi/mount_points.h b/storage/browser/fileapi/mount_points.h
new file mode 100644
index 0000000..61da5fa
--- /dev/null
+++ b/storage/browser/fileapi/mount_points.h
@@ -0,0 +1,108 @@
+// Copyright (c) 2013 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 STORAGE_BROWSER_FILEAPI_MOUNT_POINTS_H_
+#define STORAGE_BROWSER_FILEAPI_MOUNT_POINTS_H_
+
+#include <string>
+#include <vector>
+
+#include "base/basictypes.h"
+#include "base/files/file_path.h"
+#include "storage/browser/storage_browser_export.h"
+#include "storage/common/fileapi/file_system_util.h"
+
+class GURL;
+
+namespace storage {
+class FileSystemMountOption;
+class FileSystemURL;
+}
+
+namespace storage {
+
+// Represents a set of mount points for File API.
+class STORAGE_EXPORT MountPoints {
+ public:
+ struct STORAGE_EXPORT MountPointInfo {
+ MountPointInfo();
+ MountPointInfo(const std::string& name, const base::FilePath& path);
+
+ // The name to be used to register the path. The registered file can
+ // be referred by a virtual path /<filesystem_id>/<name>.
+ // The name should NOT contain a path separator '/'.
+ std::string name;
+
+ // The path of the file.
+ base::FilePath path;
+
+ // For STL operation.
+ bool operator<(const MountPointInfo& that) const {
+ return name < that.name;
+ }
+ };
+
+ MountPoints() {}
+ virtual ~MountPoints() {}
+
+ // Revokes a mount point identified by |mount_name|.
+ // Returns false if the |mount_name| is not (no longer) registered.
+ // TODO(kinuko): Probably this should be rather named RevokeMountPoint.
+ virtual bool RevokeFileSystem(const std::string& mount_name) = 0;
+
+ // Returns true if the MountPoints implementation handles filesystems with
+ // the given mount type.
+ virtual bool HandlesFileSystemMountType(FileSystemType type) const = 0;
+
+ // Same as CreateCrackedFileSystemURL, but cracks FileSystemURL created
+ // from |url|.
+ virtual FileSystemURL CrackURL(const GURL& url) const = 0;
+
+ // Creates a FileSystemURL with the given origin, type and path and tries to
+ // crack it as a part of one of the registered mount points.
+ // If the the URL is not valid or does not belong to any of the mount points
+ // registered in this context, returns empty, invalid FileSystemURL.
+ virtual FileSystemURL CreateCrackedFileSystemURL(
+ const GURL& origin,
+ storage::FileSystemType type,
+ const base::FilePath& path) const = 0;
+
+ // Returns the mount point root path registered for a given |mount_name|.
+ // Returns false if the given |mount_name| is not valid.
+ virtual bool GetRegisteredPath(const std::string& mount_name,
+ base::FilePath* path) const = 0;
+
+ // Cracks the given |virtual_path| (which is the path part of a filesystem URL
+ // without '/external' or '/isolated' prefix part) and populates the
+ // |mount_name|, |type|, and |path| if the <mount_name> part embedded in
+ // the |virtual_path| (i.e. the first component of the |virtual_path|) is a
+ // valid registered filesystem ID or mount name for an existing mount point.
+ //
+ // Returns false if the given virtual_path cannot be cracked.
+ //
+ // Note that |path| is set to empty paths if the filesystem type is isolated
+ // and |virtual_path| has no <relative_path> part (i.e. pointing to the
+ // virtual root).
+ virtual bool CrackVirtualPath(const base::FilePath& virtual_path,
+ std::string* mount_name,
+ FileSystemType* type,
+ std::string* cracked_id,
+ base::FilePath* path,
+ FileSystemMountOption* mount_option) const = 0;
+
+ protected:
+ friend class FileSystemContext;
+
+ // Same as CrackURL and CreateCrackedFileSystemURL, but cracks the url already
+ // instantiated as the FileSystemURL class. This is internally used for nested
+ // URL cracking in FileSystemContext.
+ virtual FileSystemURL CrackFileSystemURL(const FileSystemURL& url) const = 0;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MountPoints);
+};
+
+} // namespace storage
+
+#endif // STORAGE_BROWSER_FILEAPI_MOUNT_POINTS_H_