1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// The file contains utility functions to implement chrome.fileSystem API for 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// file paths that do not directly map to host machine's file system path, such 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// as Google Drive or virtual volumes provided by fileSystemProvider extensions. 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_FILE_MANAGER_FILESYSTEM_API_UTIL_H_ 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_FILE_MANAGER_FILESYSTEM_API_UTIL_H_ 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <string> 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <vector> 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/callback_forward.h" 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class Profile; 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace base { 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class FilePath; 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace base 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage { 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass FileSystemURL; 2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} // namespace storage 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace file_manager { 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace util { 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Checks whether the given |path| points to a non-local filesystem that 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// requires special handling. 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool IsUnderNonNativeLocalPath(Profile* profile, const base::FilePath& path); 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Returns the mime type of the file pointed by |path|, and asynchronously sends 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// the result to |callback|. 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void GetNonNativeLocalPathMimeType( 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Profile* profile, 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::FilePath& path, 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Callback<void(bool, const std::string&)>& callback); 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Checks whether the |path| points to a directory, and asynchronously sends 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// the result to |callback|. 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void IsNonNativeLocalPathDirectory( 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Profile* profile, 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::FilePath& path, 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Callback<void(bool)>& callback); 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Ensures a file exists at |path|, i.e., it does nothing if a file is already 4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// present, or creates a file there if it isn't, and asynchronously sends to 5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// |callback| whether it succeeded. 5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)void PrepareNonNativeLocalFileForWritableApp( 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Profile* profile, 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::FilePath& path, 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Callback<void(bool)>& callback); 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace util 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace file_manager 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_FILE_MANAGER_FILESYSTEM_API_UTIL_H_ 60