Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |