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

Side by Side Diff: Source/modules/serviceworkers/CacheTest.cpp

Issue 656073002: IDL: Use ALLOW_ONLY_INLINE_ALLOCATION() in dictionaries (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 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 "config.h" 5 #include "config.h"
6 #include "modules/serviceworkers/Cache.h" 6 #include "modules/serviceworkers/Cache.h"
7 7
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/ScriptFunction.h" 9 #include "bindings/core/v8/ScriptFunction.h"
10 #include "bindings/core/v8/ScriptPromise.h" 10 #include "bindings/core/v8/ScriptPromise.h"
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 }; 261 };
262 262
263 TEST_F(ServiceWorkerCacheTest, Basics) 263 TEST_F(ServiceWorkerCacheTest, Basics)
264 { 264 {
265 ErrorWebCacheForTests* testCache; 265 ErrorWebCacheForTests* testCache;
266 Cache* cache = Cache::create(testCache = new NotImplementedErrorCache()); 266 Cache* cache = Cache::create(testCache = new NotImplementedErrorCache());
267 ASSERT(cache); 267 ASSERT(cache);
268 268
269 const String url = "http://www.cachetest.org/"; 269 const String url = "http://www.cachetest.org/";
270 270
271 CacheQueryOptions* options = CacheQueryOptions::create(); 271 CacheQueryOptions options;
272 ScriptPromise matchPromise = cache->match(scriptState(), url, *options); 272 ScriptPromise matchPromise = cache->match(scriptState(), url, options);
273 EXPECT_EQ(kNotImplementedString, getRejectString(matchPromise)); 273 EXPECT_EQ(kNotImplementedString, getRejectString(matchPromise));
274 274
275 cache = Cache::create(testCache = new ErrorWebCacheForTests(WebServiceWorker CacheErrorNotFound)); 275 cache = Cache::create(testCache = new ErrorWebCacheForTests(WebServiceWorker CacheErrorNotFound));
276 matchPromise = cache->match(scriptState(), url, *options); 276 matchPromise = cache->match(scriptState(), url, options);
277 EXPECT_EQ("NotFoundError: Entry was not found.", getRejectString(matchPromis e)); 277 EXPECT_EQ("NotFoundError: Entry was not found.", getRejectString(matchPromis e));
278 278
279 cache = Cache::create(testCache = new ErrorWebCacheForTests(WebServiceWorker CacheErrorExists)); 279 cache = Cache::create(testCache = new ErrorWebCacheForTests(WebServiceWorker CacheErrorExists));
280 matchPromise = cache->match(scriptState(), url, *options); 280 matchPromise = cache->match(scriptState(), url, options);
281 EXPECT_EQ("InvalidAccessError: Entry already exists.", getRejectString(match Promise)); 281 EXPECT_EQ("InvalidAccessError: Entry already exists.", getRejectString(match Promise));
282 } 282 }
283 283
284 // Tests that arguments are faithfully passed on calls to Cache methods, except for methods which use batch operations, 284 // Tests that arguments are faithfully passed on calls to Cache methods, except for methods which use batch operations,
285 // which are tested later. 285 // which are tested later.
286 TEST_F(ServiceWorkerCacheTest, BasicArguments) 286 TEST_F(ServiceWorkerCacheTest, BasicArguments)
287 { 287 {
288 ErrorWebCacheForTests* testCache; 288 ErrorWebCacheForTests* testCache;
289 Cache* cache = Cache::create(testCache = new NotImplementedErrorCache()); 289 Cache* cache = Cache::create(testCache = new NotImplementedErrorCache());
290 ASSERT(cache); 290 ASSERT(cache);
291 291
292 const String url = "http://www.cache.arguments.test/"; 292 const String url = "http://www.cache.arguments.test/";
293 testCache->setExpectedUrl(&url); 293 testCache->setExpectedUrl(&url);
294 294
295 WebServiceWorkerCache::QueryParams expectedQueryParams; 295 WebServiceWorkerCache::QueryParams expectedQueryParams;
296 expectedQueryParams.ignoreVary = true; 296 expectedQueryParams.ignoreVary = true;
297 expectedQueryParams.cacheName = "this is a cache name"; 297 expectedQueryParams.cacheName = "this is a cache name";
298 testCache->setExpectedQueryParams(&expectedQueryParams); 298 testCache->setExpectedQueryParams(&expectedQueryParams);
299 299
300 CacheQueryOptions* options = CacheQueryOptions::create(); 300 CacheQueryOptions options;
301 options->setIgnoreVary(1); 301 options.setIgnoreVary(1);
302 options->setCacheName(expectedQueryParams.cacheName); 302 options.setCacheName(expectedQueryParams.cacheName);
303 303
304 Request* request = newRequestFromUrl(url); 304 Request* request = newRequestFromUrl(url);
305 ASSERT(request); 305 ASSERT(request);
306 ScriptPromise matchResult = cache->match(scriptState(), request, *options); 306 ScriptPromise matchResult = cache->match(scriptState(), request, options);
307 EXPECT_EQ("dispatchMatch", testCache->getAndClearLastErrorWebCacheMethodCall ed()); 307 EXPECT_EQ("dispatchMatch", testCache->getAndClearLastErrorWebCacheMethodCall ed());
308 EXPECT_EQ(kNotImplementedString, getRejectString(matchResult)); 308 EXPECT_EQ(kNotImplementedString, getRejectString(matchResult));
309 309
310 ScriptPromise stringMatchResult = cache->match(scriptState(), url, *options) ; 310 ScriptPromise stringMatchResult = cache->match(scriptState(), url, options);
311 EXPECT_EQ("dispatchMatch", testCache->getAndClearLastErrorWebCacheMethodCall ed()); 311 EXPECT_EQ("dispatchMatch", testCache->getAndClearLastErrorWebCacheMethodCall ed());
312 EXPECT_EQ(kNotImplementedString, getRejectString(stringMatchResult)); 312 EXPECT_EQ(kNotImplementedString, getRejectString(stringMatchResult));
313 313
314 request = newRequestFromUrl(url); 314 request = newRequestFromUrl(url);
315 ASSERT(request); 315 ASSERT(request);
316 ScriptPromise matchAllResult = cache->matchAll(scriptState(), request, *opti ons); 316 ScriptPromise matchAllResult = cache->matchAll(scriptState(), request, optio ns);
317 EXPECT_EQ("dispatchMatchAll", testCache->getAndClearLastErrorWebCacheMethodC alled()); 317 EXPECT_EQ("dispatchMatchAll", testCache->getAndClearLastErrorWebCacheMethodC alled());
318 EXPECT_EQ(kNotImplementedString, getRejectString(matchAllResult)); 318 EXPECT_EQ(kNotImplementedString, getRejectString(matchAllResult));
319 319
320 ScriptPromise stringMatchAllResult = cache->matchAll(scriptState(), url, *op tions); 320 ScriptPromise stringMatchAllResult = cache->matchAll(scriptState(), url, opt ions);
321 EXPECT_EQ("dispatchMatchAll", testCache->getAndClearLastErrorWebCacheMethodC alled()); 321 EXPECT_EQ("dispatchMatchAll", testCache->getAndClearLastErrorWebCacheMethodC alled());
322 EXPECT_EQ(kNotImplementedString, getRejectString(stringMatchAllResult)); 322 EXPECT_EQ(kNotImplementedString, getRejectString(stringMatchAllResult));
323 323
324 ScriptPromise keysResult1 = cache->keys(scriptState()); 324 ScriptPromise keysResult1 = cache->keys(scriptState());
325 EXPECT_EQ("dispatchKeys", testCache->getAndClearLastErrorWebCacheMethodCalle d()); 325 EXPECT_EQ("dispatchKeys", testCache->getAndClearLastErrorWebCacheMethodCalle d());
326 EXPECT_EQ(kNotImplementedString, getRejectString(keysResult1)); 326 EXPECT_EQ(kNotImplementedString, getRejectString(keysResult1));
327 327
328 request = newRequestFromUrl(url); 328 request = newRequestFromUrl(url);
329 ASSERT(request); 329 ASSERT(request);
330 ScriptPromise keysResult2 = cache->keys(scriptState(), request, *options); 330 ScriptPromise keysResult2 = cache->keys(scriptState(), request, options);
331 EXPECT_EQ("dispatchKeys", testCache->getAndClearLastErrorWebCacheMethodCalle d()); 331 EXPECT_EQ("dispatchKeys", testCache->getAndClearLastErrorWebCacheMethodCalle d());
332 EXPECT_EQ(kNotImplementedString, getRejectString(keysResult2)); 332 EXPECT_EQ(kNotImplementedString, getRejectString(keysResult2));
333 333
334 ScriptPromise stringKeysResult2 = cache->keys(scriptState(), url, *options); 334 ScriptPromise stringKeysResult2 = cache->keys(scriptState(), url, options);
335 EXPECT_EQ("dispatchKeys", testCache->getAndClearLastErrorWebCacheMethodCalle d()); 335 EXPECT_EQ("dispatchKeys", testCache->getAndClearLastErrorWebCacheMethodCalle d());
336 EXPECT_EQ(kNotImplementedString, getRejectString(stringKeysResult2)); 336 EXPECT_EQ(kNotImplementedString, getRejectString(stringKeysResult2));
337 } 337 }
338 338
339 // Tests that arguments are faithfully passed to API calls that degrade to batch operations. 339 // Tests that arguments are faithfully passed to API calls that degrade to batch operations.
340 TEST_F(ServiceWorkerCacheTest, BatchOperationArguments) 340 TEST_F(ServiceWorkerCacheTest, BatchOperationArguments)
341 { 341 {
342 ErrorWebCacheForTests* testCache; 342 ErrorWebCacheForTests* testCache;
343 Cache* cache = Cache::create(testCache = new NotImplementedErrorCache()); 343 Cache* cache = Cache::create(testCache = new NotImplementedErrorCache());
344 ASSERT(cache); 344 ASSERT(cache);
345 345
346 WebServiceWorkerCache::QueryParams expectedQueryParams; 346 WebServiceWorkerCache::QueryParams expectedQueryParams;
347 expectedQueryParams.prefixMatch = true; 347 expectedQueryParams.prefixMatch = true;
348 expectedQueryParams.cacheName = "this is another cache name"; 348 expectedQueryParams.cacheName = "this is another cache name";
349 testCache->setExpectedQueryParams(&expectedQueryParams); 349 testCache->setExpectedQueryParams(&expectedQueryParams);
350 350
351 CacheQueryOptions* options = CacheQueryOptions::create(); 351 CacheQueryOptions options;
352 options->setPrefixMatch(1); 352 options.setPrefixMatch(1);
353 options->setCacheName(expectedQueryParams.cacheName); 353 options.setCacheName(expectedQueryParams.cacheName);
354 354
355 const String url = "http://batch.operations.test/"; 355 const String url = "http://batch.operations.test/";
356 Request* request = newRequestFromUrl(url); 356 Request* request = newRequestFromUrl(url);
357 ASSERT(request); 357 ASSERT(request);
358 358
359 WebServiceWorkerResponse webResponse; 359 WebServiceWorkerResponse webResponse;
360 webResponse.setURL(KURL(ParsedURLString, url)); 360 webResponse.setURL(KURL(ParsedURLString, url));
361 Response* response = Response::create(executionContext(), webResponse); 361 Response* response = Response::create(executionContext(), webResponse);
362 362
363 WebVector<WebServiceWorkerCache::BatchOperation> expectedDeleteOperations(si ze_t(1)); 363 WebVector<WebServiceWorkerCache::BatchOperation> expectedDeleteOperations(si ze_t(1));
364 { 364 {
365 WebServiceWorkerCache::BatchOperation deleteOperation; 365 WebServiceWorkerCache::BatchOperation deleteOperation;
366 deleteOperation.operationType = WebServiceWorkerCache::OperationTypeDele te; 366 deleteOperation.operationType = WebServiceWorkerCache::OperationTypeDele te;
367 request->populateWebServiceWorkerRequest(deleteOperation.request); 367 request->populateWebServiceWorkerRequest(deleteOperation.request);
368 deleteOperation.matchParams = expectedQueryParams; 368 deleteOperation.matchParams = expectedQueryParams;
369 expectedDeleteOperations[0] = deleteOperation; 369 expectedDeleteOperations[0] = deleteOperation;
370 } 370 }
371 testCache->setExpectedBatchOperations(&expectedDeleteOperations); 371 testCache->setExpectedBatchOperations(&expectedDeleteOperations);
372 372
373 ScriptPromise deleteResult = cache->deleteFunction(scriptState(), request, * options); 373 ScriptPromise deleteResult = cache->deleteFunction(scriptState(), request, o ptions);
374 EXPECT_EQ("dispatchBatch", testCache->getAndClearLastErrorWebCacheMethodCall ed()); 374 EXPECT_EQ("dispatchBatch", testCache->getAndClearLastErrorWebCacheMethodCall ed());
375 EXPECT_EQ(kNotImplementedString, getRejectString(deleteResult)); 375 EXPECT_EQ(kNotImplementedString, getRejectString(deleteResult));
376 376
377 ScriptPromise stringDeleteResult = cache->deleteFunction(scriptState(), url, *options); 377 ScriptPromise stringDeleteResult = cache->deleteFunction(scriptState(), url, options);
378 EXPECT_EQ("dispatchBatch", testCache->getAndClearLastErrorWebCacheMethodCall ed()); 378 EXPECT_EQ("dispatchBatch", testCache->getAndClearLastErrorWebCacheMethodCall ed());
379 EXPECT_EQ(kNotImplementedString, getRejectString(stringDeleteResult)); 379 EXPECT_EQ(kNotImplementedString, getRejectString(stringDeleteResult));
380 380
381 WebVector<WebServiceWorkerCache::BatchOperation> expectedPutOperations(size_ t(1)); 381 WebVector<WebServiceWorkerCache::BatchOperation> expectedPutOperations(size_ t(1));
382 { 382 {
383 WebServiceWorkerCache::BatchOperation putOperation; 383 WebServiceWorkerCache::BatchOperation putOperation;
384 putOperation.operationType = WebServiceWorkerCache::OperationTypePut; 384 putOperation.operationType = WebServiceWorkerCache::OperationTypePut;
385 request->populateWebServiceWorkerRequest(putOperation.request); 385 request->populateWebServiceWorkerRequest(putOperation.request);
386 response->populateWebServiceWorkerResponse(putOperation.response); 386 response->populateWebServiceWorkerResponse(putOperation.response);
387 expectedPutOperations[0] = putOperation; 387 expectedPutOperations[0] = putOperation;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 TEST_F(ServiceWorkerCacheTest, MatchResponseTest) 420 TEST_F(ServiceWorkerCacheTest, MatchResponseTest)
421 { 421 {
422 const String requestUrl = "http://request.url/"; 422 const String requestUrl = "http://request.url/";
423 const String responseUrl = "http://match.response.test/"; 423 const String responseUrl = "http://match.response.test/";
424 424
425 WebServiceWorkerResponse webResponse; 425 WebServiceWorkerResponse webResponse;
426 webResponse.setURL(KURL(ParsedURLString, responseUrl)); 426 webResponse.setURL(KURL(ParsedURLString, responseUrl));
427 webResponse.setResponseType(WebServiceWorkerResponseTypeDefault); 427 webResponse.setResponseType(WebServiceWorkerResponseTypeDefault);
428 428
429 Cache* cache = Cache::create(new MatchTestCache(webResponse)); 429 Cache* cache = Cache::create(new MatchTestCache(webResponse));
430 CacheQueryOptions* options = CacheQueryOptions::create(); 430 CacheQueryOptions options;
431 431
432 ScriptPromise result = cache->match(scriptState(), requestUrl, *options); 432 ScriptPromise result = cache->match(scriptState(), requestUrl, options);
433 ScriptValue scriptValue = getResolveValue(result); 433 ScriptValue scriptValue = getResolveValue(result);
434 Response* response = V8Response::toImplWithTypeCheck(isolate(), scriptValue. v8Value()); 434 Response* response = V8Response::toImplWithTypeCheck(isolate(), scriptValue. v8Value());
435 ASSERT_TRUE(response); 435 ASSERT_TRUE(response);
436 EXPECT_EQ(responseUrl, response->url()); 436 EXPECT_EQ(responseUrl, response->url());
437 } 437 }
438 438
439 class KeysTestCache : public NotImplementedErrorCache { 439 class KeysTestCache : public NotImplementedErrorCache {
440 public: 440 public:
441 KeysTestCache(WebVector<WebServiceWorkerRequest>& requests) 441 KeysTestCache(WebVector<WebServiceWorkerRequest>& requests)
442 : m_requests(requests) { } 442 : m_requests(requests) { }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 expectedUrls[1] = url2; 511 expectedUrls[1] = url2;
512 512
513 WebVector<WebServiceWorkerResponse> webResponses(size_t(2)); 513 WebVector<WebServiceWorkerResponse> webResponses(size_t(2));
514 webResponses[0].setURL(KURL(ParsedURLString, url1)); 514 webResponses[0].setURL(KURL(ParsedURLString, url1));
515 webResponses[0].setResponseType(WebServiceWorkerResponseTypeDefault); 515 webResponses[0].setResponseType(WebServiceWorkerResponseTypeDefault);
516 webResponses[1].setURL(KURL(ParsedURLString, url2)); 516 webResponses[1].setURL(KURL(ParsedURLString, url2));
517 webResponses[1].setResponseType(WebServiceWorkerResponseTypeDefault); 517 webResponses[1].setResponseType(WebServiceWorkerResponseTypeDefault);
518 518
519 Cache* cache = Cache::create(new MatchAllAndBatchTestCache(webResponses)); 519 Cache* cache = Cache::create(new MatchAllAndBatchTestCache(webResponses));
520 520
521 CacheQueryOptions* options = CacheQueryOptions::create(); 521 CacheQueryOptions options;
522 ScriptPromise result = cache->matchAll(scriptState(), "http://some.url/", *o ptions); 522 ScriptPromise result = cache->matchAll(scriptState(), "http://some.url/", op tions);
523 ScriptValue scriptValue = getResolveValue(result); 523 ScriptValue scriptValue = getResolveValue(result);
524 524
525 NonThrowableExceptionState exceptionState; 525 NonThrowableExceptionState exceptionState;
526 Vector<v8::Handle<v8::Value> > responses = toImplArray<v8::Handle<v8::Value> >(scriptValue.v8Value(), 0, isolate(), exceptionState); 526 Vector<v8::Handle<v8::Value> > responses = toImplArray<v8::Handle<v8::Value> >(scriptValue.v8Value(), 0, isolate(), exceptionState);
527 EXPECT_EQ(expectedUrls.size(), responses.size()); 527 EXPECT_EQ(expectedUrls.size(), responses.size());
528 for (int i = 0, minsize = std::min(expectedUrls.size(), responses.size()); i < minsize; ++i) { 528 for (int i = 0, minsize = std::min(expectedUrls.size(), responses.size()); i < minsize; ++i) {
529 Response* response = V8Response::toImplWithTypeCheck(isolate(), response s[i]); 529 Response* response = V8Response::toImplWithTypeCheck(isolate(), response s[i]);
530 EXPECT_TRUE(response); 530 EXPECT_TRUE(response);
531 if (response) 531 if (response)
532 EXPECT_EQ(expectedUrls[i], response->url()); 532 EXPECT_EQ(expectedUrls[i], response->url());
533 } 533 }
534 534
535 result = cache->deleteFunction(scriptState(), "http://some.url/", *options); 535 result = cache->deleteFunction(scriptState(), "http://some.url/", options);
536 scriptValue = getResolveValue(result); 536 scriptValue = getResolveValue(result);
537 EXPECT_TRUE(scriptValue.v8Value()->IsBoolean()); 537 EXPECT_TRUE(scriptValue.v8Value()->IsBoolean());
538 EXPECT_EQ(true, scriptValue.v8Value()->BooleanValue()); 538 EXPECT_EQ(true, scriptValue.v8Value()->BooleanValue());
539 } 539 }
540 540
541 } // namespace 541 } // namespace
542 } // namespace blink 542 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/serviceworkers/CacheQueryOptions.idl ('k') | Source/modules/serviceworkers/RegistrationOptions.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698