- add sources.
[platform/framework/web/crosswalk.git] / src / content / public / test / sandbox_file_system_test_helper.h
1 // Copyright 2013 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_PUBLIC_TEST_SANDBOX_FILE_SYSTEM_TEST_HELPER_H_
6 #define CONTENT_PUBLIC_TEST_SANDBOX_FILE_SYSTEM_TEST_HELPER_H_
7
8 #include <string>
9
10 #include "base/files/file_path.h"
11 #include "base/memory/ref_counted.h"
12 #include "url/gurl.h"
13 #include "webkit/browser/fileapi/file_system_url.h"
14 #include "webkit/browser/fileapi/file_system_usage_cache.h"
15 #include "webkit/browser/fileapi/task_runner_bound_observer_list.h"
16 #include "webkit/common/fileapi/file_system_types.h"
17 #include "webkit/common/fileapi/file_system_util.h"
18 #include "webkit/common/quota/quota_types.h"
19
20 namespace base {
21 class FilePath;
22 }
23
24 namespace quota {
25 class QuotaManagerProxy;
26 }
27
28 namespace fileapi {
29
30 class FileSystemContext;
31 class FileSystemFileUtil;
32 class FileSystemOperationContext;
33 class FileSystemOperationRunner;
34
35 // Filesystem test helper class that encapsulates test environment for
36 // a given {origin, type} pair.  This helper only works for sandboxed
37 // file systems (Temporary or Persistent).
38 class SandboxFileSystemTestHelper {
39  public:
40   SandboxFileSystemTestHelper(const GURL& origin, FileSystemType type);
41   SandboxFileSystemTestHelper();
42   ~SandboxFileSystemTestHelper();
43
44   void SetUp(const base::FilePath& base_dir);
45   // If you want to use more than one SandboxFileSystemTestHelper in
46   // a single base directory, they have to share a context, so that they don't
47   // have multiple databases fighting over the lock to the origin directory
48   // [deep down inside ObfuscatedFileUtil].
49   void SetUp(FileSystemContext* file_system_context);
50   void SetUp(const base::FilePath& base_dir,
51              quota::QuotaManagerProxy* quota_manager_proxy);
52   void TearDown();
53
54   base::FilePath GetOriginRootPath();
55   base::FilePath GetLocalPath(const base::FilePath& path);
56   base::FilePath GetLocalPathFromASCII(const std::string& path);
57
58   // Returns empty path if filesystem type is neither temporary nor persistent.
59   base::FilePath GetUsageCachePath() const;
60
61   FileSystemURL CreateURL(const base::FilePath& path) const;
62   FileSystemURL CreateURLFromUTF8(const std::string& utf8) const {
63     return CreateURL(base::FilePath::FromUTF8Unsafe(utf8));
64   }
65
66   // This returns cached usage size returned by QuotaUtil.
67   int64 GetCachedOriginUsage() const;
68
69   // This doesn't work with OFSFU.
70   int64 ComputeCurrentOriginUsage();
71
72   int64 ComputeCurrentDirectoryDatabaseUsage();
73
74   FileSystemOperationRunner* operation_runner();
75   FileSystemOperationContext* NewOperationContext();
76
77   void AddFileChangeObserver(FileChangeObserver* observer);
78
79   FileSystemContext* file_system_context() const {
80     return file_system_context_.get();
81   }
82
83   const GURL& origin() const { return origin_; }
84   FileSystemType type() const { return type_; }
85   quota::StorageType storage_type() const {
86     return FileSystemTypeToQuotaStorageType(type_);
87   }
88   FileSystemFileUtil* file_util() const { return file_util_; }
89   FileSystemUsageCache* usage_cache();
90
91  private:
92   void SetUpFileSystem();
93
94   scoped_refptr<FileSystemContext> file_system_context_;
95
96   const GURL origin_;
97   const FileSystemType type_;
98   FileSystemFileUtil* file_util_;
99 };
100
101 }  // namespace fileapi
102
103 #endif  // CONTENT_PUBLIC_TEST_SANDBOX_FILE_SYSTEM_TEST_HELPER_H_