OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "webkit/browser/fileapi/quota/quota_backend_impl.h" | 5 #include "webkit/browser/fileapi/quota/quota_backend_impl.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
12 #include "webkit/browser/fileapi/file_system_usage_cache.h" | 12 #include "webkit/browser/fileapi/file_system_usage_cache.h" |
13 #include "webkit/browser/fileapi/obfuscated_file_util.h" | 13 #include "webkit/browser/fileapi/obfuscated_file_util.h" |
14 #include "webkit/browser/quota/quota_manager_proxy.h" | 14 #include "webkit/browser/quota/quota_manager_proxy.h" |
15 | 15 |
16 namespace fileapi { | 16 namespace fileapi { |
17 | 17 |
18 namespace { | 18 namespace { |
19 | 19 |
20 const char kOrigin[] = "http://example.com"; | 20 const char kOrigin[] = "http://example.com"; |
21 | 21 |
22 bool DidReserveQuota(bool accepted, | 22 bool DidReserveQuota(bool accepted, |
23 base::PlatformFileError* error_out, | 23 base::File::Error* error_out, |
24 base::PlatformFileError error) { | 24 base::File::Error error) { |
25 DCHECK(error_out); | 25 DCHECK(error_out); |
26 *error_out = error; | 26 *error_out = error; |
27 return accepted; | 27 return accepted; |
28 } | 28 } |
29 | 29 |
30 class MockQuotaManagerProxy : public quota::QuotaManagerProxy { | 30 class MockQuotaManagerProxy : public quota::QuotaManagerProxy { |
31 public: | 31 public: |
32 MockQuotaManagerProxy() | 32 MockQuotaManagerProxy() |
33 : QuotaManagerProxy(NULL, NULL), | 33 : QuotaManagerProxy(NULL, NULL), |
34 storage_modified_count_(0), | 34 storage_modified_count_(0), |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 message_loop_.RunUntilIdle(); | 101 message_loop_.RunUntilIdle(); |
102 } | 102 } |
103 | 103 |
104 protected: | 104 protected: |
105 void InitializeForOriginAndType(const GURL& origin, FileSystemType type) { | 105 void InitializeForOriginAndType(const GURL& origin, FileSystemType type) { |
106 ASSERT_TRUE(file_util_->InitOriginDatabase(origin, true /* create */)); | 106 ASSERT_TRUE(file_util_->InitOriginDatabase(origin, true /* create */)); |
107 ASSERT_TRUE(file_util_->origin_database_ != NULL); | 107 ASSERT_TRUE(file_util_->origin_database_ != NULL); |
108 | 108 |
109 std::string type_string = | 109 std::string type_string = |
110 SandboxFileSystemBackendDelegate::GetTypeString(type); | 110 SandboxFileSystemBackendDelegate::GetTypeString(type); |
111 base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED; | 111 base::File::Error error = base::File::FILE_ERROR_FAILED; |
112 base::FilePath path = file_util_->GetDirectoryForOriginAndType( | 112 base::FilePath path = file_util_->GetDirectoryForOriginAndType( |
113 origin, type_string, true /* create */, &error); | 113 origin, type_string, true /* create */, &error); |
114 ASSERT_EQ(base::PLATFORM_FILE_OK, error); | 114 ASSERT_EQ(base::File::FILE_OK, error); |
115 | 115 |
116 ASSERT_TRUE(file_system_usage_cache_.UpdateUsage( | 116 ASSERT_TRUE(file_system_usage_cache_.UpdateUsage( |
117 GetUsageCachePath(origin, type), 0)); | 117 GetUsageCachePath(origin, type), 0)); |
118 } | 118 } |
119 | 119 |
120 base::SequencedTaskRunner* file_task_runner() { | 120 base::SequencedTaskRunner* file_task_runner() { |
121 return base::MessageLoopProxy::current().get(); | 121 return base::MessageLoopProxy::current().get(); |
122 } | 122 } |
123 | 123 |
124 base::FilePath GetUsageCachePath(const GURL& origin, FileSystemType type) { | 124 base::FilePath GetUsageCachePath(const GURL& origin, FileSystemType type) { |
125 base::FilePath path; | 125 base::FilePath path; |
126 base::PlatformFileError error = | 126 base::File::Error error = |
127 backend_->GetUsageCachePath(origin, type, &path); | 127 backend_->GetUsageCachePath(origin, type, &path); |
128 EXPECT_EQ(base::PLATFORM_FILE_OK, error); | 128 EXPECT_EQ(base::File::FILE_OK, error); |
129 EXPECT_FALSE(path.empty()); | 129 EXPECT_FALSE(path.empty()); |
130 return path; | 130 return path; |
131 } | 131 } |
132 | 132 |
133 base::MessageLoop message_loop_; | 133 base::MessageLoop message_loop_; |
134 base::ScopedTempDir data_dir_; | 134 base::ScopedTempDir data_dir_; |
135 scoped_ptr<ObfuscatedFileUtil> file_util_; | 135 scoped_ptr<ObfuscatedFileUtil> file_util_; |
136 FileSystemUsageCache file_system_usage_cache_; | 136 FileSystemUsageCache file_system_usage_cache_; |
137 scoped_refptr<MockQuotaManagerProxy> quota_manager_proxy_; | 137 scoped_refptr<MockQuotaManagerProxy> quota_manager_proxy_; |
138 scoped_ptr<QuotaBackendImpl> backend_; | 138 scoped_ptr<QuotaBackendImpl> backend_; |
139 | 139 |
140 private: | 140 private: |
141 DISALLOW_COPY_AND_ASSIGN(QuotaBackendImplTest); | 141 DISALLOW_COPY_AND_ASSIGN(QuotaBackendImplTest); |
142 }; | 142 }; |
143 | 143 |
144 TEST_F(QuotaBackendImplTest, ReserveQuota_Basic) { | 144 TEST_F(QuotaBackendImplTest, ReserveQuota_Basic) { |
145 FileSystemType type = fileapi::kFileSystemTypeTemporary; | 145 FileSystemType type = fileapi::kFileSystemTypeTemporary; |
146 InitializeForOriginAndType(GURL(kOrigin), type); | 146 InitializeForOriginAndType(GURL(kOrigin), type); |
147 quota_manager_proxy_->set_quota(10000); | 147 quota_manager_proxy_->set_quota(10000); |
148 | 148 |
149 const int64 kDelta1 = 1000; | 149 const int64 kDelta1 = 1000; |
150 base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED; | 150 base::File::Error error = base::File::FILE_ERROR_FAILED; |
151 backend_->ReserveQuota(GURL(kOrigin), type, kDelta1, | 151 backend_->ReserveQuota(GURL(kOrigin), type, kDelta1, |
152 base::Bind(&DidReserveQuota, true, &error)); | 152 base::Bind(&DidReserveQuota, true, &error)); |
153 EXPECT_EQ(base::PLATFORM_FILE_OK, error); | 153 EXPECT_EQ(base::File::FILE_OK, error); |
154 EXPECT_EQ(kDelta1, quota_manager_proxy_->usage()); | 154 EXPECT_EQ(kDelta1, quota_manager_proxy_->usage()); |
155 | 155 |
156 const int64 kDelta2 = -300; | 156 const int64 kDelta2 = -300; |
157 error = base::PLATFORM_FILE_ERROR_FAILED; | 157 error = base::File::FILE_ERROR_FAILED; |
158 backend_->ReserveQuota(GURL(kOrigin), type, kDelta2, | 158 backend_->ReserveQuota(GURL(kOrigin), type, kDelta2, |
159 base::Bind(&DidReserveQuota, true, &error)); | 159 base::Bind(&DidReserveQuota, true, &error)); |
160 EXPECT_EQ(base::PLATFORM_FILE_OK, error); | 160 EXPECT_EQ(base::File::FILE_OK, error); |
161 EXPECT_EQ(kDelta1 + kDelta2, quota_manager_proxy_->usage()); | 161 EXPECT_EQ(kDelta1 + kDelta2, quota_manager_proxy_->usage()); |
162 | 162 |
163 EXPECT_EQ(2, quota_manager_proxy_->storage_modified_count()); | 163 EXPECT_EQ(2, quota_manager_proxy_->storage_modified_count()); |
164 } | 164 } |
165 | 165 |
166 TEST_F(QuotaBackendImplTest, ReserveQuota_NoSpace) { | 166 TEST_F(QuotaBackendImplTest, ReserveQuota_NoSpace) { |
167 FileSystemType type = fileapi::kFileSystemTypeTemporary; | 167 FileSystemType type = fileapi::kFileSystemTypeTemporary; |
168 InitializeForOriginAndType(GURL(kOrigin), type); | 168 InitializeForOriginAndType(GURL(kOrigin), type); |
169 quota_manager_proxy_->set_quota(100); | 169 quota_manager_proxy_->set_quota(100); |
170 | 170 |
171 const int64 kDelta = 1000; | 171 const int64 kDelta = 1000; |
172 base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED; | 172 base::File::Error error = base::File::FILE_ERROR_FAILED; |
173 backend_->ReserveQuota(GURL(kOrigin), type, kDelta, | 173 backend_->ReserveQuota(GURL(kOrigin), type, kDelta, |
174 base::Bind(&DidReserveQuota, true, &error)); | 174 base::Bind(&DidReserveQuota, true, &error)); |
175 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, error); | 175 EXPECT_EQ(base::File::FILE_ERROR_NO_SPACE, error); |
176 EXPECT_EQ(0, quota_manager_proxy_->usage()); | 176 EXPECT_EQ(0, quota_manager_proxy_->usage()); |
177 | 177 |
178 EXPECT_EQ(0, quota_manager_proxy_->storage_modified_count()); | 178 EXPECT_EQ(0, quota_manager_proxy_->storage_modified_count()); |
179 } | 179 } |
180 | 180 |
181 TEST_F(QuotaBackendImplTest, ReserveQuota_Revert) { | 181 TEST_F(QuotaBackendImplTest, ReserveQuota_Revert) { |
182 FileSystemType type = fileapi::kFileSystemTypeTemporary; | 182 FileSystemType type = fileapi::kFileSystemTypeTemporary; |
183 InitializeForOriginAndType(GURL(kOrigin), type); | 183 InitializeForOriginAndType(GURL(kOrigin), type); |
184 quota_manager_proxy_->set_quota(10000); | 184 quota_manager_proxy_->set_quota(10000); |
185 | 185 |
186 const int64 kDelta = 1000; | 186 const int64 kDelta = 1000; |
187 base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED; | 187 base::File::Error error = base::File::FILE_ERROR_FAILED; |
188 backend_->ReserveQuota(GURL(kOrigin), type, kDelta, | 188 backend_->ReserveQuota(GURL(kOrigin), type, kDelta, |
189 base::Bind(&DidReserveQuota, false, &error)); | 189 base::Bind(&DidReserveQuota, false, &error)); |
190 EXPECT_EQ(base::PLATFORM_FILE_OK, error); | 190 EXPECT_EQ(base::File::FILE_OK, error); |
191 EXPECT_EQ(0, quota_manager_proxy_->usage()); | 191 EXPECT_EQ(0, quota_manager_proxy_->usage()); |
192 | 192 |
193 EXPECT_EQ(2, quota_manager_proxy_->storage_modified_count()); | 193 EXPECT_EQ(2, quota_manager_proxy_->storage_modified_count()); |
194 } | 194 } |
195 | 195 |
196 TEST_F(QuotaBackendImplTest, ReleaseReservedQuota) { | 196 TEST_F(QuotaBackendImplTest, ReleaseReservedQuota) { |
197 FileSystemType type = fileapi::kFileSystemTypeTemporary; | 197 FileSystemType type = fileapi::kFileSystemTypeTemporary; |
198 InitializeForOriginAndType(GURL(kOrigin), type); | 198 InitializeForOriginAndType(GURL(kOrigin), type); |
199 const int64 kInitialUsage = 2000; | 199 const int64 kInitialUsage = 2000; |
200 quota_manager_proxy_->set_usage(kInitialUsage); | 200 quota_manager_proxy_->set_usage(kInitialUsage); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 uint32 dirty = 0; | 239 uint32 dirty = 0; |
240 ASSERT_TRUE(file_system_usage_cache_.GetDirty(path, &dirty)); | 240 ASSERT_TRUE(file_system_usage_cache_.GetDirty(path, &dirty)); |
241 EXPECT_EQ(1u, dirty); | 241 EXPECT_EQ(1u, dirty); |
242 | 242 |
243 backend_->DecrementDirtyCount(GURL(kOrigin), type); | 243 backend_->DecrementDirtyCount(GURL(kOrigin), type); |
244 ASSERT_TRUE(file_system_usage_cache_.GetDirty(path, &dirty)); | 244 ASSERT_TRUE(file_system_usage_cache_.GetDirty(path, &dirty)); |
245 EXPECT_EQ(0u, dirty); | 245 EXPECT_EQ(0u, dirty); |
246 } | 246 } |
247 | 247 |
248 } // namespace fileapi | 248 } // namespace fileapi |
OLD | NEW |