mount_path_util.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file.
40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_MOUNT_PATH_UTIL_H_
60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_MOUNT_PATH_UTIL_H_
70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include <string>
90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/files/file_path.h"
110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "webkit/browser/fileapi/file_system_url.h"
120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass Profile;
140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace chromeos {
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace file_system_provider {
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass ProvidedFileSystemInterface;
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace util {
210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Constructs a safe mount point path for the provided file system.
230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochbase::FilePath GetMountPath(Profile* profile,
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            const std::string& extension_id,
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            const std::string& file_system_id);
260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Finds file system, which is responsible for handling the specified |url| by
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// analysing the mount path. Also, extract the file path from the virtual path
29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// to be used by the file system operations.
300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass FileSystemURLParser {
310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public:
320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  explicit FileSystemURLParser(const fileapi::FileSystemURL& url);
330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual ~FileSystemURLParser();
340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Parses the |url| passed to the constructor. If parsing succeeds, then
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // returns true. Otherwise, false. Must be called on UI thread.
370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  bool Parse();
380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ProvidedFileSystemInterface* file_system() const { return file_system_; }
400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  const base::FilePath& file_path() const { return file_path_; }
410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private:
430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  fileapi::FileSystemURL url_;
440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ProvidedFileSystemInterface* file_system_;
450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  base::FilePath file_path_;
460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  DISALLOW_COPY_AND_ASSIGN(FileSystemURLParser);
480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace util
510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace file_system_provider
520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace chromeos
530529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif  // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_MOUNT_PATH_UTIL_H_
55