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