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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/pickle.h" | 10 #include "base/pickle.h" |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 net::CompletionCallback deletion_callback_; | 177 net::CompletionCallback deletion_callback_; |
178 | 178 |
179 private: | 179 private: |
180 MessageLoop message_loop_; | 180 MessageLoop message_loop_; |
181 }; | 181 }; |
182 | 182 |
183 TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { | 183 TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { |
184 // Without giving mock storage simiulated info, should fail. | 184 // Without giving mock storage simiulated info, should fail. |
185 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); | 185 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
186 EXPECT_EQ(0, delete_completion_count_); | 186 EXPECT_EQ(0, delete_completion_count_); |
187 MessageLoop::current()->RunAllPending(); | 187 MessageLoop::current()->RunUntilIdle(); |
188 EXPECT_EQ(1, delete_completion_count_); | 188 EXPECT_EQ(1, delete_completion_count_); |
189 EXPECT_EQ(net::ERR_FAILED, delete_result_); | 189 EXPECT_EQ(net::ERR_FAILED, delete_result_); |
190 delete_completion_count_ = 0; | 190 delete_completion_count_ = 0; |
191 | 191 |
192 // Should succeed given an empty info collection. | 192 // Should succeed given an empty info collection. |
193 mock_storage()->SimulateGetAllInfo(new AppCacheInfoCollection); | 193 mock_storage()->SimulateGetAllInfo(new AppCacheInfoCollection); |
194 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); | 194 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
195 EXPECT_EQ(0, delete_completion_count_); | 195 EXPECT_EQ(0, delete_completion_count_); |
196 MessageLoop::current()->RunAllPending(); | 196 MessageLoop::current()->RunUntilIdle(); |
197 EXPECT_EQ(1, delete_completion_count_); | 197 EXPECT_EQ(1, delete_completion_count_); |
198 EXPECT_EQ(net::OK, delete_result_); | 198 EXPECT_EQ(net::OK, delete_result_); |
199 delete_completion_count_ = 0; | 199 delete_completion_count_ = 0; |
200 | 200 |
201 scoped_refptr<AppCacheInfoCollection> info(new AppCacheInfoCollection); | 201 scoped_refptr<AppCacheInfoCollection> info(new AppCacheInfoCollection); |
202 | 202 |
203 // Should succeed given a non-empty info collection. | 203 // Should succeed given a non-empty info collection. |
204 AppCacheInfo mock_manifest_1; | 204 AppCacheInfo mock_manifest_1; |
205 AppCacheInfo mock_manifest_2; | 205 AppCacheInfo mock_manifest_2; |
206 AppCacheInfo mock_manifest_3; | 206 AppCacheInfo mock_manifest_3; |
207 mock_manifest_1.manifest_url = kOrigin.Resolve("manifest1"); | 207 mock_manifest_1.manifest_url = kOrigin.Resolve("manifest1"); |
208 mock_manifest_2.manifest_url = kOrigin.Resolve("manifest2"); | 208 mock_manifest_2.manifest_url = kOrigin.Resolve("manifest2"); |
209 mock_manifest_3.manifest_url = kOrigin.Resolve("manifest3"); | 209 mock_manifest_3.manifest_url = kOrigin.Resolve("manifest3"); |
210 AppCacheInfoVector info_vector; | 210 AppCacheInfoVector info_vector; |
211 info_vector.push_back(mock_manifest_1); | 211 info_vector.push_back(mock_manifest_1); |
212 info_vector.push_back(mock_manifest_2); | 212 info_vector.push_back(mock_manifest_2); |
213 info_vector.push_back(mock_manifest_3); | 213 info_vector.push_back(mock_manifest_3); |
214 info->infos_by_origin[kOrigin] = info_vector; | 214 info->infos_by_origin[kOrigin] = info_vector; |
215 mock_storage()->SimulateGetAllInfo(info); | 215 mock_storage()->SimulateGetAllInfo(info); |
216 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); | 216 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
217 EXPECT_EQ(0, delete_completion_count_); | 217 EXPECT_EQ(0, delete_completion_count_); |
218 MessageLoop::current()->RunAllPending(); | 218 MessageLoop::current()->RunUntilIdle(); |
219 EXPECT_EQ(1, delete_completion_count_); | 219 EXPECT_EQ(1, delete_completion_count_); |
220 EXPECT_EQ(net::OK, delete_result_); | 220 EXPECT_EQ(net::OK, delete_result_); |
221 delete_completion_count_ = 0; | 221 delete_completion_count_ = 0; |
222 | 222 |
223 // Should fail if storage fails to delete. | 223 // Should fail if storage fails to delete. |
224 info->infos_by_origin[kOrigin] = info_vector; | 224 info->infos_by_origin[kOrigin] = info_vector; |
225 mock_storage()->SimulateGetAllInfo(info); | 225 mock_storage()->SimulateGetAllInfo(info); |
226 mock_storage()->SimulateMakeGroupObsoleteFailure(); | 226 mock_storage()->SimulateMakeGroupObsoleteFailure(); |
227 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); | 227 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
228 EXPECT_EQ(0, delete_completion_count_); | 228 EXPECT_EQ(0, delete_completion_count_); |
229 MessageLoop::current()->RunAllPending(); | 229 MessageLoop::current()->RunUntilIdle(); |
230 EXPECT_EQ(1, delete_completion_count_); | 230 EXPECT_EQ(1, delete_completion_count_); |
231 EXPECT_EQ(net::ERR_FAILED, delete_result_); | 231 EXPECT_EQ(net::ERR_FAILED, delete_result_); |
232 delete_completion_count_ = 0; | 232 delete_completion_count_ = 0; |
233 | 233 |
234 // Should complete with abort error if the service is deleted | 234 // Should complete with abort error if the service is deleted |
235 // prior to a delete completion. | 235 // prior to a delete completion. |
236 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); | 236 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
237 EXPECT_EQ(0, delete_completion_count_); | 237 EXPECT_EQ(0, delete_completion_count_); |
238 service_.reset(); // kill it | 238 service_.reset(); // kill it |
239 EXPECT_EQ(1, delete_completion_count_); | 239 EXPECT_EQ(1, delete_completion_count_); |
240 EXPECT_EQ(net::ERR_ABORTED, delete_result_); | 240 EXPECT_EQ(net::ERR_ABORTED, delete_result_); |
241 delete_completion_count_ = 0; | 241 delete_completion_count_ = 0; |
242 | 242 |
243 // Let any tasks lingering from the sudden deletion run and verify | 243 // Let any tasks lingering from the sudden deletion run and verify |
244 // no other completion calls occur. | 244 // no other completion calls occur. |
245 MessageLoop::current()->RunAllPending(); | 245 MessageLoop::current()->RunUntilIdle(); |
246 EXPECT_EQ(0, delete_completion_count_); | 246 EXPECT_EQ(0, delete_completion_count_); |
247 } | 247 } |
248 | 248 |
249 TEST_F(AppCacheServiceTest, CheckAppCacheResponse) { | 249 TEST_F(AppCacheServiceTest, CheckAppCacheResponse) { |
250 // Check a non-existing manifest. | 250 // Check a non-existing manifest. |
251 EXPECT_FALSE(IsGroupStored(kManifestUrl)); | 251 EXPECT_FALSE(IsGroupStored(kManifestUrl)); |
252 service_->CheckAppCacheResponse(kManifestUrl, 1, 1); | 252 service_->CheckAppCacheResponse(kManifestUrl, 1, 1); |
253 MessageLoop::current()->RunAllPending(); | 253 MessageLoop::current()->RunUntilIdle(); |
254 EXPECT_EQ(0, CountPendingHelpers()); | 254 EXPECT_EQ(0, CountPendingHelpers()); |
255 EXPECT_FALSE(IsGroupStored(kManifestUrl)); | 255 EXPECT_FALSE(IsGroupStored(kManifestUrl)); |
256 ResetStorage(); | 256 ResetStorage(); |
257 | 257 |
258 // Check a response that looks good. | 258 // Check a response that looks good. |
259 // Nothing should be deleted. | 259 // Nothing should be deleted. |
260 SetupMockGroup(); | 260 SetupMockGroup(); |
261 EXPECT_TRUE(IsGroupStored(kManifestUrl)); | 261 EXPECT_TRUE(IsGroupStored(kManifestUrl)); |
262 SetupMockReader(true, true, true); | 262 SetupMockReader(true, true, true); |
263 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); | 263 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); |
264 MessageLoop::current()->RunAllPending(); | 264 MessageLoop::current()->RunUntilIdle(); |
265 EXPECT_EQ(0, CountPendingHelpers()); | 265 EXPECT_EQ(0, CountPendingHelpers()); |
266 EXPECT_TRUE(IsGroupStored(kManifestUrl)); | 266 EXPECT_TRUE(IsGroupStored(kManifestUrl)); |
267 ResetStorage(); | 267 ResetStorage(); |
268 | 268 |
269 // Check a response for which there is no cache entry. | 269 // Check a response for which there is no cache entry. |
270 // The group should get deleted. | 270 // The group should get deleted. |
271 SetupMockGroup(); | 271 SetupMockGroup(); |
272 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, | 272 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, |
273 kMissingResponseId); | 273 kMissingResponseId); |
274 MessageLoop::current()->RunAllPending(); | 274 MessageLoop::current()->RunUntilIdle(); |
275 EXPECT_EQ(0, CountPendingHelpers()); | 275 EXPECT_EQ(0, CountPendingHelpers()); |
276 EXPECT_FALSE(IsGroupStored(kManifestUrl)); | 276 EXPECT_FALSE(IsGroupStored(kManifestUrl)); |
277 ResetStorage(); | 277 ResetStorage(); |
278 | 278 |
279 // Check a response for which there is no manifest entry in a newer version | 279 // Check a response for which there is no manifest entry in a newer version |
280 // of the cache. Nothing should get deleted in this case. | 280 // of the cache. Nothing should get deleted in this case. |
281 SetupMockGroup(); | 281 SetupMockGroup(); |
282 service_->CheckAppCacheResponse(kManifestUrl, kMissingCacheId, | 282 service_->CheckAppCacheResponse(kManifestUrl, kMissingCacheId, |
283 kMissingResponseId); | 283 kMissingResponseId); |
284 MessageLoop::current()->RunAllPending(); | 284 MessageLoop::current()->RunUntilIdle(); |
285 EXPECT_EQ(0, CountPendingHelpers()); | 285 EXPECT_EQ(0, CountPendingHelpers()); |
286 EXPECT_TRUE(IsGroupStored(kManifestUrl)); | 286 EXPECT_TRUE(IsGroupStored(kManifestUrl)); |
287 ResetStorage(); | 287 ResetStorage(); |
288 | 288 |
289 // Check a response with bad headers. | 289 // Check a response with bad headers. |
290 SetupMockGroup(); | 290 SetupMockGroup(); |
291 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); | 291 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); |
292 SetupMockReader(false, true, true); | 292 SetupMockReader(false, true, true); |
293 MessageLoop::current()->RunAllPending(); | 293 MessageLoop::current()->RunUntilIdle(); |
294 EXPECT_EQ(0, CountPendingHelpers()); | 294 EXPECT_EQ(0, CountPendingHelpers()); |
295 EXPECT_FALSE(IsGroupStored(kManifestUrl)); | 295 EXPECT_FALSE(IsGroupStored(kManifestUrl)); |
296 ResetStorage(); | 296 ResetStorage(); |
297 | 297 |
298 // Check a response with bad data. | 298 // Check a response with bad data. |
299 SetupMockGroup(); | 299 SetupMockGroup(); |
300 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); | 300 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); |
301 SetupMockReader(true, false, true); | 301 SetupMockReader(true, false, true); |
302 MessageLoop::current()->RunAllPending(); | 302 MessageLoop::current()->RunUntilIdle(); |
303 EXPECT_EQ(0, CountPendingHelpers()); | 303 EXPECT_EQ(0, CountPendingHelpers()); |
304 EXPECT_FALSE(IsGroupStored(kManifestUrl)); | 304 EXPECT_FALSE(IsGroupStored(kManifestUrl)); |
305 ResetStorage(); | 305 ResetStorage(); |
306 | 306 |
307 // Check a response with truncated data. | 307 // Check a response with truncated data. |
308 SetupMockGroup(); | 308 SetupMockGroup(); |
309 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); | 309 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); |
310 SetupMockReader(true, true, false); | 310 SetupMockReader(true, true, false); |
311 MessageLoop::current()->RunAllPending(); | 311 MessageLoop::current()->RunUntilIdle(); |
312 EXPECT_EQ(0, CountPendingHelpers()); | 312 EXPECT_EQ(0, CountPendingHelpers()); |
313 EXPECT_FALSE(IsGroupStored(kManifestUrl)); | 313 EXPECT_FALSE(IsGroupStored(kManifestUrl)); |
314 ResetStorage(); | 314 ResetStorage(); |
315 | 315 |
316 service_.reset(); // Clean up. | 316 service_.reset(); // Clean up. |
317 MessageLoop::current()->RunAllPending(); | 317 MessageLoop::current()->RunUntilIdle(); |
318 } | 318 } |
319 | 319 |
320 } // namespace appcache | 320 } // namespace appcache |
OLD | NEW |