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

Side by Side Diff: third_party/WebKit/Source/core/fetch/ImageResourceTest.cpp

Issue 2361263003: Blink: Throttle progressively loaded images. (Closed)
Patch Set: throttle-images: update Created 4 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
« no previous file with comments | « third_party/WebKit/Source/core/fetch/ImageResource.cpp ('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 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 Vector<unsigned char> jpeg = jpegImage(); 362 Vector<unsigned char> jpeg = jpegImage();
363 cachedImage->responseReceived( 363 cachedImage->responseReceived(
364 ResourceResponse(KURL(), "image/jpeg", jpeg.size(), nullAtom, String()), 364 ResourceResponse(KURL(), "image/jpeg", jpeg.size(), nullAtom, String()),
365 nullptr); 365 nullptr);
366 cachedImage->appendData(reinterpret_cast<const char*>(jpeg.data()), 366 cachedImage->appendData(reinterpret_cast<const char*>(jpeg.data()),
367 jpeg.size()); 367 jpeg.size());
368 cachedImage->finish(); 368 cachedImage->finish();
369 EXPECT_FALSE(cachedImage->errorOccurred()); 369 EXPECT_FALSE(cachedImage->errorOccurred());
370 ASSERT_TRUE(cachedImage->hasImage()); 370 ASSERT_TRUE(cachedImage->hasImage());
371 EXPECT_FALSE(cachedImage->getImage()->isNull()); 371 EXPECT_FALSE(cachedImage->getImage()->isNull());
372 EXPECT_EQ(2, client->imageChangedCount()); 372 EXPECT_EQ(1, client->imageChangedCount());
373 EXPECT_TRUE(client->notifyFinishedCalled()); 373 EXPECT_TRUE(client->notifyFinishedCalled());
374 EXPECT_TRUE(cachedImage->getImage()->isBitmapImage()); 374 EXPECT_TRUE(cachedImage->getImage()->isBitmapImage());
375 } 375 }
376 376
377 TEST(ImageResourceTest, ReloadIfLoFi) { 377 TEST(ImageResourceTest, ReloadIfLoFi) {
378 KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); 378 KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html");
379 URLTestHelpers::registerMockedURLLoad(testURL, "cancelTest.html", 379 URLTestHelpers::registerMockedURLLoad(testURL, "cancelTest.html",
380 "text/html"); 380 "text/html");
381 ResourceRequest request = ResourceRequest(testURL); 381 ResourceRequest request = ResourceRequest(testURL);
382 request.setLoFiState(WebURLRequest::LoFiOn); 382 request.setLoFiState(WebURLRequest::LoFiOn);
(...skipping 11 matching lines...) Expand all
394 String()); 394 String());
395 resourceResponse.addHTTPHeaderField("chrome-proxy", "q=low"); 395 resourceResponse.addHTTPHeaderField("chrome-proxy", "q=low");
396 396
397 cachedImage->responseReceived(resourceResponse, nullptr); 397 cachedImage->responseReceived(resourceResponse, nullptr);
398 cachedImage->appendData(reinterpret_cast<const char*>(jpeg.data()), 398 cachedImage->appendData(reinterpret_cast<const char*>(jpeg.data()),
399 jpeg.size()); 399 jpeg.size());
400 cachedImage->finish(); 400 cachedImage->finish();
401 EXPECT_FALSE(cachedImage->errorOccurred()); 401 EXPECT_FALSE(cachedImage->errorOccurred());
402 ASSERT_TRUE(cachedImage->hasImage()); 402 ASSERT_TRUE(cachedImage->hasImage());
403 EXPECT_FALSE(cachedImage->getImage()->isNull()); 403 EXPECT_FALSE(cachedImage->getImage()->isNull());
404 EXPECT_EQ(2, client->imageChangedCount()); 404 EXPECT_EQ(1, client->imageChangedCount());
405 EXPECT_TRUE(client->notifyFinishedCalled()); 405 EXPECT_TRUE(client->notifyFinishedCalled());
406 EXPECT_TRUE(cachedImage->getImage()->isBitmapImage()); 406 EXPECT_TRUE(cachedImage->getImage()->isBitmapImage());
407 EXPECT_EQ(1, cachedImage->getImage()->width()); 407 EXPECT_EQ(1, cachedImage->getImage()->width());
408 EXPECT_EQ(1, cachedImage->getImage()->height()); 408 EXPECT_EQ(1, cachedImage->getImage()->height());
409 409
410 cachedImage->reloadIfLoFi(fetcher); 410 cachedImage->reloadIfLoFi(fetcher);
411 EXPECT_FALSE(cachedImage->errorOccurred()); 411 EXPECT_FALSE(cachedImage->errorOccurred());
412 EXPECT_FALSE(cachedImage->resourceBuffer()); 412 EXPECT_FALSE(cachedImage->resourceBuffer());
413 EXPECT_FALSE(cachedImage->hasImage()); 413 EXPECT_FALSE(cachedImage->hasImage());
414 EXPECT_EQ(3, client->imageChangedCount()); 414 EXPECT_EQ(2, client->imageChangedCount());
415 415
416 Vector<unsigned char> jpeg2 = jpegImage2(); 416 Vector<unsigned char> jpeg2 = jpegImage2();
417 cachedImage->loader()->didReceiveResponse( 417 cachedImage->loader()->didReceiveResponse(
418 nullptr, WrappedResourceResponse(resourceResponse), nullptr); 418 nullptr, WrappedResourceResponse(resourceResponse), nullptr);
419 cachedImage->loader()->didReceiveData( 419 cachedImage->loader()->didReceiveData(
420 nullptr, reinterpret_cast<const char*>(jpeg2.data()), jpeg2.size(), 420 nullptr, reinterpret_cast<const char*>(jpeg2.data()), jpeg2.size(),
421 jpeg2.size(), jpeg2.size()); 421 jpeg2.size(), jpeg2.size());
422 cachedImage->loader()->didFinishLoading(nullptr, 0.0, jpeg2.size()); 422 cachedImage->loader()->didFinishLoading(nullptr, 0.0, jpeg2.size());
423 EXPECT_FALSE(cachedImage->errorOccurred()); 423 EXPECT_FALSE(cachedImage->errorOccurred());
424 ASSERT_TRUE(cachedImage->hasImage()); 424 ASSERT_TRUE(cachedImage->hasImage());
(...skipping 24 matching lines...) Expand all
449 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo"); 449 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo");
450 ImageResource* imageResource = ImageResource::create(ResourceRequest(url)); 450 ImageResource* imageResource = ImageResource::create(ResourceRequest(url));
451 Persistent<MockImageResourceClient> client = 451 Persistent<MockImageResourceClient> client =
452 new MockImageResourceClient(imageResource); 452 new MockImageResourceClient(imageResource);
453 453
454 receiveResponse(imageResource, url, "image/jpeg", jpegImage()); 454 receiveResponse(imageResource, url, "image/jpeg", jpegImage());
455 455
456 EXPECT_FALSE(imageResource->errorOccurred()); 456 EXPECT_FALSE(imageResource->errorOccurred());
457 ASSERT_TRUE(imageResource->hasImage()); 457 ASSERT_TRUE(imageResource->hasImage());
458 EXPECT_FALSE(imageResource->getImage()->isNull()); 458 EXPECT_FALSE(imageResource->getImage()->isNull());
459 EXPECT_EQ(2, client->imageChangedCount()); 459 EXPECT_EQ(1, client->imageChangedCount());
460 EXPECT_TRUE(client->notifyFinishedCalled()); 460 EXPECT_TRUE(client->notifyFinishedCalled());
461 EXPECT_TRUE(imageResource->getImage()->isBitmapImage()); 461 EXPECT_TRUE(imageResource->getImage()->isBitmapImage());
462 EXPECT_EQ(1, imageResource->getImage()->width()); 462 EXPECT_EQ(1, imageResource->getImage()->width());
463 EXPECT_EQ(1, imageResource->getImage()->height()); 463 EXPECT_EQ(1, imageResource->getImage()->height());
464 464
465 imageResource->setRevalidatingRequest(ResourceRequest(url)); 465 imageResource->setRevalidatingRequest(ResourceRequest(url));
466 ResourceResponse response; 466 ResourceResponse response;
467 response.setURL(url); 467 response.setURL(url);
468 response.setHTTPStatusCode(304); 468 response.setHTTPStatusCode(304);
469 469
470 imageResource->responseReceived(response, nullptr); 470 imageResource->responseReceived(response, nullptr);
471 471
472 EXPECT_FALSE(imageResource->errorOccurred()); 472 EXPECT_FALSE(imageResource->errorOccurred());
473 ASSERT_TRUE(imageResource->hasImage()); 473 ASSERT_TRUE(imageResource->hasImage());
474 EXPECT_FALSE(imageResource->getImage()->isNull()); 474 EXPECT_FALSE(imageResource->getImage()->isNull());
475 EXPECT_EQ(2, client->imageChangedCount()); 475 EXPECT_EQ(1, client->imageChangedCount());
476 EXPECT_TRUE(client->notifyFinishedCalled()); 476 EXPECT_TRUE(client->notifyFinishedCalled());
477 EXPECT_TRUE(imageResource->getImage()->isBitmapImage()); 477 EXPECT_TRUE(imageResource->getImage()->isBitmapImage());
478 EXPECT_EQ(1, imageResource->getImage()->width()); 478 EXPECT_EQ(1, imageResource->getImage()->width());
479 EXPECT_EQ(1, imageResource->getImage()->height()); 479 EXPECT_EQ(1, imageResource->getImage()->height());
480 } 480 }
481 481
482 TEST(ImageResourceTest, SuccessfulRevalidationSvg) { 482 TEST(ImageResourceTest, SuccessfulRevalidationSvg) {
483 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo"); 483 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo");
484 ImageResource* imageResource = ImageResource::create(ResourceRequest(url)); 484 ImageResource* imageResource = ImageResource::create(ResourceRequest(url));
485 Persistent<MockImageResourceClient> client = 485 Persistent<MockImageResourceClient> client =
(...skipping 30 matching lines...) Expand all
516 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo"); 516 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo");
517 ImageResource* imageResource = ImageResource::create(ResourceRequest(url)); 517 ImageResource* imageResource = ImageResource::create(ResourceRequest(url));
518 Persistent<MockImageResourceClient> client = 518 Persistent<MockImageResourceClient> client =
519 new MockImageResourceClient(imageResource); 519 new MockImageResourceClient(imageResource);
520 520
521 receiveResponse(imageResource, url, "image/jpeg", jpegImage()); 521 receiveResponse(imageResource, url, "image/jpeg", jpegImage());
522 522
523 EXPECT_FALSE(imageResource->errorOccurred()); 523 EXPECT_FALSE(imageResource->errorOccurred());
524 ASSERT_TRUE(imageResource->hasImage()); 524 ASSERT_TRUE(imageResource->hasImage());
525 EXPECT_FALSE(imageResource->getImage()->isNull()); 525 EXPECT_FALSE(imageResource->getImage()->isNull());
526 EXPECT_EQ(2, client->imageChangedCount()); 526 EXPECT_EQ(1, client->imageChangedCount());
527 EXPECT_TRUE(client->notifyFinishedCalled()); 527 EXPECT_TRUE(client->notifyFinishedCalled());
528 EXPECT_TRUE(imageResource->getImage()->isBitmapImage()); 528 EXPECT_TRUE(imageResource->getImage()->isBitmapImage());
529 EXPECT_EQ(1, imageResource->getImage()->width()); 529 EXPECT_EQ(1, imageResource->getImage()->width());
530 EXPECT_EQ(1, imageResource->getImage()->height()); 530 EXPECT_EQ(1, imageResource->getImage()->height());
531 531
532 imageResource->setRevalidatingRequest(ResourceRequest(url)); 532 imageResource->setRevalidatingRequest(ResourceRequest(url));
533 receiveResponse(imageResource, url, "image/jpeg", jpegImage2()); 533 receiveResponse(imageResource, url, "image/jpeg", jpegImage2());
534 534
535 EXPECT_FALSE(imageResource->errorOccurred()); 535 EXPECT_FALSE(imageResource->errorOccurred());
536 ASSERT_TRUE(imageResource->hasImage()); 536 ASSERT_TRUE(imageResource->hasImage());
537 EXPECT_FALSE(imageResource->getImage()->isNull()); 537 EXPECT_FALSE(imageResource->getImage()->isNull());
538 EXPECT_EQ(4, client->imageChangedCount()); 538 EXPECT_EQ(2, client->imageChangedCount());
539 EXPECT_TRUE(client->notifyFinishedCalled()); 539 EXPECT_TRUE(client->notifyFinishedCalled());
540 EXPECT_TRUE(imageResource->getImage()->isBitmapImage()); 540 EXPECT_TRUE(imageResource->getImage()->isBitmapImage());
541 EXPECT_EQ(50, imageResource->getImage()->width()); 541 EXPECT_EQ(50, imageResource->getImage()->width());
542 EXPECT_EQ(50, imageResource->getImage()->height()); 542 EXPECT_EQ(50, imageResource->getImage()->height());
543 } 543 }
544 544
545 TEST(ImageResourceTest, FailedRevalidationJpegToSvg) { 545 TEST(ImageResourceTest, FailedRevalidationJpegToSvg) {
546 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo"); 546 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo");
547 ImageResource* imageResource = ImageResource::create(ResourceRequest(url)); 547 ImageResource* imageResource = ImageResource::create(ResourceRequest(url));
548 Persistent<MockImageResourceClient> client = 548 Persistent<MockImageResourceClient> client =
549 new MockImageResourceClient(imageResource); 549 new MockImageResourceClient(imageResource);
550 550
551 receiveResponse(imageResource, url, "image/jpeg", jpegImage()); 551 receiveResponse(imageResource, url, "image/jpeg", jpegImage());
552 552
553 EXPECT_FALSE(imageResource->errorOccurred()); 553 EXPECT_FALSE(imageResource->errorOccurred());
554 ASSERT_TRUE(imageResource->hasImage()); 554 ASSERT_TRUE(imageResource->hasImage());
555 EXPECT_FALSE(imageResource->getImage()->isNull()); 555 EXPECT_FALSE(imageResource->getImage()->isNull());
556 EXPECT_EQ(2, client->imageChangedCount()); 556 EXPECT_EQ(1, client->imageChangedCount());
557 EXPECT_TRUE(client->notifyFinishedCalled()); 557 EXPECT_TRUE(client->notifyFinishedCalled());
558 EXPECT_TRUE(imageResource->getImage()->isBitmapImage()); 558 EXPECT_TRUE(imageResource->getImage()->isBitmapImage());
559 EXPECT_EQ(1, imageResource->getImage()->width()); 559 EXPECT_EQ(1, imageResource->getImage()->width());
560 EXPECT_EQ(1, imageResource->getImage()->height()); 560 EXPECT_EQ(1, imageResource->getImage()->height());
561 561
562 imageResource->setRevalidatingRequest(ResourceRequest(url)); 562 imageResource->setRevalidatingRequest(ResourceRequest(url));
563 receiveResponse(imageResource, url, "image/svg+xml", svgImage()); 563 receiveResponse(imageResource, url, "image/svg+xml", svgImage());
564 564
565 EXPECT_FALSE(imageResource->errorOccurred()); 565 EXPECT_FALSE(imageResource->errorOccurred());
566 ASSERT_TRUE(imageResource->hasImage()); 566 ASSERT_TRUE(imageResource->hasImage());
567 EXPECT_FALSE(imageResource->getImage()->isNull()); 567 EXPECT_FALSE(imageResource->getImage()->isNull());
568 EXPECT_EQ(3, client->imageChangedCount()); 568 EXPECT_EQ(2, client->imageChangedCount());
569 EXPECT_TRUE(client->notifyFinishedCalled()); 569 EXPECT_TRUE(client->notifyFinishedCalled());
570 EXPECT_FALSE(imageResource->getImage()->isBitmapImage()); 570 EXPECT_FALSE(imageResource->getImage()->isBitmapImage());
571 EXPECT_EQ(200, imageResource->getImage()->width()); 571 EXPECT_EQ(200, imageResource->getImage()->width());
572 EXPECT_EQ(200, imageResource->getImage()->height()); 572 EXPECT_EQ(200, imageResource->getImage()->height());
573 } 573 }
574 574
575 TEST(ImageResourceTest, FailedRevalidationSvgToJpeg) { 575 TEST(ImageResourceTest, FailedRevalidationSvgToJpeg) {
576 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo"); 576 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo");
577 ImageResource* imageResource = ImageResource::create(ResourceRequest(url)); 577 ImageResource* imageResource = ImageResource::create(ResourceRequest(url));
578 Persistent<MockImageResourceClient> client = 578 Persistent<MockImageResourceClient> client =
579 new MockImageResourceClient(imageResource); 579 new MockImageResourceClient(imageResource);
580 580
581 receiveResponse(imageResource, url, "image/svg+xml", svgImage()); 581 receiveResponse(imageResource, url, "image/svg+xml", svgImage());
582 582
583 EXPECT_FALSE(imageResource->errorOccurred()); 583 EXPECT_FALSE(imageResource->errorOccurred());
584 ASSERT_TRUE(imageResource->hasImage()); 584 ASSERT_TRUE(imageResource->hasImage());
585 EXPECT_FALSE(imageResource->getImage()->isNull()); 585 EXPECT_FALSE(imageResource->getImage()->isNull());
586 EXPECT_EQ(1, client->imageChangedCount()); 586 EXPECT_EQ(1, client->imageChangedCount());
587 EXPECT_TRUE(client->notifyFinishedCalled()); 587 EXPECT_TRUE(client->notifyFinishedCalled());
588 EXPECT_FALSE(imageResource->getImage()->isBitmapImage()); 588 EXPECT_FALSE(imageResource->getImage()->isBitmapImage());
589 EXPECT_EQ(200, imageResource->getImage()->width()); 589 EXPECT_EQ(200, imageResource->getImage()->width());
590 EXPECT_EQ(200, imageResource->getImage()->height()); 590 EXPECT_EQ(200, imageResource->getImage()->height());
591 591
592 imageResource->setRevalidatingRequest(ResourceRequest(url)); 592 imageResource->setRevalidatingRequest(ResourceRequest(url));
593 receiveResponse(imageResource, url, "image/jpeg", jpegImage()); 593 receiveResponse(imageResource, url, "image/jpeg", jpegImage());
594 594
595 EXPECT_FALSE(imageResource->errorOccurred()); 595 EXPECT_FALSE(imageResource->errorOccurred());
596 ASSERT_TRUE(imageResource->hasImage()); 596 ASSERT_TRUE(imageResource->hasImage());
597 EXPECT_FALSE(imageResource->getImage()->isNull()); 597 EXPECT_FALSE(imageResource->getImage()->isNull());
598 EXPECT_EQ(3, client->imageChangedCount()); 598 EXPECT_EQ(2, client->imageChangedCount());
599 EXPECT_TRUE(client->notifyFinishedCalled()); 599 EXPECT_TRUE(client->notifyFinishedCalled());
600 EXPECT_TRUE(imageResource->getImage()->isBitmapImage()); 600 EXPECT_TRUE(imageResource->getImage()->isBitmapImage());
601 EXPECT_EQ(1, imageResource->getImage()->width()); 601 EXPECT_EQ(1, imageResource->getImage()->width());
602 EXPECT_EQ(1, imageResource->getImage()->height()); 602 EXPECT_EQ(1, imageResource->getImage()->height());
603 } 603 }
604 604
605 TEST(ImageResourceTest, FailedRevalidationSvgToSvg) { 605 TEST(ImageResourceTest, FailedRevalidationSvgToSvg) {
606 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo"); 606 KURL url(ParsedURLString, "http://127.0.0.1:8000/foo");
607 ImageResource* imageResource = ImageResource::create(ResourceRequest(url)); 607 ImageResource* imageResource = ImageResource::create(ResourceRequest(url));
608 Persistent<MockImageResourceClient> client = 608 Persistent<MockImageResourceClient> client =
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 FetchRequest request(testURL, FetchInitiatorInfo()); 680 FetchRequest request(testURL, FetchInitiatorInfo());
681 ImageResource* cachedImage = ImageResource::fetch(request, fetcher); 681 ImageResource* cachedImage = ImageResource::fetch(request, fetcher);
682 Platform::current()->getURLLoaderMockFactory()->unregisterURL(testURL); 682 Platform::current()->getURLLoaderMockFactory()->unregisterURL(testURL);
683 683
684 cachedImage->loader()->didReceiveResponse( 684 cachedImage->loader()->didReceiveResponse(
685 nullptr, WrappedResourceResponse(ResourceResponse( 685 nullptr, WrappedResourceResponse(ResourceResponse(
686 testURL, "image/jpeg", 18, nullAtom, String())), 686 testURL, "image/jpeg", 18, nullAtom, String())),
687 nullptr); 687 nullptr);
688 cachedImage->loader()->didReceiveData(nullptr, "notactuallyanimage", 18, 18, 688 cachedImage->loader()->didReceiveData(nullptr, "notactuallyanimage", 18, 18,
689 18); 689 18);
690 cachedImage->finish();
pdr. 2016/10/05 23:24:25 Why is this needed?
vmpstr 2016/10/05 23:48:17 Without this, we don't try to decode the image, so
690 EXPECT_EQ(Resource::DecodeError, cachedImage->getStatus()); 691 EXPECT_EQ(Resource::DecodeError, cachedImage->getStatus());
691 EXPECT_FALSE(cachedImage->isLoading()); 692 EXPECT_FALSE(cachedImage->isLoading());
692 } 693 }
693 694
695 namespace {
696 struct MockTime {
697 static double getTime() { return time; }
698 static double time;
699 };
700
701 double MockTime::time = 10.;
702 } // namespace
703
704 TEST(ImageResourceTest, PeriodicFlushTest) {
705 KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html");
706 URLTestHelpers::registerMockedURLLoad(testURL, "cancelTest.html",
707 "text/html");
708 ResourceRequest request = ResourceRequest(testURL);
709 request.setLoFiState(WebURLRequest::LoFiOn);
pdr. 2016/10/05 23:24:26 Is this needed?
vmpstr 2016/10/05 23:48:17 Nope :)
710 ImageResource* cachedImage = ImageResource::create(request);
711 cachedImage->setStatus(Resource::Pending);
712
713 Persistent<MockImageResourceClient> client =
714 new MockImageResourceClient(cachedImage);
715
716 // Send the image response.
717 Vector<unsigned char> jpeg = jpegImage2();
718 ResourceResponse resourceResponse(KURL(), "image/jpeg", jpeg.size(), nullAtom,
719 String());
720 resourceResponse.addHTTPHeaderField("chrome-proxy", "q=low");
721
722 cachedImage->responseReceived(resourceResponse, nullptr);
723
724 WTF::setTimeFunctionsForTesting(MockTime::getTime);
725
726 size_t meaningfulImageSize = 280;
pdr. 2016/10/05 23:24:26 Can you add a comment about where this number came
vmpstr 2016/10/05 23:48:17 Done.
727 cachedImage->appendData(reinterpret_cast<const char*>(jpeg.data()),
728 meaningfulImageSize);
729 size_t bytesSent = meaningfulImageSize;
730
731 EXPECT_FALSE(cachedImage->errorOccurred());
732 EXPECT_FALSE(cachedImage->hasImage());
733 EXPECT_EQ(0, client->imageChangedCount());
734
735 MockTime::time += 1.1;
736 cachedImage->appendData(
737 reinterpret_cast<const char*>(jpeg.data()) + bytesSent, 1);
738 ++bytesSent;
739
740 // Sanity check that we created an image after appending
741 // |meaningfulImageSize| + 1 bytes.
742 EXPECT_FALSE(cachedImage->errorOccurred());
743 ASSERT_TRUE(cachedImage->hasImage());
744 EXPECT_EQ(1, client->imageChangedCount());
745
746 for (int flushCount = 1; flushCount <= 3; ++flushCount) {
747 // For each of the iteration that appends data, we don't expect
748 // |imageChangeCount()| to change, since the time is adjusted by 0.2001
749 // seconds (it's greater than 0.2 to avoid double precision problems).
750 // After 5 appends, we breach the flush interval and the flush count
751 // increases.
752 for (int i = 0; i < 5; ++i) {
753 cachedImage->appendData(
754 reinterpret_cast<const char*>(jpeg.data()) + bytesSent, 1);
755
756 EXPECT_FALSE(cachedImage->errorOccurred());
757 ASSERT_TRUE(cachedImage->hasImage());
758 EXPECT_EQ(flushCount, client->imageChangedCount());
759
760 ++bytesSent;
761 MockTime::time += 0.2001;
pdr. 2016/10/05 23:24:26 If this ends up being flaky, we could just increme
vmpstr 2016/10/05 23:48:17 I don't think it's flaky, it's just if I start wit
762 }
763 }
764
765 // Increasing time by a large number only causes one extra flush.
766 MockTime::time += 10.f;
767 cachedImage->appendData(
768 reinterpret_cast<const char*>(jpeg.data()) + bytesSent, 1);
769 EXPECT_FALSE(cachedImage->errorOccurred());
770 ASSERT_TRUE(cachedImage->hasImage());
771 EXPECT_FALSE(cachedImage->getImage()->isNull());
772 EXPECT_EQ(4, client->imageChangedCount());
773
774 ++bytesSent;
775 // Append the rest of the data and finish (which causes another flush).
776 cachedImage->appendData(
777 reinterpret_cast<const char*>(jpeg.data()) + bytesSent,
778 jpeg.size() - bytesSent);
779 cachedImage->finish();
780
781 EXPECT_FALSE(cachedImage->errorOccurred());
782 ASSERT_TRUE(cachedImage->hasImage());
783 EXPECT_FALSE(cachedImage->getImage()->isNull());
784 EXPECT_EQ(5, client->imageChangedCount());
785 EXPECT_TRUE(client->notifyFinishedCalled());
786 EXPECT_TRUE(cachedImage->getImage()->isBitmapImage());
787 EXPECT_EQ(50, cachedImage->getImage()->width());
788 EXPECT_EQ(50, cachedImage->getImage()->height());
789 }
790
694 } // namespace blink 791 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/fetch/ImageResource.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698