Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Side by Side Diff: webkit/fileapi/file_system_quota_client_unittest.cc

Issue 7608011: Simplify directory path accounting. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rolled in CR feedback. Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/file_util.h" 6 #include "base/file_util.h"
7 #include "base/memory/scoped_callback_factory.h" 7 #include "base/memory/scoped_callback_factory.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/message_loop_proxy.h" 9 #include "base/message_loop_proxy.h"
10 #include "base/platform_file.h" 10 #include "base/platform_file.h"
11 #include "base/scoped_temp_dir.h" 11 #include "base/scoped_temp_dir.h"
12 #include "googleurl/src/gurl.h" 12 #include "googleurl/src/gurl.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "webkit/fileapi/file_system_context.h" 14 #include "webkit/fileapi/file_system_context.h"
15 #include "webkit/fileapi/file_system_operation_context.h" 15 #include "webkit/fileapi/file_system_operation_context.h"
16 #include "webkit/fileapi/file_system_quota_client.h" 16 #include "webkit/fileapi/file_system_quota_client.h"
17 #include "webkit/fileapi/file_system_types.h" 17 #include "webkit/fileapi/file_system_types.h"
18 #include "webkit/fileapi/file_system_usage_cache.h" 18 #include "webkit/fileapi/file_system_usage_cache.h"
19 #include "webkit/fileapi/file_system_util.h" 19 #include "webkit/fileapi/file_system_util.h"
20 #include "webkit/fileapi/obfuscated_file_system_file_util.h"
20 #include "webkit/fileapi/sandbox_mount_point_provider.h" 21 #include "webkit/fileapi/sandbox_mount_point_provider.h"
21 #include "webkit/fileapi/quota_file_util.h" 22 #include "webkit/fileapi/quota_file_util.h"
22 #include "webkit/quota/quota_types.h" 23 #include "webkit/quota/quota_types.h"
23 24
24 namespace fileapi { 25 namespace fileapi {
25 namespace { 26 namespace {
26 27
27 const char kDummyURL1[] = "http://www.dummy.org"; 28 const char kDummyURL1[] = "http://www.dummy.org";
28 const char kDummyURL2[] = "http://www.example.com"; 29 const char kDummyURL2[] = "http://www.example.com";
29 const char kDummyURL3[] = "http://www.bleh"; 30 const char kDummyURL3[] = "http://www.bleh";
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 void InitializeOriginFiles(FileSystemQuotaClient* quota_client, 189 void InitializeOriginFiles(FileSystemQuotaClient* quota_client,
189 const TestFile* files, 190 const TestFile* files,
190 int num_files) { 191 int num_files) {
191 for (int i = 0; i < num_files; i++) { 192 for (int i = 0; i < num_files; i++) {
192 FilePath path = FilePath().AppendASCII(files[i].name); 193 FilePath path = FilePath().AppendASCII(files[i].name);
193 if (files[i].isDirectory) { 194 if (files[i].isDirectory) {
194 ASSERT_TRUE(CreateFileSystemDirectory( 195 ASSERT_TRUE(CreateFileSystemDirectory(
195 path, files[i].origin_url, files[i].type)); 196 path, files[i].origin_url, files[i].type));
196 if (path.empty()) { 197 if (path.empty()) {
197 // Create the usage cache. 198 // Create the usage cache.
199 // HACK--we always create the root [an empty path] first. If we
200 // create it later, this will fail due to a quota mismatch. If we
201 // call this before we create the root, it succeeds, but hasn't
202 // actually created the cache.
198 ASSERT_EQ(0, GetOriginUsage( 203 ASSERT_EQ(0, GetOriginUsage(
199 quota_client, files[i].origin_url, files[i].type)); 204 quota_client, files[i].origin_url, files[i].type));
200 } 205 }
201 } else { 206 } else {
202 ASSERT_TRUE(CreateFileSystemFile( 207 ASSERT_TRUE(CreateFileSystemFile(
203 path, files[i].size, files[i].origin_url, files[i].type)); 208 path, files[i].size, files[i].origin_url, files[i].type));
204 } 209 }
205 } 210 }
206 } 211 }
207 212
213 // This is a bit fragile--it depends on the test data always creating a
214 // directory before adding a file or directory to it, so that we can just
215 // count the basename of each addition. A recursive creation of a path, which
216 // created more than one directory in a single shot, would break this.
208 int64 ComputeFilePathsCostForOriginAndType(const TestFile* files, 217 int64 ComputeFilePathsCostForOriginAndType(const TestFile* files,
209 int num_files, 218 int num_files,
210 const std::string& origin_url, 219 const std::string& origin_url,
211 quota::StorageType type) { 220 quota::StorageType type) {
212 int64 file_paths_cost = 0; 221 int64 file_paths_cost = 0;
213 for (int i = 0; i < num_files; i++) { 222 for (int i = 0; i < num_files; i++) {
214 if (files[i].type == type && 223 if (files[i].type == type &&
215 GURL(files[i].origin_url) == GURL(origin_url)) { 224 GURL(files[i].origin_url) == GURL(origin_url)) {
216 FilePath path = FilePath().AppendASCII(files[i].name); 225 FilePath path = FilePath().AppendASCII(files[i].name);
217 if (!path.empty()) { 226 if (!path.empty()) {
218 // TODO(dmikurube): Use QuotaFileUtil in the actual -FileUtil stack. 227 file_paths_cost +=
219 scoped_ptr<QuotaFileUtil> file_util(QuotaFileUtil::CreateDefault()); 228 ObfuscatedFileSystemFileUtil::ComputeFilePathCost(path);
220 file_paths_cost += file_util->ComputeFilePathCost(path);
221 } 229 }
222 } 230 }
223 } 231 }
224 return file_paths_cost; 232 return file_paths_cost;
225 } 233 }
226 234
227 void DeleteOriginData(FileSystemQuotaClient* quota_client, 235 void DeleteOriginData(FileSystemQuotaClient* quota_client,
228 const std::string& origin, 236 const std::string& origin,
229 quota::StorageType type) { 237 quota::StorageType type) {
230 deletion_status_ = quota::kQuotaStatusUnknown; 238 deletion_status_ = quota::kQuotaStatusUnknown;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 } 287 }
280 288
281 TEST_F(FileSystemQuotaClientTest, NoFileTest) { 289 TEST_F(FileSystemQuotaClientTest, NoFileTest) {
282 scoped_ptr<FileSystemQuotaClient> quota_client(NewQuotaClient(false)); 290 scoped_ptr<FileSystemQuotaClient> quota_client(NewQuotaClient(false));
283 const TestFile kFiles[] = { 291 const TestFile kFiles[] = {
284 {true, NULL, 0, kDummyURL1, kTemporary}, 292 {true, NULL, 0, kDummyURL1, kTemporary},
285 }; 293 };
286 InitializeOriginFiles(quota_client.get(), kFiles, ARRAYSIZE_UNSAFE(kFiles)); 294 InitializeOriginFiles(quota_client.get(), kFiles, ARRAYSIZE_UNSAFE(kFiles));
287 295
288 for (int i = 0; i < 2; i++) { 296 for (int i = 0; i < 2; i++) {
289 EXPECT_EQ(0, 297 EXPECT_EQ(0, GetOriginUsage(quota_client.get(), kDummyURL1, kTemporary));
290 GetOriginUsage(quota_client.get(), kDummyURL1, kTemporary));
291 } 298 }
292 } 299 }
293 300
294 TEST_F(FileSystemQuotaClientTest, OneFileTest) { 301 TEST_F(FileSystemQuotaClientTest, OneFileTest) {
295 scoped_ptr<FileSystemQuotaClient> quota_client(NewQuotaClient(false)); 302 scoped_ptr<FileSystemQuotaClient> quota_client(NewQuotaClient(false));
296 const TestFile kFiles[] = { 303 const TestFile kFiles[] = {
297 {true, NULL, 0, kDummyURL1, kTemporary}, 304 {true, NULL, 0, kDummyURL1, kTemporary},
298 {false, "foo", 4921, kDummyURL1, kTemporary}, 305 {false, "foo", 4921, kDummyURL1, kTemporary},
299 }; 306 };
300 InitializeOriginFiles(quota_client.get(), kFiles, ARRAYSIZE_UNSAFE(kFiles)); 307 InitializeOriginFiles(quota_client.get(), kFiles, ARRAYSIZE_UNSAFE(kFiles));
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 GetOriginUsage(quota_client.get(), 598 GetOriginUsage(quota_client.get(),
592 "https://bar.com/", 599 "https://bar.com/",
593 kPersistent)); 600 kPersistent));
594 EXPECT_EQ(64 + file_paths_cost_temporary_bar_https, 601 EXPECT_EQ(64 + file_paths_cost_temporary_bar_https,
595 GetOriginUsage(quota_client.get(), 602 GetOriginUsage(quota_client.get(),
596 "https://bar.com/", 603 "https://bar.com/",
597 kTemporary)); 604 kTemporary));
598 } 605 }
599 606
600 } // namespace fileapi 607 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/fileapi/file_system_operation_context.cc ('k') | webkit/fileapi/file_system_quota_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698