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

Side by Side Diff: content/browser/service_worker/service_worker_cache_unittest.cc

Issue 542703002: Change ownership of the parameters to ServiceWorkerCache:: Put and Match. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@keys
Patch Set: Rebase Created 6 years, 3 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
« no previous file with comments | « content/browser/service_worker/service_worker_cache.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/service_worker/service_worker_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"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 cache_.reset(); 86 cache_.reset();
87 base::RunLoop().RunUntilIdle(); 87 base::RunLoop().RunUntilIdle();
88 disk_cache::SimpleBackendImpl::FlushWorkerPoolForTesting(); 88 disk_cache::SimpleBackendImpl::FlushWorkerPoolForTesting();
89 base::RunLoop().RunUntilIdle(); 89 base::RunLoop().RunUntilIdle();
90 } 90 }
91 91
92 void CreateRequests(ChromeBlobStorageContext* blob_storage_context) { 92 void CreateRequests(ChromeBlobStorageContext* blob_storage_context) {
93 std::map<std::string, std::string> headers; 93 std::map<std::string, std::string> headers;
94 headers.insert(std::make_pair("a", "a")); 94 headers.insert(std::make_pair("a", "a"));
95 headers.insert(std::make_pair("b", "b")); 95 headers.insert(std::make_pair("b", "b"));
96 body_request_.reset(new ServiceWorkerFetchRequest( 96 body_request_ = ServiceWorkerFetchRequest(
97 GURL("http://example.com/body.html"), "GET", headers, GURL(""), false)); 97 GURL("http://example.com/body.html"), "GET", headers, GURL(""), false);
98 no_body_request_.reset( 98 no_body_request_ =
99 new ServiceWorkerFetchRequest(GURL("http://example.com/no_body.html"), 99 ServiceWorkerFetchRequest(GURL("http://example.com/no_body.html"),
100 "GET", 100 "GET",
101 headers, 101 headers,
102 GURL(""), 102 GURL(""),
103 false)); 103 false);
104 104
105 std::string expected_response; 105 std::string expected_response;
106 for (int i = 0; i < 100; ++i) 106 for (int i = 0; i < 100; ++i)
107 expected_blob_data_ += kTestData; 107 expected_blob_data_ += kTestData;
108 108
109 scoped_refptr<storage::BlobData> blob_data( 109 scoped_refptr<storage::BlobData> blob_data(
110 new storage::BlobData("blob-id:myblob")); 110 new storage::BlobData("blob-id:myblob"));
111 blob_data->AppendData(expected_blob_data_); 111 blob_data->AppendData(expected_blob_data_);
112 112
113 blob_handle_ = 113 blob_handle_ =
114 blob_storage_context->context()->AddFinishedBlob(blob_data.get()); 114 blob_storage_context->context()->AddFinishedBlob(blob_data.get());
115 115
116 body_response_.reset( 116 body_response_ = ServiceWorkerResponse(GURL("http://example.com/body.html"),
117 new ServiceWorkerResponse(GURL("http://example.com/body.html"), 117 200,
118 200, 118 "OK",
119 "OK", 119 headers,
120 headers, 120 blob_handle_->uuid());
121 blob_handle_->uuid()));
122 121
123 no_body_response_.reset(new ServiceWorkerResponse( 122 no_body_response_ = ServiceWorkerResponse(
124 GURL("http://example.com/no_body.html"), 200, "OK", headers, "")); 123 GURL("http://example.com/no_body.html"), 200, "OK", headers, "");
125 } 124 }
126 125
127 void CreateBackend() { 126 void CreateBackend() {
128 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 127 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
129 cache_->CreateBackend(base::Bind(&ServiceWorkerCacheTest::ErrorTypeCallback, 128 cache_->CreateBackend(base::Bind(&ServiceWorkerCacheTest::ErrorTypeCallback,
130 base::Unretained(this), 129 base::Unretained(this),
131 base::Unretained(loop.get()))); 130 base::Unretained(loop.get())));
132 loop->Run(); 131 loop->Run();
133 EXPECT_EQ(ServiceWorkerCache::ErrorTypeOK, callback_error_); 132 EXPECT_EQ(ServiceWorkerCache::ErrorTypeOK, callback_error_);
134 } 133 }
135 134
136 bool Put(ServiceWorkerFetchRequest* request, 135 scoped_ptr<ServiceWorkerFetchRequest> CopyFetchRequest(
137 ServiceWorkerResponse* response) { 136 const ServiceWorkerFetchRequest& request) {
137 return make_scoped_ptr(new ServiceWorkerFetchRequest(request.url,
138 request.method,
139 request.headers,
140 request.referrer,
141 request.is_reload));
142 }
143
144 scoped_ptr<ServiceWorkerResponse> CopyFetchResponse(
145 const ServiceWorkerResponse& response) {
146 return make_scoped_ptr(new ServiceWorkerResponse(response.url,
147 response.status_code,
148 response.status_text,
149 response.headers,
150 response.blob_uuid));
151 }
152
153 bool Put(const ServiceWorkerFetchRequest& request,
154 const ServiceWorkerResponse& response) {
138 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 155 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
139 156
140 cache_->Put(request, 157 cache_->Put(CopyFetchRequest(request),
141 response, 158 CopyFetchResponse(response),
142 base::Bind(&ServiceWorkerCacheTest::ErrorTypeCallback, 159 base::Bind(&ServiceWorkerCacheTest::ErrorTypeCallback,
143 base::Unretained(this), 160 base::Unretained(this),
144 base::Unretained(loop.get()))); 161 base::Unretained(loop.get())));
145 // TODO(jkarlin): These functions should use base::RunLoop().RunUntilIdle() 162 // TODO(jkarlin): These functions should use base::RunLoop().RunUntilIdle()
146 // once the cache uses a passed in MessageLoopProxy instead of the CACHE 163 // once the cache uses a passed in MessageLoopProxy instead of the CACHE
147 // thread. 164 // thread.
148 loop->Run(); 165 loop->Run();
149 166
150 return callback_error_ == ServiceWorkerCache::ErrorTypeOK; 167 return callback_error_ == ServiceWorkerCache::ErrorTypeOK;
151 } 168 }
152 169
153 bool Match(ServiceWorkerFetchRequest* request) { 170 bool Match(const ServiceWorkerFetchRequest& request) {
154 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 171 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
155 172
156 cache_->Match(request, 173 cache_->Match(CopyFetchRequest(request),
157 base::Bind(&ServiceWorkerCacheTest::ResponseAndErrorCallback, 174 base::Bind(&ServiceWorkerCacheTest::ResponseAndErrorCallback,
158 base::Unretained(this), 175 base::Unretained(this),
159 base::Unretained(loop.get()))); 176 base::Unretained(loop.get())));
160 loop->Run(); 177 loop->Run();
161 178
162 return callback_error_ == ServiceWorkerCache::ErrorTypeOK; 179 return callback_error_ == ServiceWorkerCache::ErrorTypeOK;
163 } 180 }
164 181
165 bool Delete(ServiceWorkerFetchRequest* request) { 182 bool Delete(const ServiceWorkerFetchRequest& request) {
166 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 183 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
167 184
168 cache_->Delete(request, 185 cache_->Delete(CopyFetchRequest(request),
169 base::Bind(&ServiceWorkerCacheTest::ErrorTypeCallback, 186 base::Bind(&ServiceWorkerCacheTest::ErrorTypeCallback,
170 base::Unretained(this), 187 base::Unretained(this),
171 base::Unretained(loop.get()))); 188 base::Unretained(loop.get())));
172 loop->Run(); 189 loop->Run();
173 190
174 return callback_error_ == ServiceWorkerCache::ErrorTypeOK; 191 return callback_error_ == ServiceWorkerCache::ErrorTypeOK;
175 } 192 }
176 193
177 bool Keys() { 194 bool Keys() {
178 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 195 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 260
244 protected: 261 protected:
245 TestBrowserContext browser_context_; 262 TestBrowserContext browser_context_;
246 TestBrowserThreadBundle browser_thread_bundle_; 263 TestBrowserThreadBundle browser_thread_bundle_;
247 scoped_ptr<net::URLRequestJobFactoryImpl> url_request_job_factory_; 264 scoped_ptr<net::URLRequestJobFactoryImpl> url_request_job_factory_;
248 storage::BlobStorageContext* blob_storage_context_; 265 storage::BlobStorageContext* blob_storage_context_;
249 266
250 base::ScopedTempDir temp_dir_; 267 base::ScopedTempDir temp_dir_;
251 scoped_ptr<ServiceWorkerCache> cache_; 268 scoped_ptr<ServiceWorkerCache> cache_;
252 269
253 scoped_ptr<ServiceWorkerFetchRequest> body_request_; 270 ServiceWorkerFetchRequest body_request_;
254 scoped_ptr<ServiceWorkerResponse> body_response_; 271 ServiceWorkerResponse body_response_;
255 scoped_ptr<ServiceWorkerFetchRequest> no_body_request_; 272 ServiceWorkerFetchRequest no_body_request_;
256 scoped_ptr<ServiceWorkerResponse> no_body_response_; 273 ServiceWorkerResponse no_body_response_;
257 scoped_ptr<storage::BlobDataHandle> blob_handle_; 274 scoped_ptr<storage::BlobDataHandle> blob_handle_;
258 std::string expected_blob_data_; 275 std::string expected_blob_data_;
259 276
260 ServiceWorkerCache::ErrorType callback_error_; 277 ServiceWorkerCache::ErrorType callback_error_;
261 scoped_ptr<ServiceWorkerResponse> callback_response_; 278 scoped_ptr<ServiceWorkerResponse> callback_response_;
262 scoped_ptr<storage::BlobDataHandle> callback_response_data_; 279 scoped_ptr<storage::BlobDataHandle> callback_response_data_;
263 std::vector<std::string> callback_strings_; 280 std::vector<std::string> callback_strings_;
264 }; 281 };
265 282
266 class ServiceWorkerCacheTestP : public ServiceWorkerCacheTest, 283 class ServiceWorkerCacheTestP : public ServiceWorkerCacheTest,
267 public testing::WithParamInterface<bool> { 284 public testing::WithParamInterface<bool> {
268 virtual bool MemoryOnly() OVERRIDE { return !GetParam(); } 285 virtual bool MemoryOnly() OVERRIDE { return !GetParam(); }
269 }; 286 };
270 287
271 TEST_P(ServiceWorkerCacheTestP, PutNoBody) { 288 TEST_P(ServiceWorkerCacheTestP, PutNoBody) {
272 EXPECT_TRUE(Put(no_body_request_.get(), no_body_response_.get())); 289 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
273 } 290 }
274 291
275 TEST_P(ServiceWorkerCacheTestP, PutBody) { 292 TEST_P(ServiceWorkerCacheTestP, PutBody) {
276 EXPECT_TRUE(Put(body_request_.get(), body_response_.get())); 293 EXPECT_TRUE(Put(body_request_, body_response_));
277 } 294 }
278 295
279 TEST_P(ServiceWorkerCacheTestP, PutBodyDropBlobRef) { 296 TEST_P(ServiceWorkerCacheTestP, PutBodyDropBlobRef) {
280 scoped_ptr<base::RunLoop> loop(new base::RunLoop()); 297 scoped_ptr<base::RunLoop> loop(new base::RunLoop());
281 cache_->Put(body_request_.get(), 298 cache_->Put(CopyFetchRequest(body_request_),
282 body_response_.get(), 299 CopyFetchResponse(body_response_),
283 base::Bind(&ServiceWorkerCacheTestP::ErrorTypeCallback, 300 base::Bind(&ServiceWorkerCacheTestP::ErrorTypeCallback,
284 base::Unretained(this), 301 base::Unretained(this),
285 base::Unretained(loop.get()))); 302 base::Unretained(loop.get())));
286 // The handle should be held by the cache now so the deref here should be 303 // The handle should be held by the cache now so the deref here should be
287 // okay. 304 // okay.
288 blob_handle_.reset(); 305 blob_handle_.reset();
289 loop->Run(); 306 loop->Run();
290 307
291 EXPECT_EQ(ServiceWorkerCache::ErrorTypeOK, callback_error_); 308 EXPECT_EQ(ServiceWorkerCache::ErrorTypeOK, callback_error_);
292 } 309 }
293 310
294 TEST_P(ServiceWorkerCacheTestP, MatchNoBody) { 311 TEST_P(ServiceWorkerCacheTestP, MatchNoBody) {
295 EXPECT_TRUE(Put(no_body_request_.get(), no_body_response_.get())); 312 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
296 EXPECT_TRUE(Match(no_body_request_.get())); 313 EXPECT_TRUE(Match(no_body_request_));
297 EXPECT_EQ(200, callback_response_->status_code); 314 EXPECT_EQ(200, callback_response_->status_code);
298 EXPECT_STREQ("OK", callback_response_->status_text.c_str()); 315 EXPECT_STREQ("OK", callback_response_->status_text.c_str());
299 EXPECT_STREQ("http://example.com/no_body.html", 316 EXPECT_STREQ("http://example.com/no_body.html",
300 callback_response_->url.spec().c_str()); 317 callback_response_->url.spec().c_str());
301 } 318 }
302 319
303 TEST_P(ServiceWorkerCacheTestP, MatchBody) { 320 TEST_P(ServiceWorkerCacheTestP, MatchBody) {
304 EXPECT_TRUE(Put(body_request_.get(), body_response_.get())); 321 EXPECT_TRUE(Put(body_request_, body_response_));
305 EXPECT_TRUE(Match(body_request_.get())); 322 EXPECT_TRUE(Match(body_request_));
306 EXPECT_EQ(200, callback_response_->status_code); 323 EXPECT_EQ(200, callback_response_->status_code);
307 EXPECT_STREQ("OK", callback_response_->status_text.c_str()); 324 EXPECT_STREQ("OK", callback_response_->status_text.c_str());
308 EXPECT_STREQ("http://example.com/body.html", 325 EXPECT_STREQ("http://example.com/body.html",
309 callback_response_->url.spec().c_str()); 326 callback_response_->url.spec().c_str());
310 std::string response_body; 327 std::string response_body;
311 CopyBody(callback_response_data_.get(), &response_body); 328 CopyBody(callback_response_data_.get(), &response_body);
312 EXPECT_STREQ(expected_blob_data_.c_str(), response_body.c_str()); 329 EXPECT_STREQ(expected_blob_data_.c_str(), response_body.c_str());
313 } 330 }
314 331
315 TEST_P(ServiceWorkerCacheTestP, EmptyKeys) { 332 TEST_P(ServiceWorkerCacheTestP, EmptyKeys) {
316 EXPECT_TRUE(Keys()); 333 EXPECT_TRUE(Keys());
317 EXPECT_EQ(0u, callback_strings_.size()); 334 EXPECT_EQ(0u, callback_strings_.size());
318 } 335 }
319 336
320 TEST_P(ServiceWorkerCacheTestP, TwoKeys) { 337 TEST_P(ServiceWorkerCacheTestP, TwoKeys) {
321 EXPECT_TRUE(Put(no_body_request_.get(), no_body_response_.get())); 338 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
322 EXPECT_TRUE(Put(body_request_.get(), body_response_.get())); 339 EXPECT_TRUE(Put(body_request_, body_response_));
323 EXPECT_TRUE(Keys()); 340 EXPECT_TRUE(Keys());
324 EXPECT_EQ(2u, callback_strings_.size()); 341 EXPECT_EQ(2u, callback_strings_.size());
325 std::vector<std::string> expected_keys; 342 std::vector<std::string> expected_keys;
326 expected_keys.push_back(no_body_request_->url.spec()); 343 expected_keys.push_back(no_body_request_.url.spec());
327 expected_keys.push_back(body_request_->url.spec()); 344 expected_keys.push_back(body_request_.url.spec());
328 EXPECT_TRUE(VerifyKeys(expected_keys)); 345 EXPECT_TRUE(VerifyKeys(expected_keys));
329 } 346 }
330 347
331 TEST_P(ServiceWorkerCacheTestP, TwoKeysThenOne) { 348 TEST_P(ServiceWorkerCacheTestP, TwoKeysThenOne) {
332 EXPECT_TRUE(Put(no_body_request_.get(), no_body_response_.get())); 349 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
333 EXPECT_TRUE(Put(body_request_.get(), body_response_.get())); 350 EXPECT_TRUE(Put(body_request_, body_response_));
334 EXPECT_TRUE(Keys()); 351 EXPECT_TRUE(Keys());
335 EXPECT_EQ(2u, callback_strings_.size()); 352 EXPECT_EQ(2u, callback_strings_.size());
336 std::vector<std::string> expected_keys; 353 std::vector<std::string> expected_keys;
337 expected_keys.push_back(no_body_request_->url.spec()); 354 expected_keys.push_back(no_body_request_.url.spec());
338 expected_keys.push_back(body_request_->url.spec()); 355 expected_keys.push_back(body_request_.url.spec());
339 EXPECT_TRUE(VerifyKeys(expected_keys)); 356 EXPECT_TRUE(VerifyKeys(expected_keys));
340 357
341 EXPECT_TRUE(Delete(body_request_.get())); 358 EXPECT_TRUE(Delete(body_request_));
342 EXPECT_TRUE(Keys()); 359 EXPECT_TRUE(Keys());
343 EXPECT_EQ(1u, callback_strings_.size()); 360 EXPECT_EQ(1u, callback_strings_.size());
344 std::vector<std::string> expected_key; 361 std::vector<std::string> expected_key;
345 expected_key.push_back(no_body_request_->url.spec()); 362 expected_key.push_back(no_body_request_.url.spec());
346 EXPECT_TRUE(VerifyKeys(expected_key)); 363 EXPECT_TRUE(VerifyKeys(expected_key));
347 } 364 }
348 365
349 // TODO(jkarlin): Once SimpleCache is working bug-free on Windows reenable these 366 // TODO(jkarlin): Once SimpleCache is working bug-free on Windows reenable these
350 // tests. In the meanwhile we know that Windows operations will be a little 367 // tests. In the meanwhile we know that Windows operations will be a little
351 // flaky (though not crashy). See https://crbug.com/409109 368 // flaky (though not crashy). See https://crbug.com/409109
352 #ifndef OS_WIN 369 #ifndef OS_WIN
353 TEST_P(ServiceWorkerCacheTestP, DeleteNoBody) { 370 TEST_P(ServiceWorkerCacheTestP, DeleteNoBody) {
354 EXPECT_TRUE(Put(no_body_request_.get(), no_body_response_.get())); 371 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
355 EXPECT_TRUE(Match(no_body_request_.get())); 372 EXPECT_TRUE(Match(no_body_request_));
356 EXPECT_TRUE(Delete(no_body_request_.get())); 373 EXPECT_TRUE(Delete(no_body_request_));
357 EXPECT_FALSE(Match(no_body_request_.get())); 374 EXPECT_FALSE(Match(no_body_request_));
358 EXPECT_FALSE(Delete(no_body_request_.get())); 375 EXPECT_FALSE(Delete(no_body_request_));
359 EXPECT_TRUE(Put(no_body_request_.get(), no_body_response_.get())); 376 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
360 EXPECT_TRUE(Match(no_body_request_.get())); 377 EXPECT_TRUE(Match(no_body_request_));
361 EXPECT_TRUE(Delete(no_body_request_.get())); 378 EXPECT_TRUE(Delete(no_body_request_));
362 } 379 }
363 380
364 TEST_P(ServiceWorkerCacheTestP, DeleteBody) { 381 TEST_P(ServiceWorkerCacheTestP, DeleteBody) {
365 EXPECT_TRUE(Put(body_request_.get(), body_response_.get())); 382 EXPECT_TRUE(Put(body_request_, body_response_));
366 EXPECT_TRUE(Match(body_request_.get())); 383 EXPECT_TRUE(Match(body_request_));
367 EXPECT_TRUE(Delete(body_request_.get())); 384 EXPECT_TRUE(Delete(body_request_));
368 EXPECT_FALSE(Match(body_request_.get())); 385 EXPECT_FALSE(Match(body_request_));
369 EXPECT_FALSE(Delete(body_request_.get())); 386 EXPECT_FALSE(Delete(body_request_));
370 EXPECT_TRUE(Put(body_request_.get(), body_response_.get())); 387 EXPECT_TRUE(Put(body_request_, body_response_));
371 EXPECT_TRUE(Match(body_request_.get())); 388 EXPECT_TRUE(Match(body_request_));
372 EXPECT_TRUE(Delete(body_request_.get())); 389 EXPECT_TRUE(Delete(body_request_));
373 } 390 }
374 391
375 TEST_P(ServiceWorkerCacheTestP, QuickStressNoBody) { 392 TEST_P(ServiceWorkerCacheTestP, QuickStressNoBody) {
376 for (int i = 0; i < 100; ++i) { 393 for (int i = 0; i < 100; ++i) {
377 EXPECT_FALSE(Match(no_body_request_.get())); 394 EXPECT_FALSE(Match(no_body_request_));
378 EXPECT_TRUE(Put(no_body_request_.get(), no_body_response_.get())); 395 EXPECT_TRUE(Put(no_body_request_, no_body_response_));
379 EXPECT_TRUE(Match(no_body_request_.get())); 396 EXPECT_TRUE(Match(no_body_request_));
380 EXPECT_TRUE(Delete(no_body_request_.get())); 397 EXPECT_TRUE(Delete(no_body_request_));
381 } 398 }
382 } 399 }
383 400
384 TEST_P(ServiceWorkerCacheTestP, QuickStressBody) { 401 TEST_P(ServiceWorkerCacheTestP, QuickStressBody) {
385 for (int i = 0; i < 100; ++i) { 402 for (int i = 0; i < 100; ++i) {
386 ASSERT_FALSE(Match(body_request_.get())); 403 ASSERT_FALSE(Match(body_request_));
387 ASSERT_TRUE(Put(body_request_.get(), body_response_.get())); 404 ASSERT_TRUE(Put(body_request_, body_response_));
388 ASSERT_TRUE(Match(body_request_.get())); 405 ASSERT_TRUE(Match(body_request_));
389 ASSERT_TRUE(Delete(body_request_.get())); 406 ASSERT_TRUE(Delete(body_request_));
390 } 407 }
391 } 408 }
392 #endif // OS_WIN 409 #endif // OS_WIN
393 410
394 INSTANTIATE_TEST_CASE_P(ServiceWorkerCacheTest, 411 INSTANTIATE_TEST_CASE_P(ServiceWorkerCacheTest,
395 ServiceWorkerCacheTestP, 412 ServiceWorkerCacheTestP,
396 ::testing::Values(false, true)); 413 ::testing::Values(false, true));
397 414
398 } // namespace content 415 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_cache.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698