Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: content/browser/cache_storage/cache_storage_cache_unittest.cc

Issue 1039763002: Cache Storage: Move files to content/*/cache_storage, rename classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: GN fix Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/service_worker/service_worker_cache.h" 5 #include "content/browser/cache_storage/cache_storage_cache.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/message_loop/message_loop_proxy.h" 9 #include "base/message_loop/message_loop_proxy.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
11 #include "content/browser/fileapi/chrome_blob_storage_context.h" 11 #include "content/browser/fileapi/chrome_blob_storage_context.h"
12 #include "content/browser/fileapi/mock_url_request_delegate.h" 12 #include "content/browser/fileapi/mock_url_request_delegate.h"
13 #include "content/browser/quota/mock_quota_manager_proxy.h" 13 #include "content/browser/quota/mock_quota_manager_proxy.h"
14 #include "content/common/cache_storage/cache_storage_types.h"
14 #include "content/common/service_worker/service_worker_types.h" 15 #include "content/common/service_worker/service_worker_types.h"
15 #include "content/public/browser/browser_thread.h" 16 #include "content/public/browser/browser_thread.h"
16 #include "content/public/common/referrer.h" 17 #include "content/public/common/referrer.h"
17 #include "content/public/test/test_browser_context.h" 18 #include "content/public/test/test_browser_context.h"
18 #include "content/public/test/test_browser_thread_bundle.h" 19 #include "content/public/test/test_browser_thread_bundle.h"
19 #include "net/url_request/url_request_context.h" 20 #include "net/url_request/url_request_context.h"
20 #include "net/url_request/url_request_context_getter.h" 21 #include "net/url_request/url_request_context_getter.h"
21 #include "net/url_request/url_request_job_factory_impl.h" 22 #include "net/url_request/url_request_job_factory_impl.h"
22 #include "storage/browser/blob/blob_data_builder.h" 23 #include "storage/browser/blob/blob_data_builder.h"
23 #include "storage/browser/blob/blob_data_handle.h" 24 #include "storage/browser/blob/blob_data_handle.h"
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 callback.Run(rv); 115 callback.Run(rv);
115 } 116 }
116 117
117 scoped_ptr<disk_cache::Backend> backend_; 118 scoped_ptr<disk_cache::Backend> backend_;
118 bool delay_open_; 119 bool delay_open_;
119 base::Closure open_entry_callback_; 120 base::Closure open_entry_callback_;
120 }; 121 };
121 122
122 } // namespace 123 } // namespace
123 124
124 // A ServiceWorkerCache that can optionally delay during backend creation. 125 // A CacheStorageCache that can optionally delay during backend creation.
125 class TestServiceWorkerCache : public ServiceWorkerCache { 126 class TestCacheStorageCache : public CacheStorageCache {
126 public: 127 public:
127 TestServiceWorkerCache( 128 TestCacheStorageCache(
128 const GURL& origin, 129 const GURL& origin,
129 const base::FilePath& path, 130 const base::FilePath& path,
130 net::URLRequestContext* request_context, 131 net::URLRequestContext* request_context,
131 const scoped_refptr<storage::QuotaManagerProxy>& quota_manager_proxy, 132 const scoped_refptr<storage::QuotaManagerProxy>& quota_manager_proxy,
132 base::WeakPtr<storage::BlobStorageContext> blob_context) 133 base::WeakPtr<storage::BlobStorageContext> blob_context)
133 : ServiceWorkerCache(origin, 134 : CacheStorageCache(origin,
134 path, 135 path,
135 request_context, 136 request_context,
136 quota_manager_proxy, 137 quota_manager_proxy,
137 blob_context), 138 blob_context),
138 delay_backend_creation_(false) {} 139 delay_backend_creation_(false) {}
139 140
140 void CreateBackend(const ErrorCallback& callback) override { 141 void CreateBackend(const ErrorCallback& callback) override {
141 backend_creation_callback_ = callback; 142 backend_creation_callback_ = callback;
142 if (delay_backend_creation_) 143 if (delay_backend_creation_)
143 return; 144 return;
144 ContinueCreateBackend(); 145 ContinueCreateBackend();
145 } 146 }
146 147
147 void ContinueCreateBackend() { 148 void ContinueCreateBackend() {
148 ServiceWorkerCache::CreateBackend(backend_creation_callback_); 149 CacheStorageCache::CreateBackend(backend_creation_callback_);
149 } 150 }
150 151
151 void set_delay_backend_creation(bool delay) { 152 void set_delay_backend_creation(bool delay) {
152 delay_backend_creation_ = delay; 153 delay_backend_creation_ = delay;
153 } 154 }
154 155
155 // Swap the existing backend with a delayable one. The backend must have been 156 // Swap the existing backend with a delayable one. The backend must have been
156 // created before calling this. 157 // created before calling this.
157 DelayableBackend* UseDelayableBackend() { 158 DelayableBackend* UseDelayableBackend() {
158 EXPECT_TRUE(backend_); 159 EXPECT_TRUE(backend_);
159 DelayableBackend* delayable_backend = new DelayableBackend(backend_.Pass()); 160 DelayableBackend* delayable_backend = new DelayableBackend(backend_.Pass());
160 backend_.reset(delayable_backend); 161 backend_.reset(delayable_backend);
161 return delayable_backend; 162 return delayable_backend;
162 } 163 }
163 164
164 private: 165 private:
165 ~TestServiceWorkerCache() override {} 166 ~TestCacheStorageCache() override {}
166 167
167 bool delay_backend_creation_; 168 bool delay_backend_creation_;
168 ErrorCallback backend_creation_callback_; 169 ErrorCallback backend_creation_callback_;
169 170
170 DISALLOW_COPY_AND_ASSIGN(TestServiceWorkerCache); 171 DISALLOW_COPY_AND_ASSIGN(TestCacheStorageCache);
171 }; 172 };
172 173
173 class ServiceWorkerCacheTest : public testing::Test { 174 class CacheStorageCacheTest : public testing::Test {
174 public: 175 public:
175 ServiceWorkerCacheTest() 176 CacheStorageCacheTest()
176 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), 177 : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP),
177 callback_error_(ServiceWorkerCache::ERROR_TYPE_OK), 178 callback_error_(CacheStorageCache::ERROR_TYPE_OK),
178 callback_closed_(false) {} 179 callback_closed_(false) {}
179 180
180 void SetUp() override { 181 void SetUp() override {
181 ChromeBlobStorageContext* blob_storage_context = 182 ChromeBlobStorageContext* blob_storage_context =
182 ChromeBlobStorageContext::GetFor(&browser_context_); 183 ChromeBlobStorageContext::GetFor(&browser_context_);
183 // Wait for chrome_blob_storage_context to finish initializing. 184 // Wait for chrome_blob_storage_context to finish initializing.
184 base::RunLoop().RunUntilIdle(); 185 base::RunLoop().RunUntilIdle();
185 blob_storage_context_ = blob_storage_context->context(); 186 blob_storage_context_ = blob_storage_context->context();
186 187
187 quota_manager_proxy_ = new MockQuotaManagerProxy( 188 quota_manager_proxy_ = new MockQuotaManagerProxy(
188 nullptr, base::MessageLoopProxy::current().get()); 189 nullptr, base::MessageLoopProxy::current().get());
189 190
190 url_request_job_factory_.reset(new net::URLRequestJobFactoryImpl); 191 url_request_job_factory_.reset(new net::URLRequestJobFactoryImpl);
191 url_request_job_factory_->SetProtocolHandler( 192 url_request_job_factory_->SetProtocolHandler(
192 "blob", CreateMockBlobProtocolHandler(blob_storage_context->context())); 193 "blob", CreateMockBlobProtocolHandler(blob_storage_context->context()));
193 194
194 net::URLRequestContext* url_request_context = 195 net::URLRequestContext* url_request_context =
195 browser_context_.GetRequestContext()->GetURLRequestContext(); 196 browser_context_.GetRequestContext()->GetURLRequestContext();
196 197
197 url_request_context->set_job_factory(url_request_job_factory_.get()); 198 url_request_context->set_job_factory(url_request_job_factory_.get());
198 199
199 CreateRequests(blob_storage_context); 200 CreateRequests(blob_storage_context);
200 201
201 if (!MemoryOnly()) 202 if (!MemoryOnly())
202 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 203 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
203 base::FilePath path = MemoryOnly() ? base::FilePath() : temp_dir_.path(); 204 base::FilePath path = MemoryOnly() ? base::FilePath() : temp_dir_.path();
204 205
205 cache_ = make_scoped_refptr(new TestServiceWorkerCache( 206 cache_ = make_scoped_refptr(new TestCacheStorageCache(
206 GURL("http://example.com"), path, url_request_context, 207 GURL("http://example.com"), path, url_request_context,
207 quota_manager_proxy_, blob_storage_context->context()->AsWeakPtr())); 208 quota_manager_proxy_, blob_storage_context->context()->AsWeakPtr()));
208 } 209 }
209 210
210 void TearDown() override { 211 void TearDown() override {
211 quota_manager_proxy_->SimulateQuotaManagerDestroyed(); 212 quota_manager_proxy_->SimulateQuotaManagerDestroyed();
212 base::RunLoop().RunUntilIdle(); 213 base::RunLoop().RunUntilIdle();
213 } 214 }
214 215
215 void CreateRequests(ChromeBlobStorageContext* blob_storage_context) { 216 void CreateRequests(ChromeBlobStorageContext* blob_storage_context) {
216 ServiceWorkerHeaderMap headers; 217 ServiceWorkerHeaderMap headers;
217 headers.insert(std::make_pair("a", "a")); 218 headers.insert(std::make_pair("a", "a"));
218 headers.insert(std::make_pair("b", "b")); 219 headers.insert(std::make_pair("b", "b"));
219 body_request_ = 220 body_request_ =
220 ServiceWorkerFetchRequest(GURL("http://example.com/body.html"), "GET", 221 ServiceWorkerFetchRequest(GURL("http://example.com/body.html"), "GET",
221 headers, Referrer(), false); 222 headers, Referrer(), false);
222 no_body_request_ = 223 no_body_request_ =
223 ServiceWorkerFetchRequest(GURL("http://example.com/no_body.html"), 224 ServiceWorkerFetchRequest(GURL("http://example.com/no_body.html"),
224 "GET", 225 "GET", headers, Referrer(), false);
225 headers,
226 Referrer(),
227 false);
228 226
229 std::string expected_response; 227 std::string expected_response;
230 for (int i = 0; i < 100; ++i) 228 for (int i = 0; i < 100; ++i)
231 expected_blob_data_ += kTestData; 229 expected_blob_data_ += kTestData;
232 230
233 scoped_ptr<storage::BlobDataBuilder> blob_data( 231 scoped_ptr<storage::BlobDataBuilder> blob_data(
234 new storage::BlobDataBuilder("blob-id:myblob")); 232 new storage::BlobDataBuilder("blob-id:myblob"));
235 blob_data->AppendData(expected_blob_data_); 233 blob_data->AppendData(expected_blob_data_);
236 234
237 blob_handle_ = 235 blob_handle_ =
238 blob_storage_context->context()->AddFinishedBlob(blob_data.get()); 236 blob_storage_context->context()->AddFinishedBlob(blob_data.get());
239 237
240 body_response_ = 238 body_response_ = ServiceWorkerResponse(
241 ServiceWorkerResponse(GURL("http://example.com/body.html"), 239 GURL("http://example.com/body.html"), 200, "OK",
242 200, 240 blink::WebServiceWorkerResponseTypeDefault, headers,
243 "OK", 241 blob_handle_->uuid(), expected_blob_data_.size(), GURL());
244 blink::WebServiceWorkerResponseTypeDefault,
245 headers,
246 blob_handle_->uuid(),
247 expected_blob_data_.size(),
248 GURL());
249 242
250 no_body_response_ = 243 no_body_response_ = ServiceWorkerResponse(
251 ServiceWorkerResponse(GURL("http://example.com/no_body.html"), 244 GURL("http://example.com/no_body.html"), 200, "OK",
252 200, 245 blink::WebServiceWorkerResponseTypeDefault, headers, "", 0, GURL());
253 "OK",
254 blink::WebServiceWorkerResponseTypeDefault,
255 headers,
256 "",
257 0,
258 GURL());
259 } 246 }
260 247
261 scoped_ptr<ServiceWorkerFetchRequest> CopyFetchRequest( 248 scoped_ptr<ServiceWorkerFetchRequest> CopyFetchRequest(
262 const ServiceWorkerFetchRequest& request) { 249 const ServiceWorkerFetchRequest& request) {
263 return make_scoped_ptr(new ServiceWorkerFetchRequest(request.url, 250 return make_scoped_ptr(new ServiceWorkerFetchRequest(
264 request.method, 251 request.url, request.method, request.headers, request.referrer,
265 request.headers, 252 request.is_reload));
266 request.referrer,
267 request.is_reload));
268 } 253 }
269 254
270 scoped_ptr<ServiceWorkerResponse> CopyFetchResponse( 255 scoped_ptr<ServiceWorkerResponse> CopyFetchResponse(
271 const ServiceWorkerResponse& response) { 256 const ServiceWorkerResponse& response) {
272 scoped_ptr<ServiceWorkerResponse> sw_response( 257 scoped_ptr<ServiceWorkerResponse> sw_response(new ServiceWorkerResponse(
273 new ServiceWorkerResponse(response.url, 258 response.url, response.status_code, response.status_text,
274 response.status_code, 259 response.response_type, response.headers, response.blob_uuid,
275 response.status_text, 260 response.blob_size, response.stream_url));
276 response.response_type,
277 response.headers,
278 response.blob_uuid,
279 response.blob_size,
280 response.stream_url));
281 return sw_response.Pass(); 261 return sw_response.Pass();
282 } 262 }
283 263
284 bool Put(const ServiceWorkerFetchRequest& request, 264 bool Put(const ServiceWorkerFetchRequest& request,
285 const ServiceWorkerResponse& response) { 265 const ServiceWorkerResponse& response) {
286 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 266 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
287 267
288 cache_->Put(CopyFetchRequest(request), 268 cache_->Put(
289 CopyFetchResponse(response), 269 CopyFetchRequest(request), CopyFetchResponse(response),
290 base::Bind(&ServiceWorkerCacheTest::ResponseAndErrorCallback, 270 base::Bind(&CacheStorageCacheTest::ResponseAndErrorCallback,
291 base::Unretained(this), 271 base::Unretained(this), base::Unretained(loop.get())));
292 base::Unretained(loop.get())));
293 // TODO(jkarlin): These functions should use base::RunLoop().RunUntilIdle() 272 // TODO(jkarlin): These functions should use base::RunLoop().RunUntilIdle()
294 // once the cache uses a passed in MessageLoopProxy instead of the CACHE 273 // once the cache uses a passed in MessageLoopProxy instead of the CACHE
295 // thread. 274 // thread.
296 loop->Run(); 275 loop->Run();
297 276
298 return callback_error_ == ServiceWorkerCache::ERROR_TYPE_OK; 277 return callback_error_ == CacheStorageCache::ERROR_TYPE_OK;
299 } 278 }
300 279
301 bool Match(const ServiceWorkerFetchRequest& request) { 280 bool Match(const ServiceWorkerFetchRequest& request) {
302 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 281 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
303 282
304 cache_->Match(CopyFetchRequest(request), 283 cache_->Match(
305 base::Bind(&ServiceWorkerCacheTest::ResponseAndErrorCallback, 284 CopyFetchRequest(request),
306 base::Unretained(this), 285 base::Bind(&CacheStorageCacheTest::ResponseAndErrorCallback,
307 base::Unretained(loop.get()))); 286 base::Unretained(this), base::Unretained(loop.get())));
308 loop->Run(); 287 loop->Run();
309 288
310 return callback_error_ == ServiceWorkerCache::ERROR_TYPE_OK; 289 return callback_error_ == CacheStorageCache::ERROR_TYPE_OK;
311 } 290 }
312 291
313 bool Delete(const ServiceWorkerFetchRequest& request) { 292 bool Delete(const ServiceWorkerFetchRequest& request) {
314 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 293 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
315 294
316 cache_->Delete(CopyFetchRequest(request), 295 cache_->Delete(
317 base::Bind(&ServiceWorkerCacheTest::ErrorTypeCallback, 296 CopyFetchRequest(request),
318 base::Unretained(this), 297 base::Bind(&CacheStorageCacheTest::ErrorTypeCallback,
319 base::Unretained(loop.get()))); 298 base::Unretained(this), base::Unretained(loop.get())));
320 loop->Run(); 299 loop->Run();
321 300
322 return callback_error_ == ServiceWorkerCache::ERROR_TYPE_OK; 301 return callback_error_ == CacheStorageCache::ERROR_TYPE_OK;
323 } 302 }
324 303
325 bool Keys() { 304 bool Keys() {
326 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 305 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
327 306
328 cache_->Keys(base::Bind(&ServiceWorkerCacheTest::RequestsCallback, 307 cache_->Keys(base::Bind(&CacheStorageCacheTest::RequestsCallback,
329 base::Unretained(this), 308 base::Unretained(this),
330 base::Unretained(loop.get()))); 309 base::Unretained(loop.get())));
331 loop->Run(); 310 loop->Run();
332 311
333 return callback_error_ == ServiceWorkerCache::ERROR_TYPE_OK; 312 return callback_error_ == CacheStorageCache::ERROR_TYPE_OK;
334 } 313 }
335 314
336 bool Close() { 315 bool Close() {
337 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 316 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
338 317
339 cache_->Close(base::Bind(&ServiceWorkerCacheTest::CloseCallback, 318 cache_->Close(base::Bind(&CacheStorageCacheTest::CloseCallback,
340 base::Unretained(this), 319 base::Unretained(this),
341 base::Unretained(loop.get()))); 320 base::Unretained(loop.get())));
342 loop->Run(); 321 loop->Run();
343 return callback_closed_; 322 return callback_closed_;
344 } 323 }
345 324
346 void RequestsCallback(base::RunLoop* run_loop, 325 void RequestsCallback(base::RunLoop* run_loop,
347 ServiceWorkerCache::ErrorType error, 326 CacheStorageCache::ErrorType error,
348 scoped_ptr<ServiceWorkerCache::Requests> requests) { 327 scoped_ptr<CacheStorageCache::Requests> requests) {
349 callback_error_ = error; 328 callback_error_ = error;
350 callback_strings_.clear(); 329 callback_strings_.clear();
351 if (requests) { 330 if (requests) {
352 for (size_t i = 0u; i < requests->size(); ++i) 331 for (size_t i = 0u; i < requests->size(); ++i)
353 callback_strings_.push_back(requests->at(i).url.spec()); 332 callback_strings_.push_back(requests->at(i).url.spec());
354 } 333 }
355 if (run_loop) 334 if (run_loop)
356 run_loop->Quit(); 335 run_loop->Quit();
357 } 336 }
358 337
359 void ErrorTypeCallback(base::RunLoop* run_loop, 338 void ErrorTypeCallback(base::RunLoop* run_loop,
360 ServiceWorkerCache::ErrorType error) { 339 CacheStorageCache::ErrorType error) {
361 callback_error_ = error; 340 callback_error_ = error;
362 if (run_loop) 341 if (run_loop)
363 run_loop->Quit(); 342 run_loop->Quit();
364 } 343 }
365 344
366 void ResponseAndErrorCallback( 345 void ResponseAndErrorCallback(
367 base::RunLoop* run_loop, 346 base::RunLoop* run_loop,
368 ServiceWorkerCache::ErrorType error, 347 CacheStorageCache::ErrorType error,
369 scoped_ptr<ServiceWorkerResponse> response, 348 scoped_ptr<ServiceWorkerResponse> response,
370 scoped_ptr<storage::BlobDataHandle> body_handle) { 349 scoped_ptr<storage::BlobDataHandle> body_handle) {
371 callback_error_ = error; 350 callback_error_ = error;
372 callback_response_ = response.Pass(); 351 callback_response_ = response.Pass();
373 callback_response_data_.reset(); 352 callback_response_data_.reset();
374 if (error == ServiceWorkerCache::ERROR_TYPE_OK && 353 if (error == CacheStorageCache::ERROR_TYPE_OK &&
375 !callback_response_->blob_uuid.empty()) { 354 !callback_response_->blob_uuid.empty()) {
376 callback_response_data_ = body_handle.Pass(); 355 callback_response_data_ = body_handle.Pass();
377 } 356 }
378 357
379 if (run_loop) 358 if (run_loop)
380 run_loop->Quit(); 359 run_loop->Quit();
381 } 360 }
382 361
383 void CloseCallback(base::RunLoop* run_loop) { 362 void CloseCallback(base::RunLoop* run_loop) {
384 EXPECT_FALSE(callback_closed_); 363 EXPECT_FALSE(callback_closed_);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 virtual bool MemoryOnly() { return false; } 407 virtual bool MemoryOnly() { return false; }
429 408
430 protected: 409 protected:
431 TestBrowserContext browser_context_; 410 TestBrowserContext browser_context_;
432 TestBrowserThreadBundle browser_thread_bundle_; 411 TestBrowserThreadBundle browser_thread_bundle_;
433 scoped_ptr<net::URLRequestJobFactoryImpl> url_request_job_factory_; 412 scoped_ptr<net::URLRequestJobFactoryImpl> url_request_job_factory_;
434 scoped_refptr<MockQuotaManagerProxy> quota_manager_proxy_; 413 scoped_refptr<MockQuotaManagerProxy> quota_manager_proxy_;
435 storage::BlobStorageContext* blob_storage_context_; 414 storage::BlobStorageContext* blob_storage_context_;
436 415
437 base::ScopedTempDir temp_dir_; 416 base::ScopedTempDir temp_dir_;
438 scoped_refptr<TestServiceWorkerCache> cache_; 417 scoped_refptr<TestCacheStorageCache> cache_;
439 418
440 ServiceWorkerFetchRequest body_request_; 419 ServiceWorkerFetchRequest body_request_;
441 ServiceWorkerResponse body_response_; 420 ServiceWorkerResponse body_response_;
442 ServiceWorkerFetchRequest no_body_request_; 421 ServiceWorkerFetchRequest no_body_request_;
443 ServiceWorkerResponse no_body_response_; 422 ServiceWorkerResponse no_body_response_;
444 scoped_ptr<storage::BlobDataHandle> blob_handle_; 423 scoped_ptr<storage::BlobDataHandle> blob_handle_;
445 std::string expected_blob_data_; 424 std::string expected_blob_data_;
446 425
447 ServiceWorkerCache::ErrorType callback_error_; 426 CacheStorageCache::ErrorType callback_error_;
448 scoped_ptr<ServiceWorkerResponse> callback_response_; 427 scoped_ptr<ServiceWorkerResponse> callback_response_;
449 scoped_ptr<storage::BlobDataHandle> callback_response_data_; 428 scoped_ptr<storage::BlobDataHandle> callback_response_data_;
450 std::vector<std::string> callback_strings_; 429 std::vector<std::string> callback_strings_;
451 bool callback_closed_; 430 bool callback_closed_;
452 }; 431 };
453 432
454 class ServiceWorkerCacheTestP : public ServiceWorkerCacheTest, 433 class CacheStorageCacheTestP : public CacheStorageCacheTest,
455 public testing::WithParamInterface<bool> { 434 public testing::WithParamInterface<bool> {
456 bool MemoryOnly() override { return !GetParam(); } 435 bool MemoryOnly() override { return !GetParam(); }
457 }; 436 };
458 437
459 class ServiceWorkerCacheMemoryOnlyTest 438 class CacheStorageCacheMemoryOnlyTest
460 : public ServiceWorkerCacheTest, 439 : public CacheStorageCacheTest,
461 public testing::WithParamInterface<bool> { 440 public testing::WithParamInterface<bool> {
462 bool MemoryOnly() override { return true; } 441 bool MemoryOnly() override { return true; }
463 }; 442 };
464 443
465 TEST_P(ServiceWorkerCacheTestP, PutNoBody) { 444 TEST_P(CacheStorageCacheTestP, PutNoBody) {
466 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 445 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
467 EXPECT_TRUE(callback_response_); 446 EXPECT_TRUE(callback_response_);
468 EXPECT_STREQ(no_body_response_.url.spec().c_str(), 447 EXPECT_STREQ(no_body_response_.url.spec().c_str(),
469 callback_response_->url.spec().c_str()); 448 callback_response_->url.spec().c_str());
470 EXPECT_FALSE(callback_response_data_); 449 EXPECT_FALSE(callback_response_data_);
471 EXPECT_STREQ("", callback_response_->blob_uuid.c_str()); 450 EXPECT_STREQ("", callback_response_->blob_uuid.c_str());
472 EXPECT_EQ(0u, callback_response_->blob_size); 451 EXPECT_EQ(0u, callback_response_->blob_size);
473 } 452 }
474 453
475 TEST_P(ServiceWorkerCacheTestP, PutBody) { 454 TEST_P(CacheStorageCacheTestP, PutBody) {
476 EXPECT_TRUE(Put(body_request_, body_response_)); 455 EXPECT_TRUE(Put(body_request_, body_response_));
477 EXPECT_TRUE(callback_response_); 456 EXPECT_TRUE(callback_response_);
478 EXPECT_STREQ(body_response_.url.spec().c_str(), 457 EXPECT_STREQ(body_response_.url.spec().c_str(),
479 callback_response_->url.spec().c_str()); 458 callback_response_->url.spec().c_str());
480 EXPECT_TRUE(callback_response_data_); 459 EXPECT_TRUE(callback_response_data_);
481 EXPECT_STRNE("", callback_response_->blob_uuid.c_str()); 460 EXPECT_STRNE("", callback_response_->blob_uuid.c_str());
482 EXPECT_EQ(expected_blob_data_.size(), callback_response_->blob_size); 461 EXPECT_EQ(expected_blob_data_.size(), callback_response_->blob_size);
483 462
484 std::string response_body; 463 std::string response_body;
485 CopyBody(callback_response_data_.get(), &response_body); 464 CopyBody(callback_response_data_.get(), &response_body);
486 EXPECT_STREQ(expected_blob_data_.c_str(), response_body.c_str()); 465 EXPECT_STREQ(expected_blob_data_.c_str(), response_body.c_str());
487 } 466 }
488 467
489 TEST_P(ServiceWorkerCacheTestP, ResponseURLDiffersFromRequestURL) { 468 TEST_P(CacheStorageCacheTestP, ResponseURLDiffersFromRequestURL) {
490 no_body_response_.url = GURL("http://example.com/foobar"); 469 no_body_response_.url = GURL("http://example.com/foobar");
491 EXPECT_STRNE("http://example.com/foobar", 470 EXPECT_STRNE("http://example.com/foobar",
492 no_body_request_.url.spec().c_str()); 471 no_body_request_.url.spec().c_str());
493 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 472 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
494 EXPECT_TRUE(Match(no_body_request_)); 473 EXPECT_TRUE(Match(no_body_request_));
495 EXPECT_STREQ("http://example.com/foobar", 474 EXPECT_STREQ("http://example.com/foobar",
496 callback_response_->url.spec().c_str()); 475 callback_response_->url.spec().c_str());
497 } 476 }
498 477
499 TEST_P(ServiceWorkerCacheTestP, ResponseURLEmpty) { 478 TEST_P(CacheStorageCacheTestP, ResponseURLEmpty) {
500 no_body_response_.url = GURL(); 479 no_body_response_.url = GURL();
501 EXPECT_STRNE("", no_body_request_.url.spec().c_str()); 480 EXPECT_STRNE("", no_body_request_.url.spec().c_str());
502 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 481 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
503 EXPECT_TRUE(Match(no_body_request_)); 482 EXPECT_TRUE(Match(no_body_request_));
504 EXPECT_STREQ("", callback_response_->url.spec().c_str()); 483 EXPECT_STREQ("", callback_response_->url.spec().c_str());
505 } 484 }
506 485
507 TEST_F(ServiceWorkerCacheTest, PutBodyDropBlobRef) { 486 TEST_F(CacheStorageCacheTest, PutBodyDropBlobRef) {
508 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 487 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
509 cache_->Put(CopyFetchRequest(body_request_), 488 cache_->Put(CopyFetchRequest(body_request_),
510 CopyFetchResponse(body_response_), 489 CopyFetchResponse(body_response_),
511 base::Bind(&ServiceWorkerCacheTestP::ResponseAndErrorCallback, 490 base::Bind(&CacheStorageCacheTestP::ResponseAndErrorCallback,
512 base::Unretained(this), 491 base::Unretained(this), base::Unretained(loop.get())));
513 base::Unretained(loop.get())));
514 // The handle should be held by the cache now so the deref here should be 492 // The handle should be held by the cache now so the deref here should be
515 // okay. 493 // okay.
516 blob_handle_.reset(); 494 blob_handle_.reset();
517 loop->Run(); 495 loop->Run();
518 496
519 EXPECT_EQ(ServiceWorkerCache::ERROR_TYPE_OK, callback_error_); 497 EXPECT_EQ(CacheStorageCache::ERROR_TYPE_OK, callback_error_);
520 } 498 }
521 499
522 TEST_P(ServiceWorkerCacheTestP, PutReplace) { 500 TEST_P(CacheStorageCacheTestP, PutReplace) {
523 EXPECT_TRUE(Put(body_request_, no_body_response_)); 501 EXPECT_TRUE(Put(body_request_, no_body_response_));
524 EXPECT_TRUE(Match(body_request_)); 502 EXPECT_TRUE(Match(body_request_));
525 EXPECT_FALSE(callback_response_data_); 503 EXPECT_FALSE(callback_response_data_);
526 504
527 EXPECT_TRUE(Put(body_request_, body_response_)); 505 EXPECT_TRUE(Put(body_request_, body_response_));
528 EXPECT_TRUE(Match(body_request_)); 506 EXPECT_TRUE(Match(body_request_));
529 EXPECT_TRUE(callback_response_data_); 507 EXPECT_TRUE(callback_response_data_);
530 508
531 EXPECT_TRUE(Put(body_request_, no_body_response_)); 509 EXPECT_TRUE(Put(body_request_, no_body_response_));
532 EXPECT_TRUE(Match(body_request_)); 510 EXPECT_TRUE(Match(body_request_));
533 EXPECT_FALSE(callback_response_data_); 511 EXPECT_FALSE(callback_response_data_);
534 } 512 }
535 513
536 TEST_P(ServiceWorkerCacheTestP, MatchNoBody) { 514 TEST_P(CacheStorageCacheTestP, MatchNoBody) {
537 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 515 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
538 EXPECT_TRUE(Match(no_body_request_)); 516 EXPECT_TRUE(Match(no_body_request_));
539 EXPECT_EQ(200, callback_response_->status_code); 517 EXPECT_EQ(200, callback_response_->status_code);
540 EXPECT_STREQ("OK", callback_response_->status_text.c_str()); 518 EXPECT_STREQ("OK", callback_response_->status_text.c_str());
541 EXPECT_STREQ("http://example.com/no_body.html", 519 EXPECT_STREQ("http://example.com/no_body.html",
542 callback_response_->url.spec().c_str()); 520 callback_response_->url.spec().c_str());
543 EXPECT_STREQ("", callback_response_->blob_uuid.c_str()); 521 EXPECT_STREQ("", callback_response_->blob_uuid.c_str());
544 EXPECT_EQ(0u, callback_response_->blob_size); 522 EXPECT_EQ(0u, callback_response_->blob_size);
545 } 523 }
546 524
547 TEST_P(ServiceWorkerCacheTestP, MatchBody) { 525 TEST_P(CacheStorageCacheTestP, MatchBody) {
548 EXPECT_TRUE(Put(body_request_, body_response_)); 526 EXPECT_TRUE(Put(body_request_, body_response_));
549 EXPECT_TRUE(Match(body_request_)); 527 EXPECT_TRUE(Match(body_request_));
550 EXPECT_EQ(200, callback_response_->status_code); 528 EXPECT_EQ(200, callback_response_->status_code);
551 EXPECT_STREQ("OK", callback_response_->status_text.c_str()); 529 EXPECT_STREQ("OK", callback_response_->status_text.c_str());
552 EXPECT_STREQ("http://example.com/body.html", 530 EXPECT_STREQ("http://example.com/body.html",
553 callback_response_->url.spec().c_str()); 531 callback_response_->url.spec().c_str());
554 EXPECT_STRNE("", callback_response_->blob_uuid.c_str()); 532 EXPECT_STRNE("", callback_response_->blob_uuid.c_str());
555 EXPECT_EQ(expected_blob_data_.size(), callback_response_->blob_size); 533 EXPECT_EQ(expected_blob_data_.size(), callback_response_->blob_size);
556 534
557 std::string response_body; 535 std::string response_body;
558 CopyBody(callback_response_data_.get(), &response_body); 536 CopyBody(callback_response_data_.get(), &response_body);
559 EXPECT_STREQ(expected_blob_data_.c_str(), response_body.c_str()); 537 EXPECT_STREQ(expected_blob_data_.c_str(), response_body.c_str());
560 } 538 }
561 539
562 TEST_P(ServiceWorkerCacheTestP, Vary) { 540 TEST_P(CacheStorageCacheTestP, Vary) {
563 body_request_.headers["vary_foo"] = "foo"; 541 body_request_.headers["vary_foo"] = "foo";
564 body_response_.headers["vary"] = "vary_foo"; 542 body_response_.headers["vary"] = "vary_foo";
565 EXPECT_TRUE(Put(body_request_, body_response_)); 543 EXPECT_TRUE(Put(body_request_, body_response_));
566 EXPECT_TRUE(Match(body_request_)); 544 EXPECT_TRUE(Match(body_request_));
567 545
568 body_request_.headers["vary_foo"] = "bar"; 546 body_request_.headers["vary_foo"] = "bar";
569 EXPECT_FALSE(Match(body_request_)); 547 EXPECT_FALSE(Match(body_request_));
570 548
571 body_request_.headers.erase("vary_foo"); 549 body_request_.headers.erase("vary_foo");
572 EXPECT_FALSE(Match(body_request_)); 550 EXPECT_FALSE(Match(body_request_));
573 } 551 }
574 552
575 TEST_P(ServiceWorkerCacheTestP, EmptyVary) { 553 TEST_P(CacheStorageCacheTestP, EmptyVary) {
576 body_response_.headers["vary"] = ""; 554 body_response_.headers["vary"] = "";
577 EXPECT_TRUE(Put(body_request_, body_response_)); 555 EXPECT_TRUE(Put(body_request_, body_response_));
578 EXPECT_TRUE(Match(body_request_)); 556 EXPECT_TRUE(Match(body_request_));
579 557
580 body_request_.headers["zoo"] = "zoo"; 558 body_request_.headers["zoo"] = "zoo";
581 EXPECT_TRUE(Match(body_request_)); 559 EXPECT_TRUE(Match(body_request_));
582 } 560 }
583 561
584 TEST_P(ServiceWorkerCacheTestP, NoVaryButDiffHeaders) { 562 TEST_P(CacheStorageCacheTestP, NoVaryButDiffHeaders) {
585 EXPECT_TRUE(Put(body_request_, body_response_)); 563 EXPECT_TRUE(Put(body_request_, body_response_));
586 EXPECT_TRUE(Match(body_request_)); 564 EXPECT_TRUE(Match(body_request_));
587 565
588 body_request_.headers["zoo"] = "zoo"; 566 body_request_.headers["zoo"] = "zoo";
589 EXPECT_TRUE(Match(body_request_)); 567 EXPECT_TRUE(Match(body_request_));
590 } 568 }
591 569
592 TEST_P(ServiceWorkerCacheTestP, VaryMultiple) { 570 TEST_P(CacheStorageCacheTestP, VaryMultiple) {
593 body_request_.headers["vary_foo"] = "foo"; 571 body_request_.headers["vary_foo"] = "foo";
594 body_request_.headers["vary_bar"] = "bar"; 572 body_request_.headers["vary_bar"] = "bar";
595 body_response_.headers["vary"] = " vary_foo , vary_bar"; 573 body_response_.headers["vary"] = " vary_foo , vary_bar";
596 EXPECT_TRUE(Put(body_request_, body_response_)); 574 EXPECT_TRUE(Put(body_request_, body_response_));
597 EXPECT_TRUE(Match(body_request_)); 575 EXPECT_TRUE(Match(body_request_));
598 576
599 body_request_.headers["vary_bar"] = "foo"; 577 body_request_.headers["vary_bar"] = "foo";
600 EXPECT_FALSE(Match(body_request_)); 578 EXPECT_FALSE(Match(body_request_));
601 579
602 body_request_.headers.erase("vary_bar"); 580 body_request_.headers.erase("vary_bar");
603 EXPECT_FALSE(Match(body_request_)); 581 EXPECT_FALSE(Match(body_request_));
604 } 582 }
605 583
606 TEST_P(ServiceWorkerCacheTestP, VaryNewHeader) { 584 TEST_P(CacheStorageCacheTestP, VaryNewHeader) {
607 body_request_.headers["vary_foo"] = "foo"; 585 body_request_.headers["vary_foo"] = "foo";
608 body_response_.headers["vary"] = " vary_foo, vary_bar"; 586 body_response_.headers["vary"] = " vary_foo, vary_bar";
609 EXPECT_TRUE(Put(body_request_, body_response_)); 587 EXPECT_TRUE(Put(body_request_, body_response_));
610 EXPECT_TRUE(Match(body_request_)); 588 EXPECT_TRUE(Match(body_request_));
611 589
612 body_request_.headers["vary_bar"] = "bar"; 590 body_request_.headers["vary_bar"] = "bar";
613 EXPECT_FALSE(Match(body_request_)); 591 EXPECT_FALSE(Match(body_request_));
614 } 592 }
615 593
616 TEST_P(ServiceWorkerCacheTestP, VaryStar) { 594 TEST_P(CacheStorageCacheTestP, VaryStar) {
617 body_response_.headers["vary"] = "*"; 595 body_response_.headers["vary"] = "*";
618 EXPECT_TRUE(Put(body_request_, body_response_)); 596 EXPECT_TRUE(Put(body_request_, body_response_));
619 EXPECT_FALSE(Match(body_request_)); 597 EXPECT_FALSE(Match(body_request_));
620 } 598 }
621 599
622 TEST_P(ServiceWorkerCacheTestP, EmptyKeys) { 600 TEST_P(CacheStorageCacheTestP, EmptyKeys) {
623 EXPECT_TRUE(Keys()); 601 EXPECT_TRUE(Keys());
624 EXPECT_EQ(0u, callback_strings_.size()); 602 EXPECT_EQ(0u, callback_strings_.size());
625 } 603 }
626 604
627 TEST_P(ServiceWorkerCacheTestP, TwoKeys) { 605 TEST_P(CacheStorageCacheTestP, TwoKeys) {
628 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 606 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
629 EXPECT_TRUE(Put(body_request_, body_response_)); 607 EXPECT_TRUE(Put(body_request_, body_response_));
630 EXPECT_TRUE(Keys()); 608 EXPECT_TRUE(Keys());
631 EXPECT_EQ(2u, callback_strings_.size()); 609 EXPECT_EQ(2u, callback_strings_.size());
632 std::vector<std::string> expected_keys; 610 std::vector<std::string> expected_keys;
633 expected_keys.push_back(no_body_request_.url.spec()); 611 expected_keys.push_back(no_body_request_.url.spec());
634 expected_keys.push_back(body_request_.url.spec()); 612 expected_keys.push_back(body_request_.url.spec());
635 EXPECT_TRUE(VerifyKeys(expected_keys)); 613 EXPECT_TRUE(VerifyKeys(expected_keys));
636 } 614 }
637 615
638 TEST_P(ServiceWorkerCacheTestP, TwoKeysThenOne) { 616 TEST_P(CacheStorageCacheTestP, TwoKeysThenOne) {
639 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 617 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
640 EXPECT_TRUE(Put(body_request_, body_response_)); 618 EXPECT_TRUE(Put(body_request_, body_response_));
641 EXPECT_TRUE(Keys()); 619 EXPECT_TRUE(Keys());
642 EXPECT_EQ(2u, callback_strings_.size()); 620 EXPECT_EQ(2u, callback_strings_.size());
643 std::vector<std::string> expected_keys; 621 std::vector<std::string> expected_keys;
644 expected_keys.push_back(no_body_request_.url.spec()); 622 expected_keys.push_back(no_body_request_.url.spec());
645 expected_keys.push_back(body_request_.url.spec()); 623 expected_keys.push_back(body_request_.url.spec());
646 EXPECT_TRUE(VerifyKeys(expected_keys)); 624 EXPECT_TRUE(VerifyKeys(expected_keys));
647 625
648 EXPECT_TRUE(Delete(body_request_)); 626 EXPECT_TRUE(Delete(body_request_));
649 EXPECT_TRUE(Keys()); 627 EXPECT_TRUE(Keys());
650 EXPECT_EQ(1u, callback_strings_.size()); 628 EXPECT_EQ(1u, callback_strings_.size());
651 std::vector<std::string> expected_key; 629 std::vector<std::string> expected_key;
652 expected_key.push_back(no_body_request_.url.spec()); 630 expected_key.push_back(no_body_request_.url.spec());
653 EXPECT_TRUE(VerifyKeys(expected_key)); 631 EXPECT_TRUE(VerifyKeys(expected_key));
654 } 632 }
655 633
656 TEST_P(ServiceWorkerCacheTestP, DeleteNoBody) { 634 TEST_P(CacheStorageCacheTestP, DeleteNoBody) {
657 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 635 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
658 EXPECT_TRUE(Match(no_body_request_)); 636 EXPECT_TRUE(Match(no_body_request_));
659 EXPECT_TRUE(Delete(no_body_request_)); 637 EXPECT_TRUE(Delete(no_body_request_));
660 EXPECT_FALSE(Match(no_body_request_)); 638 EXPECT_FALSE(Match(no_body_request_));
661 EXPECT_FALSE(Delete(no_body_request_)); 639 EXPECT_FALSE(Delete(no_body_request_));
662 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 640 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
663 EXPECT_TRUE(Match(no_body_request_)); 641 EXPECT_TRUE(Match(no_body_request_));
664 EXPECT_TRUE(Delete(no_body_request_)); 642 EXPECT_TRUE(Delete(no_body_request_));
665 } 643 }
666 644
667 TEST_P(ServiceWorkerCacheTestP, DeleteBody) { 645 TEST_P(CacheStorageCacheTestP, DeleteBody) {
668 EXPECT_TRUE(Put(body_request_, body_response_)); 646 EXPECT_TRUE(Put(body_request_, body_response_));
669 EXPECT_TRUE(Match(body_request_)); 647 EXPECT_TRUE(Match(body_request_));
670 EXPECT_TRUE(Delete(body_request_)); 648 EXPECT_TRUE(Delete(body_request_));
671 EXPECT_FALSE(Match(body_request_)); 649 EXPECT_FALSE(Match(body_request_));
672 EXPECT_FALSE(Delete(body_request_)); 650 EXPECT_FALSE(Delete(body_request_));
673 EXPECT_TRUE(Put(body_request_, body_response_)); 651 EXPECT_TRUE(Put(body_request_, body_response_));
674 EXPECT_TRUE(Match(body_request_)); 652 EXPECT_TRUE(Match(body_request_));
675 EXPECT_TRUE(Delete(body_request_)); 653 EXPECT_TRUE(Delete(body_request_));
676 } 654 }
677 655
678 TEST_P(ServiceWorkerCacheTestP, QuickStressNoBody) { 656 TEST_P(CacheStorageCacheTestP, QuickStressNoBody) {
679 for (int i = 0; i < 100; ++i) { 657 for (int i = 0; i < 100; ++i) {
680 EXPECT_FALSE(Match(no_body_request_)); 658 EXPECT_FALSE(Match(no_body_request_));
681 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 659 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
682 EXPECT_TRUE(Match(no_body_request_)); 660 EXPECT_TRUE(Match(no_body_request_));
683 EXPECT_TRUE(Delete(no_body_request_)); 661 EXPECT_TRUE(Delete(no_body_request_));
684 } 662 }
685 } 663 }
686 664
687 TEST_P(ServiceWorkerCacheTestP, QuickStressBody) { 665 TEST_P(CacheStorageCacheTestP, QuickStressBody) {
688 for (int i = 0; i < 100; ++i) { 666 for (int i = 0; i < 100; ++i) {
689 ASSERT_FALSE(Match(body_request_)); 667 ASSERT_FALSE(Match(body_request_));
690 ASSERT_TRUE(Put(body_request_, body_response_)); 668 ASSERT_TRUE(Put(body_request_, body_response_));
691 ASSERT_TRUE(Match(body_request_)); 669 ASSERT_TRUE(Match(body_request_));
692 ASSERT_TRUE(Delete(body_request_)); 670 ASSERT_TRUE(Delete(body_request_));
693 } 671 }
694 } 672 }
695 673
696 TEST_P(ServiceWorkerCacheTestP, PutResponseType) { 674 TEST_P(CacheStorageCacheTestP, PutResponseType) {
697 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeBasic)); 675 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeBasic));
698 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeCORS)); 676 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeCORS));
699 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeDefault)); 677 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeDefault));
700 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeError)); 678 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeError));
701 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeOpaque)); 679 EXPECT_TRUE(TestResponseType(blink::WebServiceWorkerResponseTypeOpaque));
702 } 680 }
703 681
704 TEST_F(ServiceWorkerCacheTest, CaselessServiceWorkerResponseHeaders) { 682 TEST_F(CacheStorageCacheTest, CaselessServiceWorkerResponseHeaders) {
705 // ServiceWorkerCache depends on ServiceWorkerResponse having caseless 683 // CacheStorageCache depends on ServiceWorkerResponse having caseless
706 // headers so that it can quickly lookup vary headers. 684 // headers so that it can quickly lookup vary headers.
707 ServiceWorkerResponse response(GURL("http://www.example.com"), 685 ServiceWorkerResponse response(GURL("http://www.example.com"), 200, "OK",
708 200,
709 "OK",
710 blink::WebServiceWorkerResponseTypeDefault, 686 blink::WebServiceWorkerResponseTypeDefault,
711 ServiceWorkerHeaderMap(), 687 ServiceWorkerHeaderMap(), "", 0, GURL());
712 "",
713 0,
714 GURL());
715 response.headers["content-type"] = "foo"; 688 response.headers["content-type"] = "foo";
716 response.headers["Content-Type"] = "bar"; 689 response.headers["Content-Type"] = "bar";
717 EXPECT_EQ("bar", response.headers["content-type"]); 690 EXPECT_EQ("bar", response.headers["content-type"]);
718 } 691 }
719 692
720 TEST_F(ServiceWorkerCacheTest, CaselessServiceWorkerFetchRequestHeaders) { 693 TEST_F(CacheStorageCacheTest, CaselessServiceWorkerFetchRequestHeaders) {
721 // ServiceWorkerCache depends on ServiceWorkerFetchRequest having caseless 694 // CacheStorageCache depends on ServiceWorkerFetchRequest having caseless
722 // headers so that it can quickly lookup vary headers. 695 // headers so that it can quickly lookup vary headers.
723 ServiceWorkerFetchRequest request(GURL("http://www.example.com"), 696 ServiceWorkerFetchRequest request(GURL("http://www.example.com"), "GET",
724 "GET", 697 ServiceWorkerHeaderMap(), Referrer(),
725 ServiceWorkerHeaderMap(), 698 false);
726 Referrer(),
727 false);
728 request.headers["content-type"] = "foo"; 699 request.headers["content-type"] = "foo";
729 request.headers["Content-Type"] = "bar"; 700 request.headers["Content-Type"] = "bar";
730 EXPECT_EQ("bar", request.headers["content-type"]); 701 EXPECT_EQ("bar", request.headers["content-type"]);
731 } 702 }
732 703
733 TEST_P(ServiceWorkerCacheTestP, QuotaManagerModified) { 704 TEST_P(CacheStorageCacheTestP, QuotaManagerModified) {
734 EXPECT_EQ(0, quota_manager_proxy_->notify_storage_modified_count()); 705 EXPECT_EQ(0, quota_manager_proxy_->notify_storage_modified_count());
735 706
736 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 707 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
737 EXPECT_EQ(1, quota_manager_proxy_->notify_storage_modified_count()); 708 EXPECT_EQ(1, quota_manager_proxy_->notify_storage_modified_count());
738 EXPECT_LT(0, quota_manager_proxy_->last_notified_delta()); 709 EXPECT_LT(0, quota_manager_proxy_->last_notified_delta());
739 int64 sum_delta = quota_manager_proxy_->last_notified_delta(); 710 int64 sum_delta = quota_manager_proxy_->last_notified_delta();
740 711
741 EXPECT_TRUE(Put(body_request_, body_response_)); 712 EXPECT_TRUE(Put(body_request_, body_response_));
742 EXPECT_EQ(2, quota_manager_proxy_->notify_storage_modified_count()); 713 EXPECT_EQ(2, quota_manager_proxy_->notify_storage_modified_count());
743 EXPECT_LT(sum_delta, quota_manager_proxy_->last_notified_delta()); 714 EXPECT_LT(sum_delta, quota_manager_proxy_->last_notified_delta());
744 sum_delta += quota_manager_proxy_->last_notified_delta(); 715 sum_delta += quota_manager_proxy_->last_notified_delta();
745 716
746 EXPECT_TRUE(Delete(body_request_)); 717 EXPECT_TRUE(Delete(body_request_));
747 EXPECT_EQ(3, quota_manager_proxy_->notify_storage_modified_count()); 718 EXPECT_EQ(3, quota_manager_proxy_->notify_storage_modified_count());
748 sum_delta += quota_manager_proxy_->last_notified_delta(); 719 sum_delta += quota_manager_proxy_->last_notified_delta();
749 720
750 EXPECT_TRUE(Delete(no_body_request_)); 721 EXPECT_TRUE(Delete(no_body_request_));
751 EXPECT_EQ(4, quota_manager_proxy_->notify_storage_modified_count()); 722 EXPECT_EQ(4, quota_manager_proxy_->notify_storage_modified_count());
752 sum_delta += quota_manager_proxy_->last_notified_delta(); 723 sum_delta += quota_manager_proxy_->last_notified_delta();
753 724
754 EXPECT_EQ(0, sum_delta); 725 EXPECT_EQ(0, sum_delta);
755 } 726 }
756 727
757 TEST_F(ServiceWorkerCacheMemoryOnlyTest, MemoryBackedSize) { 728 TEST_F(CacheStorageCacheMemoryOnlyTest, MemoryBackedSize) {
758 EXPECT_EQ(0, cache_->MemoryBackedSize()); 729 EXPECT_EQ(0, cache_->MemoryBackedSize());
759 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 730 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
760 EXPECT_LT(0, cache_->MemoryBackedSize()); 731 EXPECT_LT(0, cache_->MemoryBackedSize());
761 int64 no_body_size = cache_->MemoryBackedSize(); 732 int64 no_body_size = cache_->MemoryBackedSize();
762 733
763 EXPECT_TRUE(Delete(no_body_request_)); 734 EXPECT_TRUE(Delete(no_body_request_));
764 EXPECT_EQ(0, cache_->MemoryBackedSize()); 735 EXPECT_EQ(0, cache_->MemoryBackedSize());
765 736
766 EXPECT_TRUE(Put(body_request_, body_response_)); 737 EXPECT_TRUE(Put(body_request_, body_response_));
767 EXPECT_LT(no_body_size, cache_->MemoryBackedSize()); 738 EXPECT_LT(no_body_size, cache_->MemoryBackedSize());
768 739
769 EXPECT_TRUE(Delete(body_request_)); 740 EXPECT_TRUE(Delete(body_request_));
770 EXPECT_EQ(0, cache_->MemoryBackedSize()); 741 EXPECT_EQ(0, cache_->MemoryBackedSize());
771 } 742 }
772 743
773 TEST_F(ServiceWorkerCacheTest, MemoryBackedSizePersistent) { 744 TEST_F(CacheStorageCacheTest, MemoryBackedSizePersistent) {
774 EXPECT_EQ(0, cache_->MemoryBackedSize()); 745 EXPECT_EQ(0, cache_->MemoryBackedSize());
775 EXPECT_TRUE(Put(no_body_request_, no_body_response_)); 746 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
776 EXPECT_EQ(0, cache_->MemoryBackedSize()); 747 EXPECT_EQ(0, cache_->MemoryBackedSize());
777 } 748 }
778 749
779 TEST_P(ServiceWorkerCacheTestP, OpsFailOnClosedBackendNeverCreated) { 750 TEST_P(CacheStorageCacheTestP, OpsFailOnClosedBackendNeverCreated) {
780 cache_->set_delay_backend_creation( 751 cache_->set_delay_backend_creation(
781 true); // Will hang the test if a backend is created. 752 true); // Will hang the test if a backend is created.
782 EXPECT_TRUE(Close()); 753 EXPECT_TRUE(Close());
783 VerifyAllOpsFail(); 754 VerifyAllOpsFail();
784 } 755 }
785 756
786 TEST_P(ServiceWorkerCacheTestP, OpsFailOnClosedBackend) { 757 TEST_P(CacheStorageCacheTestP, OpsFailOnClosedBackend) {
787 // Create the backend and put something in it. 758 // Create the backend and put something in it.
788 EXPECT_TRUE(Put(body_request_, body_response_)); 759 EXPECT_TRUE(Put(body_request_, body_response_));
789 EXPECT_TRUE(Close()); 760 EXPECT_TRUE(Close());
790 VerifyAllOpsFail(); 761 VerifyAllOpsFail();
791 } 762 }
792 763
793 TEST_P(ServiceWorkerCacheTestP, VerifySerialScheduling) { 764 TEST_P(CacheStorageCacheTestP, VerifySerialScheduling) {
794 // Start two operations, the first one is delayed but the second isn't. The 765 // Start two operations, the first one is delayed but the second isn't. The
795 // second should wait for the first. 766 // second should wait for the first.
796 EXPECT_TRUE(Keys()); // Opens the backend. 767 EXPECT_TRUE(Keys()); // Opens the backend.
797 DelayableBackend* delayable_backend = cache_->UseDelayableBackend(); 768 DelayableBackend* delayable_backend = cache_->UseDelayableBackend();
798 delayable_backend->set_delay_open(true); 769 delayable_backend->set_delay_open(true);
799 770
800 scoped_ptr<ServiceWorkerResponse> response1 = 771 scoped_ptr<ServiceWorkerResponse> response1 =
801 CopyFetchResponse(body_response_); 772 CopyFetchResponse(body_response_);
802 response1->status_code = 1; 773 response1->status_code = 1;
803 774
804 scoped_ptr<base::RunLoop> close_loop1(new base::RunLoop()); 775 scoped_ptr<base::RunLoop> close_loop1(new base::RunLoop());
805 cache_->Put(CopyFetchRequest(body_request_), response1.Pass(), 776 cache_->Put(CopyFetchRequest(body_request_), response1.Pass(),
806 base::Bind(&ServiceWorkerCacheTest::ResponseAndErrorCallback, 777 base::Bind(&CacheStorageCacheTest::ResponseAndErrorCallback,
807 base::Unretained(this), close_loop1.get())); 778 base::Unretained(this), close_loop1.get()));
808 779
809 // Blocks on opening the cache entry. 780 // Blocks on opening the cache entry.
810 base::RunLoop().RunUntilIdle(); 781 base::RunLoop().RunUntilIdle();
811 782
812 delayable_backend->set_delay_open(false); 783 delayable_backend->set_delay_open(false);
813 scoped_ptr<ServiceWorkerResponse> response2 = 784 scoped_ptr<ServiceWorkerResponse> response2 =
814 CopyFetchResponse(body_response_); 785 CopyFetchResponse(body_response_);
815 response2->status_code = 2; 786 response2->status_code = 2;
816 scoped_ptr<base::RunLoop> close_loop2(new base::RunLoop()); 787 scoped_ptr<base::RunLoop> close_loop2(new base::RunLoop());
817 cache_->Put(CopyFetchRequest(body_request_), response2.Pass(), 788 cache_->Put(CopyFetchRequest(body_request_), response2.Pass(),
818 base::Bind(&ServiceWorkerCacheTest::ResponseAndErrorCallback, 789 base::Bind(&CacheStorageCacheTest::ResponseAndErrorCallback,
819 base::Unretained(this), close_loop2.get())); 790 base::Unretained(this), close_loop2.get()));
820 791
821 // The second put operation should wait for the first to complete. 792 // The second put operation should wait for the first to complete.
822 base::RunLoop().RunUntilIdle(); 793 base::RunLoop().RunUntilIdle();
823 EXPECT_FALSE(callback_response_); 794 EXPECT_FALSE(callback_response_);
824 795
825 delayable_backend->OpenEntryContinue(); 796 delayable_backend->OpenEntryContinue();
826 close_loop1->Run(); 797 close_loop1->Run();
827 EXPECT_EQ(1, callback_response_->status_code); 798 EXPECT_EQ(1, callback_response_->status_code);
828 close_loop2->Run(); 799 close_loop2->Run();
829 EXPECT_EQ(2, callback_response_->status_code); 800 EXPECT_EQ(2, callback_response_->status_code);
830 } 801 }
831 802
832 INSTANTIATE_TEST_CASE_P(ServiceWorkerCacheTest, 803 INSTANTIATE_TEST_CASE_P(CacheStorageCacheTest,
833 ServiceWorkerCacheTestP, 804 CacheStorageCacheTestP,
834 ::testing::Values(false, true)); 805 ::testing::Values(false, true));
835 806
836 } // namespace content 807 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/cache_storage/cache_storage_cache.cc ('k') | content/browser/cache_storage/cache_storage_context_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698