Make sure webrtc::VideoSourceInterface is released on the main render thread.
[chromium-blink-merge.git] / content / public / test / sandbox_file_system_test_helper.cc
blob96c47ce9739a987d81d5cf34153e85dd2a655ba9
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.
5 #include "content/public/test/sandbox_file_system_test_helper.h"
7 #include "base/file_util.h"
8 #include "base/message_loop/message_loop_proxy.h"
9 #include "base/run_loop.h"
10 #include "content/public/test/mock_special_storage_policy.h"
11 #include "content/public/test/test_file_system_context.h"
12 #include "url/gurl.h"
13 #include "webkit/browser/fileapi/file_system_context.h"
14 #include "webkit/browser/fileapi/file_system_file_util.h"
15 #include "webkit/browser/fileapi/file_system_operation_context.h"
16 #include "webkit/browser/fileapi/file_system_operation_runner.h"
17 #include "webkit/browser/fileapi/file_system_url.h"
18 #include "webkit/browser/fileapi/file_system_usage_cache.h"
19 #include "webkit/browser/fileapi/sandbox_file_system_backend.h"
20 #include "webkit/browser/quota/quota_manager_proxy.h"
21 #include "webkit/common/fileapi/file_system_util.h"
23 using fileapi::FileSystemContext;
24 using fileapi::FileSystemOperationContext;
25 using fileapi::FileSystemOperationRunner;
26 using fileapi::FileSystemType;
27 using fileapi::FileSystemURL;
29 namespace content {
31 SandboxFileSystemTestHelper::SandboxFileSystemTestHelper(
32 const GURL& origin, FileSystemType type)
33 : origin_(origin), type_(type), file_util_(NULL) {
36 SandboxFileSystemTestHelper::SandboxFileSystemTestHelper()
37 : origin_(GURL("http://foo.com")),
38 type_(fileapi::kFileSystemTypeTemporary),
39 file_util_(NULL) {
42 SandboxFileSystemTestHelper::~SandboxFileSystemTestHelper() {
45 void SandboxFileSystemTestHelper::SetUp(const base::FilePath& base_dir) {
46 SetUp(base_dir, NULL);
49 void SandboxFileSystemTestHelper::SetUp(
50 FileSystemContext* file_system_context) {
51 file_system_context_ = file_system_context;
53 SetUpFileSystem();
56 void SandboxFileSystemTestHelper::SetUp(
57 const base::FilePath& base_dir,
58 quota::QuotaManagerProxy* quota_manager_proxy) {
59 file_system_context_ = CreateFileSystemContextForTesting(
60 quota_manager_proxy, base_dir);
62 SetUpFileSystem();
65 void SandboxFileSystemTestHelper::TearDown() {
66 file_system_context_ = NULL;
67 base::RunLoop().RunUntilIdle();
70 base::FilePath SandboxFileSystemTestHelper::GetOriginRootPath() {
71 return file_system_context_->sandbox_delegate()->
72 GetBaseDirectoryForOriginAndType(origin_, type_, false);
75 base::FilePath SandboxFileSystemTestHelper::GetLocalPath(
76 const base::FilePath& path) {
77 DCHECK(file_util_);
78 base::FilePath local_path;
79 scoped_ptr<FileSystemOperationContext> context(NewOperationContext());
80 file_util_->GetLocalFilePath(context.get(), CreateURL(path), &local_path);
81 return local_path;
84 base::FilePath SandboxFileSystemTestHelper::GetLocalPathFromASCII(
85 const std::string& path) {
86 return GetLocalPath(base::FilePath().AppendASCII(path));
89 base::FilePath SandboxFileSystemTestHelper::GetUsageCachePath() const {
90 return file_system_context_->sandbox_delegate()->
91 GetUsageCachePathForOriginAndType(origin_, type_);
94 FileSystemURL SandboxFileSystemTestHelper::CreateURL(
95 const base::FilePath& path) const {
96 return file_system_context_->CreateCrackedFileSystemURL(origin_, type_, path);
99 int64 SandboxFileSystemTestHelper::GetCachedOriginUsage() const {
100 return file_system_context_->GetQuotaUtil(type_)
101 ->GetOriginUsageOnFileTaskRunner(
102 file_system_context_.get(), origin_, type_);
105 int64 SandboxFileSystemTestHelper::ComputeCurrentOriginUsage() {
106 usage_cache()->CloseCacheFiles();
107 int64 size = base::ComputeDirectorySize(GetOriginRootPath());
108 if (base::PathExists(GetUsageCachePath()))
109 size -= fileapi::FileSystemUsageCache::kUsageFileSize;
110 return size;
113 int64
114 SandboxFileSystemTestHelper::ComputeCurrentDirectoryDatabaseUsage() {
115 return base::ComputeDirectorySize(
116 GetOriginRootPath().AppendASCII("Paths"));
119 FileSystemOperationRunner* SandboxFileSystemTestHelper::operation_runner() {
120 return file_system_context_->operation_runner();
123 FileSystemOperationContext*
124 SandboxFileSystemTestHelper::NewOperationContext() {
125 DCHECK(file_system_context_.get());
126 FileSystemOperationContext* context =
127 new FileSystemOperationContext(file_system_context_.get());
128 context->set_update_observers(
129 *file_system_context_->GetUpdateObservers(type_));
130 return context;
133 void SandboxFileSystemTestHelper::AddFileChangeObserver(
134 fileapi::FileChangeObserver* observer) {
135 file_system_context_->sandbox_backend()->GetQuotaUtil()->
136 AddFileChangeObserver(type_, observer, NULL);
139 fileapi::FileSystemUsageCache* SandboxFileSystemTestHelper::usage_cache() {
140 return file_system_context()->sandbox_delegate()->usage_cache();
143 void SandboxFileSystemTestHelper::SetUpFileSystem() {
144 DCHECK(file_system_context_.get());
145 DCHECK(file_system_context_->sandbox_backend()->CanHandleType(type_));
147 file_util_ = file_system_context_->sandbox_delegate()->sync_file_util();
148 DCHECK(file_util_);
150 // Prepare the origin's root directory.
151 file_system_context_->sandbox_delegate()->
152 GetBaseDirectoryForOriginAndType(origin_, type_, true /* create */);
154 // Initialize the usage cache file.
155 base::FilePath usage_cache_path = GetUsageCachePath();
156 if (!usage_cache_path.empty())
157 usage_cache()->UpdateUsage(usage_cache_path, 0);
160 } // namespace content