OLD | NEW |
1 // Copyright (c) 2011 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 <set> | 5 #include <set> |
6 #include <sstream> | 6 #include <sstream> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
(...skipping 12 matching lines...) Expand all Loading... |
24 #include "webkit/quota/quota_manager.h" | 24 #include "webkit/quota/quota_manager.h" |
25 | 25 |
26 using base::MessageLoopProxy; | 26 using base::MessageLoopProxy; |
27 | 27 |
28 namespace quota { | 28 namespace quota { |
29 | 29 |
30 // For shorter names. | 30 // For shorter names. |
31 const StorageType kTemp = kStorageTypeTemporary; | 31 const StorageType kTemp = kStorageTypeTemporary; |
32 const StorageType kPerm = kStorageTypePersistent; | 32 const StorageType kPerm = kStorageTypePersistent; |
33 | 33 |
| 34 const int kAllClients = QuotaClient::kAllClientsMask; |
| 35 |
34 class QuotaManagerTest : public testing::Test { | 36 class QuotaManagerTest : public testing::Test { |
35 protected: | 37 protected: |
36 typedef QuotaManager::QuotaTableEntry QuotaTableEntry; | 38 typedef QuotaManager::QuotaTableEntry QuotaTableEntry; |
37 typedef QuotaManager::QuotaTableEntries QuotaTableEntries; | 39 typedef QuotaManager::QuotaTableEntries QuotaTableEntries; |
38 typedef QuotaManager::OriginInfoTableEntries OriginInfoTableEntries; | 40 typedef QuotaManager::OriginInfoTableEntries OriginInfoTableEntries; |
39 | 41 |
40 public: | 42 public: |
41 QuotaManagerTest() | 43 QuotaManagerTest() |
42 : weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), | 44 : weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
43 mock_time_counter_(0) { | 45 mock_time_counter_(0) { |
(...skipping 18 matching lines...) Expand all Loading... |
62 quota_manager_ = NULL; | 64 quota_manager_ = NULL; |
63 MessageLoop::current()->RunAllPending(); | 65 MessageLoop::current()->RunAllPending(); |
64 } | 66 } |
65 | 67 |
66 protected: | 68 protected: |
67 MockStorageClient* CreateClient( | 69 MockStorageClient* CreateClient( |
68 const MockOriginData* mock_data, size_t mock_data_size) { | 70 const MockOriginData* mock_data, size_t mock_data_size) { |
69 return new MockStorageClient(quota_manager_->proxy(), | 71 return new MockStorageClient(quota_manager_->proxy(), |
70 mock_data, mock_data_size); | 72 mock_data, mock_data_size); |
71 } | 73 } |
| 74 MockStorageClient* CreateClient( |
| 75 const MockOriginData* mock_data, |
| 76 size_t mock_data_size, |
| 77 QuotaClient::ID id) { |
| 78 return new MockStorageClient(quota_manager_->proxy(), |
| 79 mock_data, id, mock_data_size); |
| 80 } |
72 | 81 |
73 void RegisterClient(MockStorageClient* client) { | 82 void RegisterClient(MockStorageClient* client) { |
74 quota_manager_->proxy()->RegisterClient(client); | 83 quota_manager_->proxy()->RegisterClient(client); |
75 } | 84 } |
76 | 85 |
77 void GetUsageInfo() { | 86 void GetUsageInfo() { |
78 usage_info_.clear(); | 87 usage_info_.clear(); |
79 quota_manager_->GetUsageInfo( | 88 quota_manager_->GetUsageInfo( |
80 base::Bind(&QuotaManagerTest::DidGetUsageInfo, | 89 base::Bind(&QuotaManagerTest::DidGetUsageInfo, |
81 weak_factory_.GetWeakPtr())); | 90 weak_factory_.GetWeakPtr())); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 void EvictOriginData(const GURL& origin, | 180 void EvictOriginData(const GURL& origin, |
172 StorageType type) { | 181 StorageType type) { |
173 quota_status_ = kQuotaStatusUnknown; | 182 quota_status_ = kQuotaStatusUnknown; |
174 quota_manager_->EvictOriginData( | 183 quota_manager_->EvictOriginData( |
175 origin, type, | 184 origin, type, |
176 base::Bind(&QuotaManagerTest::StatusCallback, | 185 base::Bind(&QuotaManagerTest::StatusCallback, |
177 weak_factory_.GetWeakPtr())); | 186 weak_factory_.GetWeakPtr())); |
178 } | 187 } |
179 | 188 |
180 void DeleteOriginData(const GURL& origin, | 189 void DeleteOriginData(const GURL& origin, |
181 StorageType type) { | 190 StorageType type, |
| 191 int quota_client_mask) { |
182 quota_status_ = kQuotaStatusUnknown; | 192 quota_status_ = kQuotaStatusUnknown; |
183 quota_manager_->DeleteOriginData( | 193 quota_manager_->DeleteOriginData( |
184 origin, type, | 194 origin, type, quota_client_mask, |
185 base::Bind(&QuotaManagerTest::StatusCallback, | 195 base::Bind(&QuotaManagerTest::StatusCallback, |
186 weak_factory_.GetWeakPtr())); | 196 weak_factory_.GetWeakPtr())); |
187 } | 197 } |
188 | 198 |
189 void DeleteHostData(const std::string& host, | 199 void DeleteHostData(const std::string& host, |
190 StorageType type) { | 200 StorageType type, |
| 201 int quota_client_mask) { |
191 quota_status_ = kQuotaStatusUnknown; | 202 quota_status_ = kQuotaStatusUnknown; |
192 quota_manager_->DeleteHostData( | 203 quota_manager_->DeleteHostData( |
193 host, type, | 204 host, type, quota_client_mask, |
194 base::Bind(&QuotaManagerTest::StatusCallback, | 205 base::Bind(&QuotaManagerTest::StatusCallback, |
195 weak_factory_.GetWeakPtr())); | 206 weak_factory_.GetWeakPtr())); |
196 } | 207 } |
197 | 208 |
198 void GetAvailableSpace() { | 209 void GetAvailableSpace() { |
199 quota_status_ = kQuotaStatusUnknown; | 210 quota_status_ = kQuotaStatusUnknown; |
200 available_space_ = -1; | 211 available_space_ = -1; |
201 quota_manager_->GetAvailableSpace( | 212 quota_manager_->GetAvailableSpace( |
202 base::Bind(&QuotaManagerTest::DidGetAvailableSpace, | 213 base::Bind(&QuotaManagerTest::DidGetAvailableSpace, |
203 weak_factory_.GetWeakPtr())); | 214 weak_factory_.GetWeakPtr())); |
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
717 SetTemporaryGlobalQuota(100); | 728 SetTemporaryGlobalQuota(100); |
718 MessageLoop::current()->RunAllPending(); | 729 MessageLoop::current()->RunAllPending(); |
719 | 730 |
720 set_additional_callback_count(0); | 731 set_additional_callback_count(0); |
721 GetUsageAndQuota(GURL("http://foo.com/"), kTemp); | 732 GetUsageAndQuota(GURL("http://foo.com/"), kTemp); |
722 RunAdditionalUsageAndQuotaTask(GURL("http://foo.com/"), | 733 RunAdditionalUsageAndQuotaTask(GURL("http://foo.com/"), |
723 kTemp); | 734 kTemp); |
724 RunAdditionalUsageAndQuotaTask(GURL("http://bar.com/"), | 735 RunAdditionalUsageAndQuotaTask(GURL("http://bar.com/"), |
725 kTemp); | 736 kTemp); |
726 | 737 |
727 DeleteOriginData(GURL("http://foo.com/"), kTemp); | 738 DeleteOriginData(GURL("http://foo.com/"), kTemp, kAllClients); |
728 DeleteOriginData(GURL("http://bar.com/"), kTemp); | 739 DeleteOriginData(GURL("http://bar.com/"), kTemp, kAllClients); |
729 | 740 |
730 // Nuke before waiting for callbacks. | 741 // Nuke before waiting for callbacks. |
731 set_quota_manager(NULL); | 742 set_quota_manager(NULL); |
732 MessageLoop::current()->RunAllPending(); | 743 MessageLoop::current()->RunAllPending(); |
733 EXPECT_EQ(kQuotaErrorAbort, status()); | 744 EXPECT_EQ(kQuotaErrorAbort, status()); |
734 } | 745 } |
735 | 746 |
736 TEST_F(QuotaManagerTest, GetTemporaryUsageAndQuota_Overbudget) { | 747 TEST_F(QuotaManagerTest, GetTemporaryUsageAndQuota_Overbudget) { |
737 static const MockOriginData kData[] = { | 748 static const MockOriginData kData[] = { |
738 { "http://usage1/", kTemp, 1 }, | 749 { "http://usage1/", kTemp, 1 }, |
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1312 const int64 predelete_global_tmp = usage(); | 1323 const int64 predelete_global_tmp = usage(); |
1313 | 1324 |
1314 GetHostUsage("foo.com", kTemp); | 1325 GetHostUsage("foo.com", kTemp); |
1315 MessageLoop::current()->RunAllPending(); | 1326 MessageLoop::current()->RunAllPending(); |
1316 int64 predelete_host_tmp = usage(); | 1327 int64 predelete_host_tmp = usage(); |
1317 | 1328 |
1318 GetHostUsage("foo.com", kPerm); | 1329 GetHostUsage("foo.com", kPerm); |
1319 MessageLoop::current()->RunAllPending(); | 1330 MessageLoop::current()->RunAllPending(); |
1320 int64 predelete_host_pers = usage(); | 1331 int64 predelete_host_pers = usage(); |
1321 | 1332 |
1322 DeleteHostData("", kTemp); | 1333 DeleteHostData("", kTemp, kAllClients); |
1323 MessageLoop::current()->RunAllPending(); | 1334 MessageLoop::current()->RunAllPending(); |
1324 EXPECT_EQ(kQuotaStatusOk, status()); | 1335 EXPECT_EQ(kQuotaStatusOk, status()); |
1325 | 1336 |
1326 GetGlobalUsage(kTemp); | 1337 GetGlobalUsage(kTemp); |
1327 MessageLoop::current()->RunAllPending(); | 1338 MessageLoop::current()->RunAllPending(); |
1328 EXPECT_EQ(predelete_global_tmp, usage()); | 1339 EXPECT_EQ(predelete_global_tmp, usage()); |
1329 | 1340 |
1330 GetHostUsage("foo.com", kTemp); | 1341 GetHostUsage("foo.com", kTemp); |
1331 MessageLoop::current()->RunAllPending(); | 1342 MessageLoop::current()->RunAllPending(); |
1332 EXPECT_EQ(predelete_host_tmp, usage()); | 1343 EXPECT_EQ(predelete_host_tmp, usage()); |
1333 | 1344 |
1334 GetHostUsage("foo.com", kPerm); | 1345 GetHostUsage("foo.com", kPerm); |
1335 MessageLoop::current()->RunAllPending(); | 1346 MessageLoop::current()->RunAllPending(); |
1336 EXPECT_EQ(predelete_host_pers, usage()); | 1347 EXPECT_EQ(predelete_host_pers, usage()); |
1337 | 1348 |
1338 DeleteHostData("foo.com", kTemp); | 1349 DeleteHostData("foo.com", kTemp, kAllClients); |
1339 MessageLoop::current()->RunAllPending(); | 1350 MessageLoop::current()->RunAllPending(); |
1340 EXPECT_EQ(kQuotaStatusOk, status()); | 1351 EXPECT_EQ(kQuotaStatusOk, status()); |
1341 | 1352 |
1342 GetGlobalUsage(kTemp); | 1353 GetGlobalUsage(kTemp); |
1343 MessageLoop::current()->RunAllPending(); | 1354 MessageLoop::current()->RunAllPending(); |
1344 EXPECT_EQ(predelete_global_tmp - 1, usage()); | 1355 EXPECT_EQ(predelete_global_tmp - 1, usage()); |
1345 | 1356 |
1346 GetHostUsage("foo.com", kTemp); | 1357 GetHostUsage("foo.com", kTemp); |
1347 MessageLoop::current()->RunAllPending(); | 1358 MessageLoop::current()->RunAllPending(); |
1348 EXPECT_EQ(predelete_host_tmp - 1, usage()); | 1359 EXPECT_EQ(predelete_host_tmp - 1, usage()); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1385 | 1396 |
1386 GetHostUsage("foo.com", kPerm); | 1397 GetHostUsage("foo.com", kPerm); |
1387 MessageLoop::current()->RunAllPending(); | 1398 MessageLoop::current()->RunAllPending(); |
1388 const int64 predelete_foo_pers = usage(); | 1399 const int64 predelete_foo_pers = usage(); |
1389 | 1400 |
1390 GetHostUsage("bar.com", kPerm); | 1401 GetHostUsage("bar.com", kPerm); |
1391 MessageLoop::current()->RunAllPending(); | 1402 MessageLoop::current()->RunAllPending(); |
1392 const int64 predelete_bar_pers = usage(); | 1403 const int64 predelete_bar_pers = usage(); |
1393 | 1404 |
1394 reset_status_callback_count(); | 1405 reset_status_callback_count(); |
1395 DeleteHostData("foo.com", kTemp); | 1406 DeleteHostData("foo.com", kTemp, kAllClients); |
1396 DeleteHostData("bar.com", kTemp); | 1407 DeleteHostData("bar.com", kTemp, kAllClients); |
1397 DeleteHostData("foo.com", kTemp); | 1408 DeleteHostData("foo.com", kTemp, kAllClients); |
1398 MessageLoop::current()->RunAllPending(); | 1409 MessageLoop::current()->RunAllPending(); |
1399 | 1410 |
1400 EXPECT_EQ(3, status_callback_count()); | 1411 EXPECT_EQ(3, status_callback_count()); |
1401 | 1412 |
1402 DumpOriginInfoTable(); | 1413 DumpOriginInfoTable(); |
1403 MessageLoop::current()->RunAllPending(); | 1414 MessageLoop::current()->RunAllPending(); |
1404 | 1415 |
1405 typedef OriginInfoTableEntries::const_iterator iterator; | 1416 typedef OriginInfoTableEntries::const_iterator iterator; |
1406 for (iterator itr(origin_info_entries().begin()), | 1417 for (iterator itr(origin_info_entries().begin()), |
1407 end(origin_info_entries().end()); | 1418 end(origin_info_entries().end()); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1479 | 1490 |
1480 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kData1); ++i) | 1491 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kData1); ++i) |
1481 quota_manager()->NotifyStorageAccessed(QuotaClient::kMockStart, | 1492 quota_manager()->NotifyStorageAccessed(QuotaClient::kMockStart, |
1482 GURL(kData1[i].origin), kData1[i].type); | 1493 GURL(kData1[i].origin), kData1[i].type); |
1483 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kData2); ++i) | 1494 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kData2); ++i) |
1484 quota_manager()->NotifyStorageAccessed(QuotaClient::kMockStart, | 1495 quota_manager()->NotifyStorageAccessed(QuotaClient::kMockStart, |
1485 GURL(kData2[i].origin), kData2[i].type); | 1496 GURL(kData2[i].origin), kData2[i].type); |
1486 MessageLoop::current()->RunAllPending(); | 1497 MessageLoop::current()->RunAllPending(); |
1487 | 1498 |
1488 reset_status_callback_count(); | 1499 reset_status_callback_count(); |
1489 DeleteOriginData(GURL("http://foo.com/"), kTemp); | 1500 DeleteOriginData(GURL("http://foo.com/"), kTemp, kAllClients); |
1490 DeleteOriginData(GURL("http://bar.com/"), kTemp); | 1501 DeleteOriginData(GURL("http://bar.com/"), kTemp, kAllClients); |
1491 DeleteOriginData(GURL("http://foo.com/"), kTemp); | 1502 DeleteOriginData(GURL("http://foo.com/"), kTemp, kAllClients); |
1492 MessageLoop::current()->RunAllPending(); | 1503 MessageLoop::current()->RunAllPending(); |
1493 | 1504 |
1494 EXPECT_EQ(3, status_callback_count()); | 1505 EXPECT_EQ(3, status_callback_count()); |
1495 | 1506 |
1496 DumpOriginInfoTable(); | 1507 DumpOriginInfoTable(); |
1497 MessageLoop::current()->RunAllPending(); | 1508 MessageLoop::current()->RunAllPending(); |
1498 | 1509 |
1499 typedef OriginInfoTableEntries::const_iterator iterator; | 1510 typedef OriginInfoTableEntries::const_iterator iterator; |
1500 for (iterator itr(origin_info_entries().begin()), | 1511 for (iterator itr(origin_info_entries().begin()), |
1501 end(origin_info_entries().end()); | 1512 end(origin_info_entries().end()); |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1789 TEST_F(QuotaManagerTest, QuotaForEmptyHost) { | 1800 TEST_F(QuotaManagerTest, QuotaForEmptyHost) { |
1790 GetPersistentHostQuota(std::string()); | 1801 GetPersistentHostQuota(std::string()); |
1791 MessageLoop::current()->RunAllPending(); | 1802 MessageLoop::current()->RunAllPending(); |
1792 EXPECT_EQ(kQuotaStatusOk, status()); | 1803 EXPECT_EQ(kQuotaStatusOk, status()); |
1793 EXPECT_EQ(0, quota()); | 1804 EXPECT_EQ(0, quota()); |
1794 | 1805 |
1795 SetPersistentHostQuota(std::string(), 10); | 1806 SetPersistentHostQuota(std::string(), 10); |
1796 MessageLoop::current()->RunAllPending(); | 1807 MessageLoop::current()->RunAllPending(); |
1797 EXPECT_EQ(kQuotaErrorNotSupported, status()); | 1808 EXPECT_EQ(kQuotaErrorNotSupported, status()); |
1798 } | 1809 } |
| 1810 |
| 1811 TEST_F(QuotaManagerTest, DeleteSpecificClientTypeSingleOrigin) { |
| 1812 static const MockOriginData kData1[] = { |
| 1813 { "http://foo.com/", kTemp, 1 }, |
| 1814 }; |
| 1815 static const MockOriginData kData2[] = { |
| 1816 { "http://foo.com/", kTemp, 2 }, |
| 1817 }; |
| 1818 static const MockOriginData kData3[] = { |
| 1819 { "http://foo.com/", kTemp, 4 }, |
| 1820 }; |
| 1821 static const MockOriginData kData4[] = { |
| 1822 { "http://foo.com/", kTemp, 8 }, |
| 1823 }; |
| 1824 MockStorageClient* client1 = CreateClient(kData1, ARRAYSIZE_UNSAFE(kData1), |
| 1825 QuotaClient::kFileSystem); |
| 1826 MockStorageClient* client2 = CreateClient(kData2, ARRAYSIZE_UNSAFE(kData2), |
| 1827 QuotaClient::kAppcache); |
| 1828 MockStorageClient* client3 = CreateClient(kData3, ARRAYSIZE_UNSAFE(kData3), |
| 1829 QuotaClient::kDatabase); |
| 1830 MockStorageClient* client4 = CreateClient(kData4, ARRAYSIZE_UNSAFE(kData4), |
| 1831 QuotaClient::kIndexedDatabase); |
| 1832 RegisterClient(client1); |
| 1833 RegisterClient(client2); |
| 1834 RegisterClient(client3); |
| 1835 RegisterClient(client4); |
| 1836 |
| 1837 GetHostUsage("foo.com", kTemp); |
| 1838 MessageLoop::current()->RunAllPending(); |
| 1839 const int64 predelete_foo_tmp = usage(); |
| 1840 |
| 1841 DeleteOriginData(GURL("http://foo.com/"), kTemp, QuotaClient::kFileSystem); |
| 1842 MessageLoop::current()->RunAllPending(); |
| 1843 GetHostUsage("foo.com", kTemp); |
| 1844 MessageLoop::current()->RunAllPending(); |
| 1845 EXPECT_EQ(predelete_foo_tmp - 1, usage()); |
| 1846 |
| 1847 DeleteOriginData(GURL("http://foo.com/"), kTemp, QuotaClient::kAppcache); |
| 1848 MessageLoop::current()->RunAllPending(); |
| 1849 GetHostUsage("foo.com", kTemp); |
| 1850 MessageLoop::current()->RunAllPending(); |
| 1851 EXPECT_EQ(predelete_foo_tmp - 2 - 1, usage()); |
| 1852 |
| 1853 DeleteOriginData(GURL("http://foo.com/"), kTemp, QuotaClient::kDatabase); |
| 1854 MessageLoop::current()->RunAllPending(); |
| 1855 GetHostUsage("foo.com", kTemp); |
| 1856 MessageLoop::current()->RunAllPending(); |
| 1857 EXPECT_EQ(predelete_foo_tmp - 4 - 2 - 1, usage()); |
| 1858 |
| 1859 DeleteOriginData(GURL("http://foo.com/"), kTemp, |
| 1860 QuotaClient::kIndexedDatabase); |
| 1861 MessageLoop::current()->RunAllPending(); |
| 1862 GetHostUsage("foo.com", kTemp); |
| 1863 MessageLoop::current()->RunAllPending(); |
| 1864 EXPECT_EQ(predelete_foo_tmp - 8 - 4 - 2 - 1, usage()); |
| 1865 } |
| 1866 |
| 1867 TEST_F(QuotaManagerTest, DeleteSpecificClientTypeSingleHost) { |
| 1868 static const MockOriginData kData1[] = { |
| 1869 { "http://foo.com:1111/", kTemp, 1 }, |
| 1870 }; |
| 1871 static const MockOriginData kData2[] = { |
| 1872 { "http://foo.com:2222/", kTemp, 2 }, |
| 1873 }; |
| 1874 static const MockOriginData kData3[] = { |
| 1875 { "http://foo.com:3333/", kTemp, 4 }, |
| 1876 }; |
| 1877 static const MockOriginData kData4[] = { |
| 1878 { "http://foo.com:4444/", kTemp, 8 }, |
| 1879 }; |
| 1880 MockStorageClient* client1 = CreateClient(kData1, ARRAYSIZE_UNSAFE(kData1), |
| 1881 QuotaClient::kFileSystem); |
| 1882 MockStorageClient* client2 = CreateClient(kData2, ARRAYSIZE_UNSAFE(kData2), |
| 1883 QuotaClient::kAppcache); |
| 1884 MockStorageClient* client3 = CreateClient(kData3, ARRAYSIZE_UNSAFE(kData3), |
| 1885 QuotaClient::kDatabase); |
| 1886 MockStorageClient* client4 = CreateClient(kData4, ARRAYSIZE_UNSAFE(kData4), |
| 1887 QuotaClient::kIndexedDatabase); |
| 1888 RegisterClient(client1); |
| 1889 RegisterClient(client2); |
| 1890 RegisterClient(client3); |
| 1891 RegisterClient(client4); |
| 1892 |
| 1893 GetHostUsage("foo.com", kTemp); |
| 1894 MessageLoop::current()->RunAllPending(); |
| 1895 const int64 predelete_foo_tmp = usage(); |
| 1896 |
| 1897 DeleteHostData("foo.com", kTemp, QuotaClient::kFileSystem); |
| 1898 MessageLoop::current()->RunAllPending(); |
| 1899 GetHostUsage("foo.com", kTemp); |
| 1900 MessageLoop::current()->RunAllPending(); |
| 1901 EXPECT_EQ(predelete_foo_tmp - 1, usage()); |
| 1902 |
| 1903 DeleteHostData("foo.com", kTemp, QuotaClient::kAppcache); |
| 1904 MessageLoop::current()->RunAllPending(); |
| 1905 GetHostUsage("foo.com", kTemp); |
| 1906 MessageLoop::current()->RunAllPending(); |
| 1907 EXPECT_EQ(predelete_foo_tmp - 2 - 1, usage()); |
| 1908 |
| 1909 DeleteHostData("foo.com", kTemp, QuotaClient::kDatabase); |
| 1910 MessageLoop::current()->RunAllPending(); |
| 1911 GetHostUsage("foo.com", kTemp); |
| 1912 MessageLoop::current()->RunAllPending(); |
| 1913 EXPECT_EQ(predelete_foo_tmp - 4 - 2 - 1, usage()); |
| 1914 |
| 1915 DeleteHostData("foo.com", kTemp, QuotaClient::kIndexedDatabase); |
| 1916 MessageLoop::current()->RunAllPending(); |
| 1917 GetHostUsage("foo.com", kTemp); |
| 1918 MessageLoop::current()->RunAllPending(); |
| 1919 EXPECT_EQ(predelete_foo_tmp - 8 - 4 - 2 - 1, usage()); |
| 1920 } |
| 1921 |
| 1922 TEST_F(QuotaManagerTest, DeleteMultipleClientTypesSingleOrigin) { |
| 1923 static const MockOriginData kData1[] = { |
| 1924 { "http://foo.com/", kTemp, 1 }, |
| 1925 }; |
| 1926 static const MockOriginData kData2[] = { |
| 1927 { "http://foo.com/", kTemp, 2 }, |
| 1928 }; |
| 1929 static const MockOriginData kData3[] = { |
| 1930 { "http://foo.com/", kTemp, 4 }, |
| 1931 }; |
| 1932 static const MockOriginData kData4[] = { |
| 1933 { "http://foo.com/", kTemp, 8 }, |
| 1934 }; |
| 1935 MockStorageClient* client1 = CreateClient(kData1, ARRAYSIZE_UNSAFE(kData1), |
| 1936 QuotaClient::kFileSystem); |
| 1937 MockStorageClient* client2 = CreateClient(kData2, ARRAYSIZE_UNSAFE(kData2), |
| 1938 QuotaClient::kAppcache); |
| 1939 MockStorageClient* client3 = CreateClient(kData3, ARRAYSIZE_UNSAFE(kData3), |
| 1940 QuotaClient::kDatabase); |
| 1941 MockStorageClient* client4 = CreateClient(kData4, ARRAYSIZE_UNSAFE(kData4), |
| 1942 QuotaClient::kIndexedDatabase); |
| 1943 RegisterClient(client1); |
| 1944 RegisterClient(client2); |
| 1945 RegisterClient(client3); |
| 1946 RegisterClient(client4); |
| 1947 |
| 1948 GetHostUsage("foo.com", kTemp); |
| 1949 MessageLoop::current()->RunAllPending(); |
| 1950 const int64 predelete_foo_tmp = usage(); |
| 1951 |
| 1952 DeleteOriginData(GURL("http://foo.com/"), kTemp, |
| 1953 QuotaClient::kFileSystem | QuotaClient::kDatabase); |
| 1954 MessageLoop::current()->RunAllPending(); |
| 1955 GetHostUsage("foo.com", kTemp); |
| 1956 MessageLoop::current()->RunAllPending(); |
| 1957 EXPECT_EQ(predelete_foo_tmp - 4 - 1, usage()); |
| 1958 |
| 1959 DeleteOriginData(GURL("http://foo.com/"), kTemp, |
| 1960 QuotaClient::kAppcache | QuotaClient::kIndexedDatabase); |
| 1961 MessageLoop::current()->RunAllPending(); |
| 1962 GetHostUsage("foo.com", kTemp); |
| 1963 MessageLoop::current()->RunAllPending(); |
| 1964 EXPECT_EQ(predelete_foo_tmp - 8 - 4 - 2 - 1, usage()); |
| 1965 } |
| 1966 |
| 1967 TEST_F(QuotaManagerTest, DeleteMultipleClientTypesSingleHost) { |
| 1968 static const MockOriginData kData1[] = { |
| 1969 { "http://foo.com:1111/", kTemp, 1 }, |
| 1970 }; |
| 1971 static const MockOriginData kData2[] = { |
| 1972 { "http://foo.com:2222/", kTemp, 2 }, |
| 1973 }; |
| 1974 static const MockOriginData kData3[] = { |
| 1975 { "http://foo.com:3333/", kTemp, 4 }, |
| 1976 }; |
| 1977 static const MockOriginData kData4[] = { |
| 1978 { "http://foo.com:4444/", kTemp, 8 }, |
| 1979 }; |
| 1980 MockStorageClient* client1 = CreateClient(kData1, ARRAYSIZE_UNSAFE(kData1), |
| 1981 QuotaClient::kFileSystem); |
| 1982 MockStorageClient* client2 = CreateClient(kData2, ARRAYSIZE_UNSAFE(kData2), |
| 1983 QuotaClient::kAppcache); |
| 1984 MockStorageClient* client3 = CreateClient(kData3, ARRAYSIZE_UNSAFE(kData3), |
| 1985 QuotaClient::kDatabase); |
| 1986 MockStorageClient* client4 = CreateClient(kData4, ARRAYSIZE_UNSAFE(kData4), |
| 1987 QuotaClient::kIndexedDatabase); |
| 1988 RegisterClient(client1); |
| 1989 RegisterClient(client2); |
| 1990 RegisterClient(client3); |
| 1991 RegisterClient(client4); |
| 1992 |
| 1993 GetHostUsage("foo.com", kTemp); |
| 1994 MessageLoop::current()->RunAllPending(); |
| 1995 const int64 predelete_foo_tmp = usage(); |
| 1996 |
| 1997 DeleteHostData("foo.com", kTemp, |
| 1998 QuotaClient::kFileSystem | QuotaClient::kAppcache); |
| 1999 MessageLoop::current()->RunAllPending(); |
| 2000 GetHostUsage("foo.com", kTemp); |
| 2001 MessageLoop::current()->RunAllPending(); |
| 2002 EXPECT_EQ(predelete_foo_tmp - 2 - 1, usage()); |
| 2003 |
| 2004 DeleteHostData("foo.com", kTemp, |
| 2005 QuotaClient::kDatabase | QuotaClient::kIndexedDatabase); |
| 2006 MessageLoop::current()->RunAllPending(); |
| 2007 GetHostUsage("foo.com", kTemp); |
| 2008 MessageLoop::current()->RunAllPending(); |
| 2009 EXPECT_EQ(predelete_foo_tmp - 8 - 4 - 2 - 1, usage()); |
| 2010 } |
1799 } // namespace quota | 2011 } // namespace quota |
OLD | NEW |