1// Copyright (c) 2012 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 CONTENT_BROWSER_FILEAPI_BROWSER_FILE_SYSTEM_HELPER_H_
6#define CONTENT_BROWSER_FILEAPI_BROWSER_FILE_SYSTEM_HELPER_H_
7
8#include "base/memory/ref_counted.h"
9#include "content/common/content_export.h"
10#include "webkit/browser/fileapi/file_system_context.h"
11
12namespace fileapi {
13class ExternalMountPoints;
14class FileSystemContext;
15class FileSystemURL;
16}
17
18namespace content {
19
20class BrowserContext;
21
22// Helper method that returns FileSystemContext constructed for
23// the browser process.
24CONTENT_EXPORT scoped_refptr<fileapi::FileSystemContext>
25CreateFileSystemContext(
26    BrowserContext* browser_context,
27    const base::FilePath& profile_path,
28    bool is_incognito,
29    quota::QuotaManagerProxy* quota_manager_proxy);
30
31// Verifies that |url| is valid and has a registered backend in |context|.
32CONTENT_EXPORT bool FileSystemURLIsValid(fileapi::FileSystemContext* context,
33                                         const fileapi::FileSystemURL& url);
34
35// Check whether a process has permission to access the file system URL.
36CONTENT_EXPORT bool CheckFileSystemPermissionsForProcess(
37    fileapi::FileSystemContext* context,
38    int process_id,
39    const fileapi::FileSystemURL& url,
40    int permissions,
41    base::PlatformFileError* error);
42
43// Get the platform path from a file system URL. This needs to be called
44// on the FILE thread.
45CONTENT_EXPORT void SyncGetPlatformPath(fileapi::FileSystemContext* context,
46                                        int process_id,
47                                        const GURL& path,
48                                        base::FilePath* platform_path);
49}  // namespace content
50
51#endif  // CONTENT_BROWSER_FILEAPI_BROWSER_FILE_SYSTEM_HELPER_H_
52