mount_path_util.h revision 0529e5d033099cbfc42635f6f6183833b09dff6e
1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_MOUNT_PATH_UTIL_H_
6#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_MOUNT_PATH_UTIL_H_
7
8#include <string>
9
10#include "base/files/file_path.h"
11#include "webkit/browser/fileapi/file_system_url.h"
12
13class Profile;
14
15namespace chromeos {
16namespace file_system_provider {
17
18class ProvidedFileSystemInterface;
19
20namespace util {
21
22// Constructs a safe mount point path for the provided file system.
23base::FilePath GetMountPath(Profile* profile,
24                            std::string extension_id,
25                            int file_system_id);
26
27// Finds file system, which is responsible for handling the specified |url| by
28// analysing the mount path.
29// Also, extract the file path from the virtual path to be used by the file
30// system operations.
31class FileSystemURLParser {
32 public:
33  explicit FileSystemURLParser(const fileapi::FileSystemURL& url);
34  virtual ~FileSystemURLParser();
35
36  // Parses the |url| passed to the constructor. If parsing succeeds, then
37  // returns true. Otherwise, false.
38  bool Parse();
39
40  ProvidedFileSystemInterface* file_system() const { return file_system_; }
41  const base::FilePath& file_path() const { return file_path_; }
42
43 private:
44  fileapi::FileSystemURL url_;
45  ProvidedFileSystemInterface* file_system_;
46  base::FilePath file_path_;
47
48  DISALLOW_COPY_AND_ASSIGN(FileSystemURLParser);
49};
50
51}  // namespace util
52}  // namespace file_system_provider
53}  // namespace chromeos
54
55#endif  // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_MOUNT_PATH_UTIL_H_
56