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 <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/message_loop.h" | 9 #include "base/message_loop.h" |
9 #include "base/pickle.h" | 10 #include "base/pickle.h" |
10 #include "net/base/completion_callback.h" | 11 #include "net/base/completion_callback.h" |
11 #include "net/base/io_buffer.h" | 12 #include "net/base/io_buffer.h" |
12 #include "net/http/http_response_headers.h" | 13 #include "net/http/http_response_headers.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
14 #include "webkit/appcache/appcache_response.h" | 15 #include "webkit/appcache/appcache_response.h" |
15 #include "webkit/appcache/appcache_service.h" | 16 #include "webkit/appcache/appcache_service.h" |
16 #include "webkit/appcache/mock_appcache_storage.h" | 17 #include "webkit/appcache/mock_appcache_storage.h" |
17 | 18 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 | 83 |
83 | 84 |
84 class AppCacheServiceTest : public testing::Test { | 85 class AppCacheServiceTest : public testing::Test { |
85 public: | 86 public: |
86 AppCacheServiceTest() | 87 AppCacheServiceTest() |
87 : kOrigin("http://hello/"), | 88 : kOrigin("http://hello/"), |
88 kManifestUrl(kOrigin.Resolve("manifest")), | 89 kManifestUrl(kOrigin.Resolve("manifest")), |
89 service_(new AppCacheService(NULL)), | 90 service_(new AppCacheService(NULL)), |
90 delete_result_(net::OK), delete_completion_count_(0), | 91 delete_result_(net::OK), delete_completion_count_(0), |
91 ALLOW_THIS_IN_INITIALIZER_LIST(deletion_callback_( | 92 ALLOW_THIS_IN_INITIALIZER_LIST(deletion_callback_( |
92 this, &AppCacheServiceTest::OnDeleteAppCachesComplete)) { | 93 base::Bind(&AppCacheServiceTest::OnDeleteAppCachesComplete, |
| 94 base::Unretained(this)))) { |
93 // Setup to use mock storage. | 95 // Setup to use mock storage. |
94 service_->storage_.reset(new MockAppCacheStorage(service_.get())); | 96 service_->storage_.reset(new MockAppCacheStorage(service_.get())); |
95 } | 97 } |
96 | 98 |
97 void OnDeleteAppCachesComplete(int result) { | 99 void OnDeleteAppCachesComplete(int result) { |
98 delete_result_ = result; | 100 delete_result_ = result; |
99 ++delete_completion_count_; | 101 ++delete_completion_count_; |
100 } | 102 } |
101 | 103 |
102 MockAppCacheStorage* mock_storage() { | 104 MockAppCacheStorage* mock_storage() { |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 info->Persist(pickle, kSkipTransientHeaders, kTruncated); | 167 info->Persist(pickle, kSkipTransientHeaders, kTruncated); |
166 return pickle->size(); | 168 return pickle->size(); |
167 } | 169 } |
168 | 170 |
169 const GURL kOrigin; | 171 const GURL kOrigin; |
170 const GURL kManifestUrl; | 172 const GURL kManifestUrl; |
171 | 173 |
172 scoped_ptr<AppCacheService> service_; | 174 scoped_ptr<AppCacheService> service_; |
173 int delete_result_; | 175 int delete_result_; |
174 int delete_completion_count_; | 176 int delete_completion_count_; |
175 net::OldCompletionCallbackImpl<AppCacheServiceTest> deletion_callback_; | 177 net::CompletionCallback deletion_callback_; |
176 }; | 178 }; |
177 | 179 |
178 TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { | 180 TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { |
179 // Without giving mock storage simiulated info, should fail. | 181 // Without giving mock storage simiulated info, should fail. |
180 service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); | 182 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
181 EXPECT_EQ(0, delete_completion_count_); | 183 EXPECT_EQ(0, delete_completion_count_); |
182 MessageLoop::current()->RunAllPending(); | 184 MessageLoop::current()->RunAllPending(); |
183 EXPECT_EQ(1, delete_completion_count_); | 185 EXPECT_EQ(1, delete_completion_count_); |
184 EXPECT_EQ(net::ERR_FAILED, delete_result_); | 186 EXPECT_EQ(net::ERR_FAILED, delete_result_); |
185 delete_completion_count_ = 0; | 187 delete_completion_count_ = 0; |
186 | 188 |
187 // Should succeed given an empty info collection. | 189 // Should succeed given an empty info collection. |
188 mock_storage()->SimulateGetAllInfo(new AppCacheInfoCollection); | 190 mock_storage()->SimulateGetAllInfo(new AppCacheInfoCollection); |
189 service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); | 191 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
190 EXPECT_EQ(0, delete_completion_count_); | 192 EXPECT_EQ(0, delete_completion_count_); |
191 MessageLoop::current()->RunAllPending(); | 193 MessageLoop::current()->RunAllPending(); |
192 EXPECT_EQ(1, delete_completion_count_); | 194 EXPECT_EQ(1, delete_completion_count_); |
193 EXPECT_EQ(net::OK, delete_result_); | 195 EXPECT_EQ(net::OK, delete_result_); |
194 delete_completion_count_ = 0; | 196 delete_completion_count_ = 0; |
195 | 197 |
196 scoped_refptr<AppCacheInfoCollection> info(new AppCacheInfoCollection); | 198 scoped_refptr<AppCacheInfoCollection> info(new AppCacheInfoCollection); |
197 | 199 |
198 // Should succeed given a non-empty info collection. | 200 // Should succeed given a non-empty info collection. |
199 AppCacheInfo mock_manifest_1; | 201 AppCacheInfo mock_manifest_1; |
200 AppCacheInfo mock_manifest_2; | 202 AppCacheInfo mock_manifest_2; |
201 AppCacheInfo mock_manifest_3; | 203 AppCacheInfo mock_manifest_3; |
202 mock_manifest_1.manifest_url = kOrigin.Resolve("manifest1"); | 204 mock_manifest_1.manifest_url = kOrigin.Resolve("manifest1"); |
203 mock_manifest_2.manifest_url = kOrigin.Resolve("manifest2"); | 205 mock_manifest_2.manifest_url = kOrigin.Resolve("manifest2"); |
204 mock_manifest_3.manifest_url = kOrigin.Resolve("manifest3"); | 206 mock_manifest_3.manifest_url = kOrigin.Resolve("manifest3"); |
205 AppCacheInfoVector info_vector; | 207 AppCacheInfoVector info_vector; |
206 info_vector.push_back(mock_manifest_1); | 208 info_vector.push_back(mock_manifest_1); |
207 info_vector.push_back(mock_manifest_2); | 209 info_vector.push_back(mock_manifest_2); |
208 info_vector.push_back(mock_manifest_3); | 210 info_vector.push_back(mock_manifest_3); |
209 info->infos_by_origin[kOrigin] = info_vector; | 211 info->infos_by_origin[kOrigin] = info_vector; |
210 mock_storage()->SimulateGetAllInfo(info); | 212 mock_storage()->SimulateGetAllInfo(info); |
211 service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); | 213 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
212 EXPECT_EQ(0, delete_completion_count_); | 214 EXPECT_EQ(0, delete_completion_count_); |
213 MessageLoop::current()->RunAllPending(); | 215 MessageLoop::current()->RunAllPending(); |
214 EXPECT_EQ(1, delete_completion_count_); | 216 EXPECT_EQ(1, delete_completion_count_); |
215 EXPECT_EQ(net::OK, delete_result_); | 217 EXPECT_EQ(net::OK, delete_result_); |
216 delete_completion_count_ = 0; | 218 delete_completion_count_ = 0; |
217 | 219 |
218 // Should fail if storage fails to delete. | 220 // Should fail if storage fails to delete. |
219 info->infos_by_origin[kOrigin] = info_vector; | 221 info->infos_by_origin[kOrigin] = info_vector; |
220 mock_storage()->SimulateGetAllInfo(info); | 222 mock_storage()->SimulateGetAllInfo(info); |
221 mock_storage()->SimulateMakeGroupObsoleteFailure(); | 223 mock_storage()->SimulateMakeGroupObsoleteFailure(); |
222 service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); | 224 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
223 EXPECT_EQ(0, delete_completion_count_); | 225 EXPECT_EQ(0, delete_completion_count_); |
224 MessageLoop::current()->RunAllPending(); | 226 MessageLoop::current()->RunAllPending(); |
225 EXPECT_EQ(1, delete_completion_count_); | 227 EXPECT_EQ(1, delete_completion_count_); |
226 EXPECT_EQ(net::ERR_FAILED, delete_result_); | 228 EXPECT_EQ(net::ERR_FAILED, delete_result_); |
227 delete_completion_count_ = 0; | 229 delete_completion_count_ = 0; |
228 | 230 |
229 // Should complete with abort error if the service is deleted | 231 // Should complete with abort error if the service is deleted |
230 // prior to a delete completion. | 232 // prior to a delete completion. |
231 service_->DeleteAppCachesForOrigin(kOrigin, &deletion_callback_); | 233 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); |
232 EXPECT_EQ(0, delete_completion_count_); | 234 EXPECT_EQ(0, delete_completion_count_); |
233 service_.reset(); // kill it | 235 service_.reset(); // kill it |
234 EXPECT_EQ(1, delete_completion_count_); | 236 EXPECT_EQ(1, delete_completion_count_); |
235 EXPECT_EQ(net::ERR_ABORTED, delete_result_); | 237 EXPECT_EQ(net::ERR_ABORTED, delete_result_); |
236 delete_completion_count_ = 0; | 238 delete_completion_count_ = 0; |
237 | 239 |
238 // Let any tasks lingering from the sudden deletion run and verify | 240 // Let any tasks lingering from the sudden deletion run and verify |
239 // no other completion calls occur. | 241 // no other completion calls occur. |
240 MessageLoop::current()->RunAllPending(); | 242 MessageLoop::current()->RunAllPending(); |
241 EXPECT_EQ(0, delete_completion_count_); | 243 EXPECT_EQ(0, delete_completion_count_); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 MessageLoop::current()->RunAllPending(); | 308 MessageLoop::current()->RunAllPending(); |
307 EXPECT_EQ(0, CountPendingHelpers()); | 309 EXPECT_EQ(0, CountPendingHelpers()); |
308 EXPECT_FALSE(IsGroupStored(kManifestUrl)); | 310 EXPECT_FALSE(IsGroupStored(kManifestUrl)); |
309 ResetStorage(); | 311 ResetStorage(); |
310 | 312 |
311 service_.reset(); // Clean up. | 313 service_.reset(); // Clean up. |
312 MessageLoop::current()->RunAllPending(); | 314 MessageLoop::current()->RunAllPending(); |
313 } | 315 } |
314 | 316 |
315 } // namespace appcache | 317 } // namespace appcache |
OLD | NEW |