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 13 class Profile; 14 15 namespace chromeos { 16 namespace file_system_provider { 17 18 class ProvidedFileSystemInterface; 19 20 namespace util { 21 22 // Constructs a safe mount point path for the provided file system. 23 base::FilePath GetMountPath(Profile* profile, 24 const std::string& extension_id, 25 const std::string& file_system_id); 26 27 // Finds file system, which is responsible for handling the specified |url| by 28 // analysing the mount path. Also, extract the file path from the virtual path 29 // to be used by the file system operations. 30 class FileSystemURLParser { 31 public: 32 explicit FileSystemURLParser(const fileapi::FileSystemURL& url); 33 virtual ~FileSystemURLParser(); 34 35 // Parses the |url| passed to the constructor. If parsing succeeds, then 36 // returns true. Otherwise, false. Must be called on UI thread. 37 bool Parse(); 38 file_system()39 ProvidedFileSystemInterface* file_system() const { return file_system_; } file_path()40 const base::FilePath& file_path() const { return file_path_; } 41 42 private: 43 fileapi::FileSystemURL url_; 44 ProvidedFileSystemInterface* file_system_; 45 base::FilePath file_path_; 46 47 DISALLOW_COPY_AND_ASSIGN(FileSystemURLParser); 48 }; 49 50 } // namespace util 51 } // namespace file_system_provider 52 } // namespace chromeos 53 54 #endif // CHROME_BROWSER_CHROMEOS_FILE_SYSTEM_PROVIDER_MOUNT_PATH_UTIL_H_ 55