OLD | NEW |
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 <set> | 5 #include <set> |
6 #include <sstream> | 6 #include <sstream> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/memory/scoped_callback_factory.h" | 10 #include "base/memory/scoped_callback_factory.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 MockStorageClient* CreateClient( | 70 MockStorageClient* CreateClient( |
71 const MockOriginData* mock_data, size_t mock_data_size) { | 71 const MockOriginData* mock_data, size_t mock_data_size) { |
72 return new MockStorageClient(quota_manager_->proxy(), | 72 return new MockStorageClient(quota_manager_->proxy(), |
73 mock_data, mock_data_size); | 73 mock_data, mock_data_size); |
74 } | 74 } |
75 | 75 |
76 void RegisterClient(MockStorageClient* client) { | 76 void RegisterClient(MockStorageClient* client) { |
77 quota_manager_->proxy()->RegisterClient(client); | 77 quota_manager_->proxy()->RegisterClient(client); |
78 } | 78 } |
79 | 79 |
| 80 void GetUsage() { |
| 81 usage_info_.clear(); |
| 82 quota_manager_->GetUsage(callback_factory_.NewCallback( |
| 83 &QuotaManagerTest::DidGetUsage)); |
| 84 } |
| 85 |
80 void GetUsageAndQuota(const GURL& origin, StorageType type) { | 86 void GetUsageAndQuota(const GURL& origin, StorageType type) { |
81 quota_status_ = kQuotaStatusUnknown; | 87 quota_status_ = kQuotaStatusUnknown; |
82 usage_ = -1; | 88 usage_ = -1; |
83 quota_ = -1; | 89 quota_ = -1; |
84 quota_manager_->GetUsageAndQuota(origin, type, | 90 quota_manager_->GetUsageAndQuota(origin, type, |
85 callback_factory_.NewCallback( | 91 callback_factory_.NewCallback( |
86 &QuotaManagerTest::DidGetUsageAndQuota)); | 92 &QuotaManagerTest::DidGetUsageAndQuota)); |
87 } | 93 } |
88 | 94 |
89 void GetTemporaryGlobalQuota() { | 95 void GetTemporaryGlobalQuota() { |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 &QuotaManagerTest::DidDumpQuotaTable)); | 244 &QuotaManagerTest::DidDumpQuotaTable)); |
239 } | 245 } |
240 | 246 |
241 void DumpOriginInfoTable() { | 247 void DumpOriginInfoTable() { |
242 origin_info_entries_.clear(); | 248 origin_info_entries_.clear(); |
243 quota_manager_->DumpOriginInfoTable( | 249 quota_manager_->DumpOriginInfoTable( |
244 callback_factory_.NewCallback( | 250 callback_factory_.NewCallback( |
245 &QuotaManagerTest::DidDumpOriginInfoTable)); | 251 &QuotaManagerTest::DidDumpOriginInfoTable)); |
246 } | 252 } |
247 | 253 |
| 254 void DidGetUsage(const UsageInfoEntries& entries) { |
| 255 usage_info_.insert(usage_info_.begin(), entries.begin(), entries.end()); |
| 256 } |
| 257 |
248 void DidGetUsageAndQuota(QuotaStatusCode status, int64 usage, int64 quota) { | 258 void DidGetUsageAndQuota(QuotaStatusCode status, int64 usage, int64 quota) { |
249 quota_status_ = status; | 259 quota_status_ = status; |
250 usage_ = usage; | 260 usage_ = usage; |
251 quota_ = quota; | 261 quota_ = quota; |
252 } | 262 } |
253 | 263 |
254 void DidGetQuota(QuotaStatusCode status, | 264 void DidGetQuota(QuotaStatusCode status, |
255 StorageType type, | 265 StorageType type, |
256 int64 quota) { | 266 int64 quota) { |
257 quota_status_ = status; | 267 quota_status_ = status; |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 QuotaManager* quota_manager() const { return quota_manager_.get(); } | 342 QuotaManager* quota_manager() const { return quota_manager_.get(); } |
333 void set_quota_manager(QuotaManager* quota_manager) { | 343 void set_quota_manager(QuotaManager* quota_manager) { |
334 quota_manager_ = quota_manager; | 344 quota_manager_ = quota_manager; |
335 } | 345 } |
336 | 346 |
337 MockSpecialStoragePolicy* mock_special_storage_policy() const { | 347 MockSpecialStoragePolicy* mock_special_storage_policy() const { |
338 return mock_special_storage_policy_.get(); | 348 return mock_special_storage_policy_.get(); |
339 } | 349 } |
340 | 350 |
341 QuotaStatusCode status() const { return quota_status_; } | 351 QuotaStatusCode status() const { return quota_status_; } |
| 352 const UsageInfoEntries& usage_info() const { return usage_info_; } |
342 const std::string& host() const { return host_; } | 353 const std::string& host() const { return host_; } |
343 StorageType type() const { return type_; } | 354 StorageType type() const { return type_; } |
344 int64 usage() const { return usage_; } | 355 int64 usage() const { return usage_; } |
345 int64 unlimited_usage() const { return unlimited_usage_; } | 356 int64 unlimited_usage() const { return unlimited_usage_; } |
346 int64 quota() const { return quota_; } | 357 int64 quota() const { return quota_; } |
347 int64 available_space() const { return available_space_; } | 358 int64 available_space() const { return available_space_; } |
348 const GURL& lru_origin() const { return lru_origin_; } | 359 const GURL& lru_origin() const { return lru_origin_; } |
349 const std::set<GURL>& modified_origins() const { return modified_origins_; } | 360 const std::set<GURL>& modified_origins() const { return modified_origins_; } |
350 StorageType modified_origins_type() const { return modified_origins_type_; } | 361 StorageType modified_origins_type() const { return modified_origins_type_; } |
351 const QuotaTableEntries& quota_entries() const { return quota_entries_; } | 362 const QuotaTableEntries& quota_entries() const { return quota_entries_; } |
(...skipping 10 matching lines...) Expand all Loading... |
362 return base::Time::FromDoubleT(mock_time_counter_ * 10.0); | 373 return base::Time::FromDoubleT(mock_time_counter_ * 10.0); |
363 } | 374 } |
364 | 375 |
365 ScopedTempDir data_dir_; | 376 ScopedTempDir data_dir_; |
366 base::ScopedCallbackFactory<QuotaManagerTest> callback_factory_; | 377 base::ScopedCallbackFactory<QuotaManagerTest> callback_factory_; |
367 | 378 |
368 scoped_refptr<QuotaManager> quota_manager_; | 379 scoped_refptr<QuotaManager> quota_manager_; |
369 scoped_refptr<MockSpecialStoragePolicy> mock_special_storage_policy_; | 380 scoped_refptr<MockSpecialStoragePolicy> mock_special_storage_policy_; |
370 | 381 |
371 QuotaStatusCode quota_status_; | 382 QuotaStatusCode quota_status_; |
| 383 UsageInfoEntries usage_info_; |
372 std::string host_; | 384 std::string host_; |
373 StorageType type_; | 385 StorageType type_; |
374 int64 usage_; | 386 int64 usage_; |
375 int64 unlimited_usage_; | 387 int64 unlimited_usage_; |
376 int64 quota_; | 388 int64 quota_; |
377 int64 available_space_; | 389 int64 available_space_; |
378 GURL lru_origin_; | 390 GURL lru_origin_; |
379 std::set<GURL> modified_origins_; | 391 std::set<GURL> modified_origins_; |
380 StorageType modified_origins_type_; | 392 StorageType modified_origins_type_; |
381 QuotaTableEntries quota_entries_; | 393 QuotaTableEntries quota_entries_; |
382 OriginInfoTableEntries origin_info_entries_; | 394 OriginInfoTableEntries origin_info_entries_; |
383 int status_callback_count_; | 395 int status_callback_count_; |
384 | 396 |
385 int additional_callback_count_; | 397 int additional_callback_count_; |
386 | 398 |
387 int mock_time_counter_; | 399 int mock_time_counter_; |
388 | 400 |
389 DISALLOW_COPY_AND_ASSIGN(QuotaManagerTest); | 401 DISALLOW_COPY_AND_ASSIGN(QuotaManagerTest); |
390 }; | 402 }; |
391 | 403 |
| 404 TEST_F(QuotaManagerTest, GetUsage) { |
| 405 static const MockOriginData kData1[] = { |
| 406 { "http://foo.com/", kTemp, 10 }, |
| 407 { "http://foo.com:8080/", kTemp, 15 }, |
| 408 { "http://bar.com/", kTemp, 20 }, |
| 409 { "http://bar.com/", kPerm, 50 }, |
| 410 }; |
| 411 static const MockOriginData kData2[] = { |
| 412 { "https://foo.com/", kTemp, 30 }, |
| 413 { "https://foo.com:8081/", kTemp, 35 }, |
| 414 { "http://bar.com/", kPerm, 40 }, |
| 415 { "http://example.com/", kPerm, 40 }, |
| 416 }; |
| 417 RegisterClient(CreateClient(kData1, ARRAYSIZE_UNSAFE(kData1))); |
| 418 RegisterClient(CreateClient(kData2, ARRAYSIZE_UNSAFE(kData2))); |
| 419 |
| 420 GetUsage(); |
| 421 MessageLoop::current()->RunAllPending(); |
| 422 |
| 423 EXPECT_EQ(4U, usage_info().size()); |
| 424 for (size_t i = 0; i < usage_info().size(); ++i) { |
| 425 const UsageInfo& info = usage_info()[i]; |
| 426 if (info.host == "foo.com" && info.type == kTemp) { |
| 427 EXPECT_EQ(10 + 15 + 30 + 35, info.usage); |
| 428 } else if (info.host == "bar.com" && info.type == kTemp) { |
| 429 EXPECT_EQ(20, info.usage); |
| 430 } else if (info.host == "bar.com" && info.type == kPerm) { |
| 431 EXPECT_EQ(50 + 40, info.usage); |
| 432 } else if (info.host == "example.com" && info.type == kPerm) { |
| 433 EXPECT_EQ(40, info.usage); |
| 434 } else { |
| 435 ADD_FAILURE() |
| 436 << "Unexpected host, type: " << info.host << ", " << info.type; |
| 437 } |
| 438 } |
| 439 } |
| 440 |
392 TEST_F(QuotaManagerTest, GetUsageAndQuota_Simple) { | 441 TEST_F(QuotaManagerTest, GetUsageAndQuota_Simple) { |
393 static const MockOriginData kData[] = { | 442 static const MockOriginData kData[] = { |
394 { "http://foo.com/", kTemp, 10 }, | 443 { "http://foo.com/", kTemp, 10 }, |
395 { "http://foo.com/", kPerm, 80 }, | 444 { "http://foo.com/", kPerm, 80 }, |
396 }; | 445 }; |
397 RegisterClient(CreateClient(kData, ARRAYSIZE_UNSAFE(kData))); | 446 RegisterClient(CreateClient(kData, ARRAYSIZE_UNSAFE(kData))); |
398 | 447 |
399 GetUsageAndQuota(GURL("http://foo.com/"), kPerm); | 448 GetUsageAndQuota(GURL("http://foo.com/"), kPerm); |
400 MessageLoop::current()->RunAllPending(); | 449 MessageLoop::current()->RunAllPending(); |
401 EXPECT_EQ(kQuotaStatusOk, status()); | 450 EXPECT_EQ(kQuotaStatusOk, status()); |
(...skipping 1183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1585 GetPersistentHostQuota(std::string()); | 1634 GetPersistentHostQuota(std::string()); |
1586 MessageLoop::current()->RunAllPending(); | 1635 MessageLoop::current()->RunAllPending(); |
1587 EXPECT_EQ(kQuotaStatusOk, status()); | 1636 EXPECT_EQ(kQuotaStatusOk, status()); |
1588 EXPECT_EQ(0, quota()); | 1637 EXPECT_EQ(0, quota()); |
1589 | 1638 |
1590 SetPersistentHostQuota(std::string(), 10); | 1639 SetPersistentHostQuota(std::string(), 10); |
1591 MessageLoop::current()->RunAllPending(); | 1640 MessageLoop::current()->RunAllPending(); |
1592 EXPECT_EQ(kQuotaErrorNotSupported, status()); | 1641 EXPECT_EQ(kQuotaErrorNotSupported, status()); |
1593 } | 1642 } |
1594 } // namespace quota | 1643 } // namespace quota |
OLD | NEW |