OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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/bind.h" | 6 #include "base/bind.h" |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/message_loop_proxy.h" | 10 #include "base/message_loop_proxy.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 quota_client->GetOriginUsage( | 74 quota_client->GetOriginUsage( |
75 GURL(origin_url), type, | 75 GURL(origin_url), type, |
76 base::Bind(&FileSystemQuotaClientTest::OnGetUsage, | 76 base::Bind(&FileSystemQuotaClientTest::OnGetUsage, |
77 weak_factory_.GetWeakPtr())); | 77 weak_factory_.GetWeakPtr())); |
78 } | 78 } |
79 | 79 |
80 int64 GetOriginUsage(FileSystemQuotaClient* quota_client, | 80 int64 GetOriginUsage(FileSystemQuotaClient* quota_client, |
81 const std::string& origin_url, | 81 const std::string& origin_url, |
82 quota::StorageType type) { | 82 quota::StorageType type) { |
83 GetOriginUsageAsync(quota_client, origin_url, type); | 83 GetOriginUsageAsync(quota_client, origin_url, type); |
84 MessageLoop::current()->RunAllPending(); | 84 MessageLoop::current()->RunUntilIdle(); |
85 return usage_; | 85 return usage_; |
86 } | 86 } |
87 | 87 |
88 const std::set<GURL>& GetOriginsForType(FileSystemQuotaClient* quota_client, | 88 const std::set<GURL>& GetOriginsForType(FileSystemQuotaClient* quota_client, |
89 quota::StorageType type) { | 89 quota::StorageType type) { |
90 origins_.clear(); | 90 origins_.clear(); |
91 quota_client->GetOriginsForType( | 91 quota_client->GetOriginsForType( |
92 type, | 92 type, |
93 base::Bind(&FileSystemQuotaClientTest::OnGetOrigins, | 93 base::Bind(&FileSystemQuotaClientTest::OnGetOrigins, |
94 weak_factory_.GetWeakPtr())); | 94 weak_factory_.GetWeakPtr())); |
95 MessageLoop::current()->RunAllPending(); | 95 MessageLoop::current()->RunUntilIdle(); |
96 return origins_; | 96 return origins_; |
97 } | 97 } |
98 | 98 |
99 const std::set<GURL>& GetOriginsForHost(FileSystemQuotaClient* quota_client, | 99 const std::set<GURL>& GetOriginsForHost(FileSystemQuotaClient* quota_client, |
100 quota::StorageType type, | 100 quota::StorageType type, |
101 const std::string& host) { | 101 const std::string& host) { |
102 origins_.clear(); | 102 origins_.clear(); |
103 quota_client->GetOriginsForHost( | 103 quota_client->GetOriginsForHost( |
104 type, host, | 104 type, host, |
105 base::Bind(&FileSystemQuotaClientTest::OnGetOrigins, | 105 base::Bind(&FileSystemQuotaClientTest::OnGetOrigins, |
106 weak_factory_.GetWeakPtr())); | 106 weak_factory_.GetWeakPtr())); |
107 MessageLoop::current()->RunAllPending(); | 107 MessageLoop::current()->RunUntilIdle(); |
108 return origins_; | 108 return origins_; |
109 } | 109 } |
110 | 110 |
111 void RunAdditionalOriginUsageTask(FileSystemQuotaClient* quota_client, | 111 void RunAdditionalOriginUsageTask(FileSystemQuotaClient* quota_client, |
112 const std::string& origin_url, | 112 const std::string& origin_url, |
113 quota::StorageType type) { | 113 quota::StorageType type) { |
114 quota_client->GetOriginUsage( | 114 quota_client->GetOriginUsage( |
115 GURL(origin_url), type, | 115 GURL(origin_url), type, |
116 base::Bind(&FileSystemQuotaClientTest::OnGetAdditionalUsage, | 116 base::Bind(&FileSystemQuotaClientTest::OnGetAdditionalUsage, |
117 weak_factory_.GetWeakPtr())); | 117 weak_factory_.GetWeakPtr())); |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 }; | 430 }; |
431 InitializeOriginFiles(quota_client.get(), kFiles, ARRAYSIZE_UNSAFE(kFiles)); | 431 InitializeOriginFiles(quota_client.get(), kFiles, ARRAYSIZE_UNSAFE(kFiles)); |
432 const int64 file_paths_cost = ComputeFilePathsCostForOriginAndType( | 432 const int64 file_paths_cost = ComputeFilePathsCostForOriginAndType( |
433 kFiles, ARRAYSIZE_UNSAFE(kFiles), kDummyURL1, kTemporary); | 433 kFiles, ARRAYSIZE_UNSAFE(kFiles), kDummyURL1, kTemporary); |
434 | 434 |
435 // Dispatching three GetUsage tasks. | 435 // Dispatching three GetUsage tasks. |
436 set_additional_callback_count(0); | 436 set_additional_callback_count(0); |
437 GetOriginUsageAsync(quota_client.get(), kDummyURL1, kTemporary); | 437 GetOriginUsageAsync(quota_client.get(), kDummyURL1, kTemporary); |
438 RunAdditionalOriginUsageTask(quota_client.get(), kDummyURL1, kTemporary); | 438 RunAdditionalOriginUsageTask(quota_client.get(), kDummyURL1, kTemporary); |
439 RunAdditionalOriginUsageTask(quota_client.get(), kDummyURL1, kTemporary); | 439 RunAdditionalOriginUsageTask(quota_client.get(), kDummyURL1, kTemporary); |
440 MessageLoop::current()->RunAllPending(); | 440 MessageLoop::current()->RunUntilIdle(); |
441 EXPECT_EQ(11 + 22 + file_paths_cost, usage()); | 441 EXPECT_EQ(11 + 22 + file_paths_cost, usage()); |
442 EXPECT_EQ(2, additional_callback_count()); | 442 EXPECT_EQ(2, additional_callback_count()); |
443 | 443 |
444 // Once more, in a different order. | 444 // Once more, in a different order. |
445 set_additional_callback_count(0); | 445 set_additional_callback_count(0); |
446 RunAdditionalOriginUsageTask(quota_client.get(), kDummyURL1, kTemporary); | 446 RunAdditionalOriginUsageTask(quota_client.get(), kDummyURL1, kTemporary); |
447 GetOriginUsageAsync(quota_client.get(), kDummyURL1, kTemporary); | 447 GetOriginUsageAsync(quota_client.get(), kDummyURL1, kTemporary); |
448 RunAdditionalOriginUsageTask(quota_client.get(), kDummyURL1, kTemporary); | 448 RunAdditionalOriginUsageTask(quota_client.get(), kDummyURL1, kTemporary); |
449 MessageLoop::current()->RunAllPending(); | 449 MessageLoop::current()->RunUntilIdle(); |
450 EXPECT_EQ(11 + 22 + file_paths_cost, usage()); | 450 EXPECT_EQ(11 + 22 + file_paths_cost, usage()); |
451 EXPECT_EQ(2, additional_callback_count()); | 451 EXPECT_EQ(2, additional_callback_count()); |
452 } | 452 } |
453 | 453 |
454 TEST_F(FileSystemQuotaClientTest, GetOriginsForType) { | 454 TEST_F(FileSystemQuotaClientTest, GetOriginsForType) { |
455 scoped_ptr<FileSystemQuotaClient> quota_client(NewQuotaClient(false)); | 455 scoped_ptr<FileSystemQuotaClient> quota_client(NewQuotaClient(false)); |
456 const TestFile kFiles[] = { | 456 const TestFile kFiles[] = { |
457 {true, NULL, 0, kDummyURL1, kTemporary}, | 457 {true, NULL, 0, kDummyURL1, kTemporary}, |
458 {true, NULL, 0, kDummyURL2, kTemporary}, | 458 {true, NULL, 0, kDummyURL2, kTemporary}, |
459 {true, NULL, 0, kDummyURL3, kPersistent}, | 459 {true, NULL, 0, kDummyURL3, kPersistent}, |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
541 ComputeFilePathsCostForOriginAndType(kFiles, ARRAYSIZE_UNSAFE(kFiles), | 541 ComputeFilePathsCostForOriginAndType(kFiles, ARRAYSIZE_UNSAFE(kFiles), |
542 "http://bar.com/", kTemporary); | 542 "http://bar.com/", kTemporary); |
543 const int64 file_paths_cost_temporary_bar_https = | 543 const int64 file_paths_cost_temporary_bar_https = |
544 ComputeFilePathsCostForOriginAndType(kFiles, ARRAYSIZE_UNSAFE(kFiles), | 544 ComputeFilePathsCostForOriginAndType(kFiles, ARRAYSIZE_UNSAFE(kFiles), |
545 "https://bar.com/", kTemporary); | 545 "https://bar.com/", kTemporary); |
546 const int64 file_paths_cost_persistent_bar_https = | 546 const int64 file_paths_cost_persistent_bar_https = |
547 ComputeFilePathsCostForOriginAndType(kFiles, ARRAYSIZE_UNSAFE(kFiles), | 547 ComputeFilePathsCostForOriginAndType(kFiles, ARRAYSIZE_UNSAFE(kFiles), |
548 "https://bar.com/", kPersistent); | 548 "https://bar.com/", kPersistent); |
549 | 549 |
550 DeleteOriginData(quota_client.get(), "http://foo.com/", kTemporary); | 550 DeleteOriginData(quota_client.get(), "http://foo.com/", kTemporary); |
551 MessageLoop::current()->RunAllPending(); | 551 MessageLoop::current()->RunUntilIdle(); |
552 EXPECT_EQ(quota::kQuotaStatusOk, status()); | 552 EXPECT_EQ(quota::kQuotaStatusOk, status()); |
553 | 553 |
554 DeleteOriginData(quota_client.get(), "http://bar.com/", kPersistent); | 554 DeleteOriginData(quota_client.get(), "http://bar.com/", kPersistent); |
555 MessageLoop::current()->RunAllPending(); | 555 MessageLoop::current()->RunUntilIdle(); |
556 EXPECT_EQ(quota::kQuotaStatusOk, status()); | 556 EXPECT_EQ(quota::kQuotaStatusOk, status()); |
557 | 557 |
558 DeleteOriginData(quota_client.get(), "http://buz.com/", kTemporary); | 558 DeleteOriginData(quota_client.get(), "http://buz.com/", kTemporary); |
559 MessageLoop::current()->RunAllPending(); | 559 MessageLoop::current()->RunUntilIdle(); |
560 EXPECT_EQ(quota::kQuotaStatusOk, status()); | 560 EXPECT_EQ(quota::kQuotaStatusOk, status()); |
561 | 561 |
562 EXPECT_EQ(0, GetOriginUsage( | 562 EXPECT_EQ(0, GetOriginUsage( |
563 quota_client.get(), "http://foo.com/", kTemporary)); | 563 quota_client.get(), "http://foo.com/", kTemporary)); |
564 EXPECT_EQ(0, GetOriginUsage( | 564 EXPECT_EQ(0, GetOriginUsage( |
565 quota_client.get(), "http://bar.com/", kPersistent)); | 565 quota_client.get(), "http://bar.com/", kPersistent)); |
566 EXPECT_EQ(0, GetOriginUsage( | 566 EXPECT_EQ(0, GetOriginUsage( |
567 quota_client.get(), "http://buz.com/", kTemporary)); | 567 quota_client.get(), "http://buz.com/", kTemporary)); |
568 | 568 |
569 EXPECT_EQ(2 + file_paths_cost_temporary_foo_https, | 569 EXPECT_EQ(2 + file_paths_cost_temporary_foo_https, |
(...skipping 12 matching lines...) Expand all Loading... |
582 GetOriginUsage(quota_client.get(), | 582 GetOriginUsage(quota_client.get(), |
583 "https://bar.com/", | 583 "https://bar.com/", |
584 kPersistent)); | 584 kPersistent)); |
585 EXPECT_EQ(64 + file_paths_cost_temporary_bar_https, | 585 EXPECT_EQ(64 + file_paths_cost_temporary_bar_https, |
586 GetOriginUsage(quota_client.get(), | 586 GetOriginUsage(quota_client.get(), |
587 "https://bar.com/", | 587 "https://bar.com/", |
588 kTemporary)); | 588 kTemporary)); |
589 } | 589 } |
590 | 590 |
591 } // namespace fileapi | 591 } // namespace fileapi |
OLD | NEW |