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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/memory/scoped_callback_factory.h" | 8 #include "base/memory/scoped_callback_factory.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/memory/scoped_temp_dir.h" | 10 #include "base/memory/scoped_temp_dir.h" |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 } | 142 } |
143 | 143 |
144 void GetAvailableSpace() { | 144 void GetAvailableSpace() { |
145 quota_status_ = kQuotaStatusUnknown; | 145 quota_status_ = kQuotaStatusUnknown; |
146 quota_ = -1; | 146 quota_ = -1; |
147 quota_manager_->GetAvailableSpace( | 147 quota_manager_->GetAvailableSpace( |
148 callback_factory_.NewCallback( | 148 callback_factory_.NewCallback( |
149 &QuotaManagerTest::DidGetQuota)); | 149 &QuotaManagerTest::DidGetQuota)); |
150 } | 150 } |
151 | 151 |
| 152 void GetUsageAndQuotaForEviction() { |
| 153 quota_status_ = kQuotaStatusUnknown; |
| 154 usage_ = -1; |
| 155 quota_ = -1; |
| 156 available_space_ = -1; |
| 157 quota_manager_->GetUsageAndQuotaForEviction( |
| 158 callback_factory_.NewCallback( |
| 159 &QuotaManagerTest::DidGetUsageAndQuotaForEviction)); |
| 160 } |
| 161 |
152 void DidGetUsageAndQuota(QuotaStatusCode status, int64 usage, int64 quota) { | 162 void DidGetUsageAndQuota(QuotaStatusCode status, int64 usage, int64 quota) { |
153 quota_status_ = status; | 163 quota_status_ = status; |
154 usage_ = usage; | 164 usage_ = usage; |
155 quota_ = quota; | 165 quota_ = quota; |
156 } | 166 } |
157 | 167 |
158 void DidGetQuota(QuotaStatusCode status, int64 quota) { | 168 void DidGetQuota(QuotaStatusCode status, int64 quota) { |
159 quota_status_ = status; | 169 quota_status_ = status; |
160 quota_ = quota; | 170 quota_ = quota; |
161 } | 171 } |
162 | 172 |
163 void DidGetHostQuota(QuotaStatusCode status, | 173 void DidGetHostQuota(QuotaStatusCode status, |
164 const std::string& host, int64 quota) { | 174 const std::string& host, int64 quota) { |
165 quota_status_ = status; | 175 quota_status_ = status; |
166 host_ = host; | 176 host_ = host; |
167 quota_ = quota; | 177 quota_ = quota; |
168 } | 178 } |
169 | 179 |
170 void DidGetGlobalUsage(int64 usage) { | 180 void DidGetGlobalUsage(int64 usage) { |
171 usage_ = usage; | 181 usage_ = usage; |
172 } | 182 } |
173 | 183 |
174 void DidGetHostUsage(const std::string&, int64 usage) { | 184 void DidGetHostUsage(const std::string&, int64 usage) { |
175 usage_ = usage; | 185 usage_ = usage; |
176 } | 186 } |
177 | 187 |
| 188 void DidGetUsageAndQuotaForEviction(QuotaStatusCode status, |
| 189 int64 usage, int64 quota, int64 available_space) { |
| 190 quota_status_ = status; |
| 191 usage_ = usage; |
| 192 quota_ = quota; |
| 193 available_space_ = available_space; |
| 194 } |
| 195 |
178 void DidDelete(QuotaStatusCode status) { | 196 void DidDelete(QuotaStatusCode status) { |
179 quota_status_ = status; | 197 quota_status_ = status; |
180 } | 198 } |
181 | 199 |
182 void set_additional_callback_count(int c) { additional_callback_count_ = c; } | 200 void set_additional_callback_count(int c) { additional_callback_count_ = c; } |
183 int additional_callback_count() const { return additional_callback_count_; } | 201 int additional_callback_count() const { return additional_callback_count_; } |
184 void DidGetUsageAndQuotaAdditional( | 202 void DidGetUsageAndQuotaAdditional( |
185 QuotaStatusCode status, int64 usage, int64 quota) { | 203 QuotaStatusCode status, int64 usage, int64 quota) { |
186 ++additional_callback_count_; | 204 ++additional_callback_count_; |
187 } | 205 } |
188 | 206 |
189 QuotaManager* quota_manager() const { return quota_manager_.get(); } | 207 QuotaManager* quota_manager() const { return quota_manager_.get(); } |
190 void set_quota_manager(QuotaManager* quota_manager) { | 208 void set_quota_manager(QuotaManager* quota_manager) { |
191 quota_manager_ = quota_manager; | 209 quota_manager_ = quota_manager; |
192 } | 210 } |
193 | 211 |
194 QuotaStatusCode status() const { return quota_status_; } | 212 QuotaStatusCode status() const { return quota_status_; } |
195 int64 usage() const { return usage_; } | 213 int64 usage() const { return usage_; } |
196 int64 quota() const { return quota_; } | 214 int64 quota() const { return quota_; } |
| 215 int64 available_space() const { return available_space_; } |
197 FilePath profile_path() const { return data_dir_.path(); } | 216 FilePath profile_path() const { return data_dir_.path(); } |
198 | 217 |
199 private: | 218 private: |
200 ScopedTempDir data_dir_; | 219 ScopedTempDir data_dir_; |
201 base::ScopedCallbackFactory<QuotaManagerTest> callback_factory_; | 220 base::ScopedCallbackFactory<QuotaManagerTest> callback_factory_; |
202 | 221 |
203 scoped_refptr<QuotaManager> quota_manager_; | 222 scoped_refptr<QuotaManager> quota_manager_; |
204 | 223 |
205 QuotaStatusCode quota_status_; | 224 QuotaStatusCode quota_status_; |
206 std::string host_; | 225 std::string host_; |
207 int64 usage_; | 226 int64 usage_; |
208 int64 quota_; | 227 int64 quota_; |
| 228 int64 available_space_; |
209 | 229 |
210 int additional_callback_count_; | 230 int additional_callback_count_; |
211 | 231 |
212 DISALLOW_COPY_AND_ASSIGN(QuotaManagerTest); | 232 DISALLOW_COPY_AND_ASSIGN(QuotaManagerTest); |
213 }; | 233 }; |
214 | 234 |
215 TEST_F(QuotaManagerTest, GetUsageAndQuota_Simple) { | 235 TEST_F(QuotaManagerTest, GetUsageAndQuota_Simple) { |
216 static const MockOriginData kData[] = { | 236 static const MockOriginData kData[] = { |
217 { "http://foo.com/", kStorageTypeTemporary, 10 }, | 237 { "http://foo.com/", kStorageTypeTemporary, 10 }, |
218 { "http://foo.com/", kStorageTypePersistent, 80 }, | 238 { "http://foo.com/", kStorageTypePersistent, 80 }, |
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 } | 749 } |
730 | 750 |
731 TEST_F(QuotaManagerTest, GetAvailableSpaceTest) { | 751 TEST_F(QuotaManagerTest, GetAvailableSpaceTest) { |
732 GetAvailableSpace(); | 752 GetAvailableSpace(); |
733 MessageLoop::current()->RunAllPending(); | 753 MessageLoop::current()->RunAllPending(); |
734 EXPECT_EQ(kQuotaStatusOk, status()); | 754 EXPECT_EQ(kQuotaStatusOk, status()); |
735 EXPECT_LE(0, quota()); | 755 EXPECT_LE(0, quota()); |
736 int64 direct_called = base::SysInfo::AmountOfFreeDiskSpace(profile_path()); | 756 int64 direct_called = base::SysInfo::AmountOfFreeDiskSpace(profile_path()); |
737 EXPECT_EQ(direct_called, quota()); | 757 EXPECT_EQ(direct_called, quota()); |
738 } | 758 } |
| 759 |
| 760 TEST_F(QuotaManagerTest, GetUsageAndQuotaForEviction) { |
| 761 static const MockOriginData kData[] = { |
| 762 { "http://foo.com/", kStorageTypeTemporary, 1 }, |
| 763 { "http://foo.com:1/", kStorageTypeTemporary, 20 }, |
| 764 { "http://foo.com/", kStorageTypePersistent, 300 }, |
| 765 { "http://bar.com/", kStorageTypeTemporary, 4000 }, |
| 766 }; |
| 767 MockStorageClient* client = CreateClient(kData, ARRAYSIZE_UNSAFE(kData)); |
| 768 RegisterClient(client); |
| 769 |
| 770 SetTemporaryGlobalQuota(10000000); |
| 771 MessageLoop::current()->RunAllPending(); |
| 772 |
| 773 GetUsageAndQuotaForEviction(); |
| 774 MessageLoop::current()->RunAllPending(); |
| 775 EXPECT_EQ(kQuotaStatusOk, status()); |
| 776 EXPECT_EQ(4021, usage()); |
| 777 EXPECT_EQ(10000000, quota()); |
| 778 |
| 779 // TODO(dmikurube): It might be flaky? (Also in GetAvailableSpaceTest.) |
| 780 int64 direct_called = base::SysInfo::AmountOfFreeDiskSpace(profile_path()); |
| 781 EXPECT_EQ(direct_called, available_space()); |
| 782 } |
| 783 |
739 } // namespace quota | 784 } // namespace quota |
OLD | NEW |