| 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 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 fetcher->startLoad(imageResource); | 238 fetcher->startLoad(imageResource); |
| 239 | 239 |
| 240 std::unique_ptr<MockImageResourceObserver> observer = | 240 std::unique_ptr<MockImageResourceObserver> observer = |
| 241 MockImageResourceObserver::create(imageResource->getContent()); | 241 MockImageResourceObserver::create(imageResource->getContent()); |
| 242 EXPECT_EQ(ResourceStatus::Pending, imageResource->getStatus()); | 242 EXPECT_EQ(ResourceStatus::Pending, imageResource->getStatus()); |
| 243 | 243 |
| 244 // Send the multipart response. No image or data buffer is created. Note that | 244 // Send the multipart response. No image or data buffer is created. Note that |
| 245 // the response must be routed through ResourceLoader to ensure the load is | 245 // the response must be routed through ResourceLoader to ensure the load is |
| 246 // flagged as multipart. | 246 // flagged as multipart. |
| 247 ResourceResponse multipartResponse(KURL(), "multipart/x-mixed-replace", 0, | 247 ResourceResponse multipartResponse(KURL(), "multipart/x-mixed-replace", 0, |
| 248 nullAtom, String()); | 248 nullAtom); |
| 249 multipartResponse.setMultipartBoundary("boundary", strlen("boundary")); | 249 multipartResponse.setMultipartBoundary("boundary", strlen("boundary")); |
| 250 imageResource->loader()->didReceiveResponse( | 250 imageResource->loader()->didReceiveResponse( |
| 251 WrappedResourceResponse(multipartResponse), nullptr); | 251 WrappedResourceResponse(multipartResponse), nullptr); |
| 252 EXPECT_FALSE(imageResource->resourceBuffer()); | 252 EXPECT_FALSE(imageResource->resourceBuffer()); |
| 253 EXPECT_FALSE(imageResource->getContent()->hasImage()); | 253 EXPECT_FALSE(imageResource->getContent()->hasImage()); |
| 254 EXPECT_EQ(0, observer->imageChangedCount()); | 254 EXPECT_EQ(0, observer->imageChangedCount()); |
| 255 EXPECT_FALSE(observer->imageNotifyFinishedCalled()); | 255 EXPECT_FALSE(observer->imageNotifyFinishedCalled()); |
| 256 EXPECT_EQ("multipart/x-mixed-replace", imageResource->response().mimeType()); | 256 EXPECT_EQ("multipart/x-mixed-replace", imageResource->response().mimeType()); |
| 257 | 257 |
| 258 const char firstPart[] = | 258 const char firstPart[] = |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 | 339 |
| 340 TEST(ImageResourceTest, DecodedDataRemainsWhileHasClients) { | 340 TEST(ImageResourceTest, DecodedDataRemainsWhileHasClients) { |
| 341 ImageResource* imageResource = ImageResource::create(ResourceRequest()); | 341 ImageResource* imageResource = ImageResource::create(ResourceRequest()); |
| 342 imageResource->setStatus(ResourceStatus::Pending); | 342 imageResource->setStatus(ResourceStatus::Pending); |
| 343 | 343 |
| 344 std::unique_ptr<MockImageResourceObserver> observer = | 344 std::unique_ptr<MockImageResourceObserver> observer = |
| 345 MockImageResourceObserver::create(imageResource->getContent()); | 345 MockImageResourceObserver::create(imageResource->getContent()); |
| 346 | 346 |
| 347 // Send the image response. | 347 // Send the image response. |
| 348 imageResource->responseReceived( | 348 imageResource->responseReceived( |
| 349 ResourceResponse(KURL(), "multipart/x-mixed-replace", 0, nullAtom, | 349 ResourceResponse(KURL(), "multipart/x-mixed-replace", 0, nullAtom), |
| 350 String()), | |
| 351 nullptr); | 350 nullptr); |
| 352 | 351 |
| 353 imageResource->responseReceived( | 352 imageResource->responseReceived( |
| 354 ResourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage), nullAtom, | 353 ResourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage), nullAtom), |
| 355 String()), | |
| 356 nullptr); | 354 nullptr); |
| 357 imageResource->appendData(reinterpret_cast<const char*>(kJpegImage), | 355 imageResource->appendData(reinterpret_cast<const char*>(kJpegImage), |
| 358 sizeof(kJpegImage)); | 356 sizeof(kJpegImage)); |
| 359 EXPECT_NE(0u, imageResource->encodedSizeMemoryUsageForTesting()); | 357 EXPECT_NE(0u, imageResource->encodedSizeMemoryUsageForTesting()); |
| 360 imageResource->finish(); | 358 imageResource->finish(); |
| 361 EXPECT_EQ(0u, imageResource->encodedSizeMemoryUsageForTesting()); | 359 EXPECT_EQ(0u, imageResource->encodedSizeMemoryUsageForTesting()); |
| 362 EXPECT_FALSE(imageResource->errorOccurred()); | 360 EXPECT_FALSE(imageResource->errorOccurred()); |
| 363 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 361 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 364 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); | 362 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); |
| 365 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 363 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 383 | 381 |
| 384 TEST(ImageResourceTest, UpdateBitmapImages) { | 382 TEST(ImageResourceTest, UpdateBitmapImages) { |
| 385 ImageResource* imageResource = ImageResource::create(ResourceRequest()); | 383 ImageResource* imageResource = ImageResource::create(ResourceRequest()); |
| 386 imageResource->setStatus(ResourceStatus::Pending); | 384 imageResource->setStatus(ResourceStatus::Pending); |
| 387 | 385 |
| 388 std::unique_ptr<MockImageResourceObserver> observer = | 386 std::unique_ptr<MockImageResourceObserver> observer = |
| 389 MockImageResourceObserver::create(imageResource->getContent()); | 387 MockImageResourceObserver::create(imageResource->getContent()); |
| 390 | 388 |
| 391 // Send the image response. | 389 // Send the image response. |
| 392 imageResource->responseReceived( | 390 imageResource->responseReceived( |
| 393 ResourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage), nullAtom, | 391 ResourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage), nullAtom), |
| 394 String()), | |
| 395 nullptr); | 392 nullptr); |
| 396 imageResource->appendData(reinterpret_cast<const char*>(kJpegImage), | 393 imageResource->appendData(reinterpret_cast<const char*>(kJpegImage), |
| 397 sizeof(kJpegImage)); | 394 sizeof(kJpegImage)); |
| 398 imageResource->finish(); | 395 imageResource->finish(); |
| 399 EXPECT_FALSE(imageResource->errorOccurred()); | 396 EXPECT_FALSE(imageResource->errorOccurred()); |
| 400 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 397 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 401 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); | 398 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); |
| 402 EXPECT_EQ(2, observer->imageChangedCount()); | 399 EXPECT_EQ(2, observer->imageChangedCount()); |
| 403 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 400 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 404 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); | 401 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 405 } | 402 } |
| 406 | 403 |
| 407 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderAfterFinished) { | 404 TEST(ImageResourceTest, ReloadIfLoFiOrPlaceholderAfterFinished) { |
| 408 KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); | 405 KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); |
| 409 ScopedRegisteredURL scopedRegisteredURL(testURL); | 406 ScopedRegisteredURL scopedRegisteredURL(testURL); |
| 410 ResourceRequest request = ResourceRequest(testURL); | 407 ResourceRequest request = ResourceRequest(testURL); |
| 411 request.setPreviewsState(WebURLRequest::ServerLoFiOn); | 408 request.setPreviewsState(WebURLRequest::ServerLoFiOn); |
| 412 ImageResource* imageResource = ImageResource::create(request); | 409 ImageResource* imageResource = ImageResource::create(request); |
| 413 imageResource->setStatus(ResourceStatus::Pending); | 410 imageResource->setStatus(ResourceStatus::Pending); |
| 414 | 411 |
| 415 std::unique_ptr<MockImageResourceObserver> observer = | 412 std::unique_ptr<MockImageResourceObserver> observer = |
| 416 MockImageResourceObserver::create(imageResource->getContent()); | 413 MockImageResourceObserver::create(imageResource->getContent()); |
| 417 ResourceFetcher* fetcher = | 414 ResourceFetcher* fetcher = |
| 418 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); | 415 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); |
| 419 | 416 |
| 420 // Send the image response. | 417 // Send the image response. |
| 421 ResourceResponse resourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage), | 418 ResourceResponse resourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage), |
| 422 nullAtom, String()); | 419 nullAtom); |
| 423 resourceResponse.addHTTPHeaderField("chrome-proxy-content-transform", | 420 resourceResponse.addHTTPHeaderField("chrome-proxy-content-transform", |
| 424 "empty-image"); | 421 "empty-image"); |
| 425 | 422 |
| 426 imageResource->responseReceived(resourceResponse, nullptr); | 423 imageResource->responseReceived(resourceResponse, nullptr); |
| 427 imageResource->appendData(reinterpret_cast<const char*>(kJpegImage), | 424 imageResource->appendData(reinterpret_cast<const char*>(kJpegImage), |
| 428 sizeof(kJpegImage)); | 425 sizeof(kJpegImage)); |
| 429 imageResource->finish(); | 426 imageResource->finish(); |
| 430 EXPECT_FALSE(imageResource->errorOccurred()); | 427 EXPECT_FALSE(imageResource->errorOccurred()); |
| 431 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 428 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 432 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); | 429 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 request.setPreviewsState(WebURLRequest::ServerLoFiOn); | 473 request.setPreviewsState(WebURLRequest::ServerLoFiOn); |
| 477 FetchRequest fetchRequest(request, FetchInitiatorInfo()); | 474 FetchRequest fetchRequest(request, FetchInitiatorInfo()); |
| 478 ResourceFetcher* fetcher = | 475 ResourceFetcher* fetcher = |
| 479 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); | 476 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); |
| 480 | 477 |
| 481 ImageResource* imageResource = ImageResource::fetch(fetchRequest, fetcher); | 478 ImageResource* imageResource = ImageResource::fetch(fetchRequest, fetcher); |
| 482 std::unique_ptr<MockImageResourceObserver> observer = | 479 std::unique_ptr<MockImageResourceObserver> observer = |
| 483 MockImageResourceObserver::create(imageResource->getContent()); | 480 MockImageResourceObserver::create(imageResource->getContent()); |
| 484 | 481 |
| 485 // Send the image response. | 482 // Send the image response. |
| 486 ResourceResponse initialResourceResponse( | 483 ResourceResponse initialResourceResponse(testURL, "image/jpeg", |
| 487 testURL, "image/jpeg", sizeof(kJpegImage), nullAtom, String()); | 484 sizeof(kJpegImage), nullAtom); |
| 488 initialResourceResponse.addHTTPHeaderField("chrome-proxy", "q=low"); | 485 initialResourceResponse.addHTTPHeaderField("chrome-proxy", "q=low"); |
| 489 | 486 |
| 490 imageResource->loader()->didReceiveResponse( | 487 imageResource->loader()->didReceiveResponse( |
| 491 WrappedResourceResponse(initialResourceResponse)); | 488 WrappedResourceResponse(initialResourceResponse)); |
| 492 imageResource->loader()->didReceiveData( | 489 imageResource->loader()->didReceiveData( |
| 493 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); | 490 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 494 | 491 |
| 495 EXPECT_FALSE(imageResource->errorOccurred()); | 492 EXPECT_FALSE(imageResource->errorOccurred()); |
| 496 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 493 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 497 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); | 494 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 509 EXPECT_FALSE(imageResource->resourceBuffer()); | 506 EXPECT_FALSE(imageResource->resourceBuffer()); |
| 510 EXPECT_FALSE(imageResource->getContent()->hasImage()); | 507 EXPECT_FALSE(imageResource->getContent()->hasImage()); |
| 511 EXPECT_EQ(2, observer->imageChangedCount()); | 508 EXPECT_EQ(2, observer->imageChangedCount()); |
| 512 EXPECT_EQ(0, observer->imageWidthOnLastImageChanged()); | 509 EXPECT_EQ(0, observer->imageWidthOnLastImageChanged()); |
| 513 // The observer should not have been notified of completion yet, since the | 510 // The observer should not have been notified of completion yet, since the |
| 514 // image | 511 // image |
| 515 // is still loading. | 512 // is still loading. |
| 516 EXPECT_FALSE(observer->imageNotifyFinishedCalled()); | 513 EXPECT_FALSE(observer->imageNotifyFinishedCalled()); |
| 517 | 514 |
| 518 imageResource->loader()->didReceiveResponse( | 515 imageResource->loader()->didReceiveResponse( |
| 519 WrappedResourceResponse(ResourceResponse( | 516 WrappedResourceResponse(ResourceResponse(testURL, "image/jpeg", |
| 520 testURL, "image/jpeg", sizeof(kJpegImage2), nullAtom, String())), | 517 sizeof(kJpegImage2), nullAtom)), |
| 521 nullptr); | 518 nullptr); |
| 522 imageResource->loader()->didReceiveData( | 519 imageResource->loader()->didReceiveData( |
| 523 reinterpret_cast<const char*>(kJpegImage2), sizeof(kJpegImage2)); | 520 reinterpret_cast<const char*>(kJpegImage2), sizeof(kJpegImage2)); |
| 524 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage2), | 521 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage2), |
| 525 sizeof(kJpegImage2)); | 522 sizeof(kJpegImage2)); |
| 526 | 523 |
| 527 EXPECT_FALSE(imageResource->errorOccurred()); | 524 EXPECT_FALSE(imageResource->errorOccurred()); |
| 528 ASSERT_TRUE(imageResource->getContent()->hasImage()); | 525 ASSERT_TRUE(imageResource->getContent()->hasImage()); |
| 529 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); | 526 EXPECT_FALSE(imageResource->getContent()->getImage()->isNull()); |
| 530 EXPECT_EQ(kJpegImage2Width, observer->imageWidthOnLastImageChanged()); | 527 EXPECT_EQ(kJpegImage2Width, observer->imageWidthOnLastImageChanged()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 547 request.setAllowImagePlaceholder(); | 544 request.setAllowImagePlaceholder(); |
| 548 ImageResource* imageResource = ImageResource::fetch(request, fetcher); | 545 ImageResource* imageResource = ImageResource::fetch(request, fetcher); |
| 549 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 546 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 550 request.placeholderImageRequestType()); | 547 request.placeholderImageRequestType()); |
| 551 EXPECT_EQ("bytes=0-2047", | 548 EXPECT_EQ("bytes=0-2047", |
| 552 imageResource->resourceRequest().httpHeaderField("range")); | 549 imageResource->resourceRequest().httpHeaderField("range")); |
| 553 std::unique_ptr<MockImageResourceObserver> observer = | 550 std::unique_ptr<MockImageResourceObserver> observer = |
| 554 MockImageResourceObserver::create(imageResource->getContent()); | 551 MockImageResourceObserver::create(imageResource->getContent()); |
| 555 | 552 |
| 556 ResourceResponse response(testURL, "image/jpeg", | 553 ResourceResponse response(testURL, "image/jpeg", |
| 557 kJpegImageSubrangeWithDimensionsLength, nullAtom, | 554 kJpegImageSubrangeWithDimensionsLength, nullAtom); |
| 558 String()); | |
| 559 response.setHTTPStatusCode(206); | 555 response.setHTTPStatusCode(206); |
| 560 response.setHTTPHeaderField( | 556 response.setHTTPHeaderField( |
| 561 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, | 557 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, |
| 562 sizeof(kJpegImage))); | 558 sizeof(kJpegImage))); |
| 563 imageResource->loader()->didReceiveResponse( | 559 imageResource->loader()->didReceiveResponse( |
| 564 WrappedResourceResponse(response)); | 560 WrappedResourceResponse(response)); |
| 565 imageResource->loader()->didReceiveData( | 561 imageResource->loader()->didReceiveData( |
| 566 reinterpret_cast<const char*>(kJpegImage), | 562 reinterpret_cast<const char*>(kJpegImage), |
| 567 kJpegImageSubrangeWithDimensionsLength); | 563 kJpegImageSubrangeWithDimensionsLength); |
| 568 imageResource->loader()->didFinishLoading( | 564 imageResource->loader()->didFinishLoading( |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 851 | 847 |
| 852 ResourceFetcher* fetcher = | 848 ResourceFetcher* fetcher = |
| 853 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); | 849 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); |
| 854 FetchRequest request(testURL, FetchInitiatorInfo()); | 850 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 855 ImageResource* imageResource = ImageResource::fetch(request, fetcher); | 851 ImageResource* imageResource = ImageResource::fetch(request, fetcher); |
| 856 std::unique_ptr<MockImageResourceObserver> observer = | 852 std::unique_ptr<MockImageResourceObserver> observer = |
| 857 MockImageResourceObserver::create(imageResource->getContent()); | 853 MockImageResourceObserver::create(imageResource->getContent()); |
| 858 | 854 |
| 859 imageResource->loader()->didReceiveResponse( | 855 imageResource->loader()->didReceiveResponse( |
| 860 WrappedResourceResponse( | 856 WrappedResourceResponse( |
| 861 ResourceResponse(testURL, "image/jpeg", 18, nullAtom, String())), | 857 ResourceResponse(testURL, "image/jpeg", 18, nullAtom)), |
| 862 nullptr); | 858 nullptr); |
| 863 | 859 |
| 864 EXPECT_EQ(0, observer->imageChangedCount()); | 860 EXPECT_EQ(0, observer->imageChangedCount()); |
| 865 | 861 |
| 866 imageResource->loader()->didReceiveData("notactuallyanimage", 18); | 862 imageResource->loader()->didReceiveData("notactuallyanimage", 18); |
| 867 | 863 |
| 868 EXPECT_EQ(ResourceStatus::DecodeError, imageResource->getStatus()); | 864 EXPECT_EQ(ResourceStatus::DecodeError, imageResource->getStatus()); |
| 869 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 865 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 870 EXPECT_EQ(ResourceStatus::DecodeError, | 866 EXPECT_EQ(ResourceStatus::DecodeError, |
| 871 observer->statusOnImageNotifyFinished()); | 867 observer->statusOnImageNotifyFinished()); |
| 872 EXPECT_EQ(2, observer->imageChangedCount()); | 868 EXPECT_EQ(2, observer->imageChangedCount()); |
| 873 EXPECT_FALSE(imageResource->isLoading()); | 869 EXPECT_FALSE(imageResource->isLoading()); |
| 874 } | 870 } |
| 875 | 871 |
| 876 TEST(ImageResourceTest, DecodeErrorWithEmptyBody) { | 872 TEST(ImageResourceTest, DecodeErrorWithEmptyBody) { |
| 877 KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); | 873 KURL testURL(ParsedURLString, "http://www.test.com/cancelTest.html"); |
| 878 ScopedRegisteredURL scopedRegisteredURL(testURL); | 874 ScopedRegisteredURL scopedRegisteredURL(testURL); |
| 879 | 875 |
| 880 ResourceFetcher* fetcher = | 876 ResourceFetcher* fetcher = |
| 881 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); | 877 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); |
| 882 FetchRequest request(testURL, FetchInitiatorInfo()); | 878 FetchRequest request(testURL, FetchInitiatorInfo()); |
| 883 ImageResource* imageResource = ImageResource::fetch(request, fetcher); | 879 ImageResource* imageResource = ImageResource::fetch(request, fetcher); |
| 884 std::unique_ptr<MockImageResourceObserver> observer = | 880 std::unique_ptr<MockImageResourceObserver> observer = |
| 885 MockImageResourceObserver::create(imageResource->getContent()); | 881 MockImageResourceObserver::create(imageResource->getContent()); |
| 886 | 882 |
| 887 imageResource->loader()->didReceiveResponse( | 883 imageResource->loader()->didReceiveResponse( |
| 888 WrappedResourceResponse( | 884 WrappedResourceResponse( |
| 889 ResourceResponse(testURL, "image/jpeg", 0, nullAtom, String())), | 885 ResourceResponse(testURL, "image/jpeg", 0, nullAtom)), |
| 890 nullptr); | 886 nullptr); |
| 891 | 887 |
| 892 EXPECT_EQ(ResourceStatus::Pending, imageResource->getStatus()); | 888 EXPECT_EQ(ResourceStatus::Pending, imageResource->getStatus()); |
| 893 EXPECT_FALSE(observer->imageNotifyFinishedCalled()); | 889 EXPECT_FALSE(observer->imageNotifyFinishedCalled()); |
| 894 EXPECT_EQ(0, observer->imageChangedCount()); | 890 EXPECT_EQ(0, observer->imageChangedCount()); |
| 895 | 891 |
| 896 imageResource->loader()->didFinishLoading(0.0, 0, 0); | 892 imageResource->loader()->didFinishLoading(0.0, 0, 0); |
| 897 | 893 |
| 898 EXPECT_EQ(ResourceStatus::DecodeError, imageResource->getStatus()); | 894 EXPECT_EQ(ResourceStatus::DecodeError, imageResource->getStatus()); |
| 899 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 895 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 912 request, | 908 request, |
| 913 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 909 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 914 EXPECT_EQ(FetchRequest::DisallowPlaceholder, | 910 EXPECT_EQ(FetchRequest::DisallowPlaceholder, |
| 915 request.placeholderImageRequestType()); | 911 request.placeholderImageRequestType()); |
| 916 EXPECT_EQ(nullAtom, | 912 EXPECT_EQ(nullAtom, |
| 917 imageResource->resourceRequest().httpHeaderField("range")); | 913 imageResource->resourceRequest().httpHeaderField("range")); |
| 918 EXPECT_FALSE(imageResource->isPlaceholder()); | 914 EXPECT_FALSE(imageResource->isPlaceholder()); |
| 919 std::unique_ptr<MockImageResourceObserver> observer = | 915 std::unique_ptr<MockImageResourceObserver> observer = |
| 920 MockImageResourceObserver::create(imageResource->getContent()); | 916 MockImageResourceObserver::create(imageResource->getContent()); |
| 921 | 917 |
| 922 imageResource->loader()->didReceiveResponse( | 918 imageResource->loader()->didReceiveResponse(WrappedResourceResponse( |
| 923 WrappedResourceResponse(ResourceResponse( | 919 ResourceResponse(testURL, "image/jpeg", sizeof(kJpegImage), nullAtom))); |
| 924 testURL, "image/jpeg", sizeof(kJpegImage), nullAtom, String()))); | |
| 925 imageResource->loader()->didReceiveData( | 920 imageResource->loader()->didReceiveData( |
| 926 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); | 921 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 927 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), | 922 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), |
| 928 sizeof(kJpegImage)); | 923 sizeof(kJpegImage)); |
| 929 | 924 |
| 930 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 925 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 931 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); | 926 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); |
| 932 EXPECT_FALSE(imageResource->isPlaceholder()); | 927 EXPECT_FALSE(imageResource->isPlaceholder()); |
| 933 EXPECT_LT(0, observer->imageChangedCount()); | 928 EXPECT_LT(0, observer->imageChangedCount()); |
| 934 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); | 929 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1007 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); | 1002 ResourceFetcher::create(ImageResourceTestMockFetchContext::create())); |
| 1008 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1003 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1009 request.placeholderImageRequestType()); | 1004 request.placeholderImageRequestType()); |
| 1010 EXPECT_EQ("bytes=0-2047", | 1005 EXPECT_EQ("bytes=0-2047", |
| 1011 imageResource->resourceRequest().httpHeaderField("range")); | 1006 imageResource->resourceRequest().httpHeaderField("range")); |
| 1012 EXPECT_TRUE(imageResource->isPlaceholder()); | 1007 EXPECT_TRUE(imageResource->isPlaceholder()); |
| 1013 std::unique_ptr<MockImageResourceObserver> observer = | 1008 std::unique_ptr<MockImageResourceObserver> observer = |
| 1014 MockImageResourceObserver::create(imageResource->getContent()); | 1009 MockImageResourceObserver::create(imageResource->getContent()); |
| 1015 | 1010 |
| 1016 ResourceResponse response(testURL, "image/jpeg", | 1011 ResourceResponse response(testURL, "image/jpeg", |
| 1017 kJpegImageSubrangeWithDimensionsLength, nullAtom, | 1012 kJpegImageSubrangeWithDimensionsLength, nullAtom); |
| 1018 String()); | |
| 1019 response.setHTTPStatusCode(206); | 1013 response.setHTTPStatusCode(206); |
| 1020 response.setHTTPHeaderField( | 1014 response.setHTTPHeaderField( |
| 1021 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, | 1015 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, |
| 1022 sizeof(kJpegImage))); | 1016 sizeof(kJpegImage))); |
| 1023 imageResource->loader()->didReceiveResponse( | 1017 imageResource->loader()->didReceiveResponse( |
| 1024 WrappedResourceResponse(response)); | 1018 WrappedResourceResponse(response)); |
| 1025 imageResource->loader()->didReceiveData( | 1019 imageResource->loader()->didReceiveData( |
| 1026 reinterpret_cast<const char*>(kJpegImage), | 1020 reinterpret_cast<const char*>(kJpegImage), |
| 1027 kJpegImageSubrangeWithDimensionsLength); | 1021 kJpegImageSubrangeWithDimensionsLength); |
| 1028 imageResource->loader()->didFinishLoading( | 1022 imageResource->loader()->didFinishLoading( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1057 EXPECT_EQ(FetchRequest::AllowPlaceholder, | 1051 EXPECT_EQ(FetchRequest::AllowPlaceholder, |
| 1058 request.placeholderImageRequestType()); | 1052 request.placeholderImageRequestType()); |
| 1059 EXPECT_EQ("bytes=0-2047", | 1053 EXPECT_EQ("bytes=0-2047", |
| 1060 imageResource->resourceRequest().httpHeaderField("range")); | 1054 imageResource->resourceRequest().httpHeaderField("range")); |
| 1061 EXPECT_TRUE(imageResource->isPlaceholder()); | 1055 EXPECT_TRUE(imageResource->isPlaceholder()); |
| 1062 std::unique_ptr<MockImageResourceObserver> observer = | 1056 std::unique_ptr<MockImageResourceObserver> observer = |
| 1063 MockImageResourceObserver::create(imageResource->getContent()); | 1057 MockImageResourceObserver::create(imageResource->getContent()); |
| 1064 | 1058 |
| 1065 const char kBadData[] = "notanimageresponse"; | 1059 const char kBadData[] = "notanimageresponse"; |
| 1066 | 1060 |
| 1067 imageResource->loader()->didReceiveResponse( | 1061 imageResource->loader()->didReceiveResponse(WrappedResourceResponse( |
| 1068 WrappedResourceResponse(ResourceResponse( | 1062 ResourceResponse(testURL, "image/jpeg", sizeof(kBadData), nullAtom))); |
| 1069 testURL, "image/jpeg", sizeof(kBadData), nullAtom, String()))); | |
| 1070 | 1063 |
| 1071 EXPECT_EQ(0, observer->imageChangedCount()); | 1064 EXPECT_EQ(0, observer->imageChangedCount()); |
| 1072 | 1065 |
| 1073 imageResource->loader()->didReceiveData(kBadData, sizeof(kBadData)); | 1066 imageResource->loader()->didReceiveData(kBadData, sizeof(kBadData)); |
| 1074 | 1067 |
| 1075 // The dimensions could not be extracted, so the full original image should be | 1068 // The dimensions could not be extracted, so the full original image should be |
| 1076 // loading. | 1069 // loading. |
| 1077 EXPECT_EQ(ResourceStatus::Pending, imageResource->getStatus()); | 1070 EXPECT_EQ(ResourceStatus::Pending, imageResource->getStatus()); |
| 1078 EXPECT_FALSE(imageResource->isPlaceholder()); | 1071 EXPECT_FALSE(imageResource->isPlaceholder()); |
| 1079 EXPECT_EQ(nullAtom, | 1072 EXPECT_EQ(nullAtom, |
| 1080 imageResource->resourceRequest().httpHeaderField("range")); | 1073 imageResource->resourceRequest().httpHeaderField("range")); |
| 1081 EXPECT_EQ( | 1074 EXPECT_EQ( |
| 1082 static_cast<int>(WebCachePolicy::BypassingCache), | 1075 static_cast<int>(WebCachePolicy::BypassingCache), |
| 1083 static_cast<int>(imageResource->resourceRequest().getCachePolicy())); | 1076 static_cast<int>(imageResource->resourceRequest().getCachePolicy())); |
| 1084 EXPECT_FALSE(observer->imageNotifyFinishedCalled()); | 1077 EXPECT_FALSE(observer->imageNotifyFinishedCalled()); |
| 1085 EXPECT_EQ(3, observer->imageChangedCount()); | 1078 EXPECT_EQ(3, observer->imageChangedCount()); |
| 1086 | 1079 |
| 1087 imageResource->loader()->didReceiveResponse( | 1080 imageResource->loader()->didReceiveResponse(WrappedResourceResponse( |
| 1088 WrappedResourceResponse(ResourceResponse( | 1081 ResourceResponse(testURL, "image/jpeg", sizeof(kJpegImage), nullAtom))); |
| 1089 testURL, "image/jpeg", sizeof(kJpegImage), nullAtom, String()))); | |
| 1090 imageResource->loader()->didReceiveData( | 1082 imageResource->loader()->didReceiveData( |
| 1091 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); | 1083 reinterpret_cast<const char*>(kJpegImage), sizeof(kJpegImage)); |
| 1092 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), | 1084 imageResource->loader()->didFinishLoading(0.0, sizeof(kJpegImage), |
| 1093 sizeof(kJpegImage)); | 1085 sizeof(kJpegImage)); |
| 1094 | 1086 |
| 1095 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); | 1087 EXPECT_EQ(ResourceStatus::Cached, imageResource->getStatus()); |
| 1096 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); | 1088 EXPECT_EQ(sizeof(kJpegImage), imageResource->encodedSize()); |
| 1097 EXPECT_FALSE(imageResource->isPlaceholder()); | 1089 EXPECT_FALSE(imageResource->isPlaceholder()); |
| 1098 EXPECT_LT(3, observer->imageChangedCount()); | 1090 EXPECT_LT(3, observer->imageChangedCount()); |
| 1099 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); | 1091 EXPECT_EQ(kJpegImageWidth, observer->imageWidthOnLastImageChanged()); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1143 ResourceFetcher* fetcher = | 1135 ResourceFetcher* fetcher = |
| 1144 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); | 1136 ResourceFetcher::create(ImageResourceTestMockFetchContext::create()); |
| 1145 FetchRequest placeholderRequest(testURL, FetchInitiatorInfo()); | 1137 FetchRequest placeholderRequest(testURL, FetchInitiatorInfo()); |
| 1146 placeholderRequest.setAllowImagePlaceholder(); | 1138 placeholderRequest.setAllowImagePlaceholder(); |
| 1147 ImageResource* imageResource = | 1139 ImageResource* imageResource = |
| 1148 ImageResource::fetch(placeholderRequest, fetcher); | 1140 ImageResource::fetch(placeholderRequest, fetcher); |
| 1149 std::unique_ptr<MockImageResourceObserver> observer = | 1141 std::unique_ptr<MockImageResourceObserver> observer = |
| 1150 MockImageResourceObserver::create(imageResource->getContent()); | 1142 MockImageResourceObserver::create(imageResource->getContent()); |
| 1151 | 1143 |
| 1152 ResourceResponse response(testURL, "image/jpeg", | 1144 ResourceResponse response(testURL, "image/jpeg", |
| 1153 kJpegImageSubrangeWithDimensionsLength, nullAtom, | 1145 kJpegImageSubrangeWithDimensionsLength, nullAtom); |
| 1154 String()); | |
| 1155 response.setHTTPStatusCode(206); | 1146 response.setHTTPStatusCode(206); |
| 1156 response.setHTTPHeaderField( | 1147 response.setHTTPHeaderField( |
| 1157 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, | 1148 "content-range", buildContentRange(kJpegImageSubrangeWithDimensionsLength, |
| 1158 sizeof(kJpegImage))); | 1149 sizeof(kJpegImage))); |
| 1159 imageResource->loader()->didReceiveResponse( | 1150 imageResource->loader()->didReceiveResponse( |
| 1160 WrappedResourceResponse(response)); | 1151 WrappedResourceResponse(response)); |
| 1161 imageResource->loader()->didReceiveData( | 1152 imageResource->loader()->didReceiveData( |
| 1162 reinterpret_cast<const char*>(kJpegImage), | 1153 reinterpret_cast<const char*>(kJpegImage), |
| 1163 kJpegImageSubrangeWithDimensionsLength); | 1154 kJpegImageSubrangeWithDimensionsLength); |
| 1164 imageResource->loader()->didFinishLoading( | 1155 imageResource->loader()->didFinishLoading( |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1195 "text/html"); | 1186 "text/html"); |
| 1196 ResourceRequest request = ResourceRequest(testURL); | 1187 ResourceRequest request = ResourceRequest(testURL); |
| 1197 ImageResource* imageResource = ImageResource::create(request); | 1188 ImageResource* imageResource = ImageResource::create(request); |
| 1198 imageResource->setStatus(ResourceStatus::Pending); | 1189 imageResource->setStatus(ResourceStatus::Pending); |
| 1199 | 1190 |
| 1200 std::unique_ptr<MockImageResourceObserver> observer = | 1191 std::unique_ptr<MockImageResourceObserver> observer = |
| 1201 MockImageResourceObserver::create(imageResource->getContent()); | 1192 MockImageResourceObserver::create(imageResource->getContent()); |
| 1202 | 1193 |
| 1203 // Send the image response. | 1194 // Send the image response. |
| 1204 ResourceResponse resourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage2), | 1195 ResourceResponse resourceResponse(KURL(), "image/jpeg", sizeof(kJpegImage2), |
| 1205 nullAtom, String()); | 1196 nullAtom); |
| 1206 resourceResponse.addHTTPHeaderField("chrome-proxy", "q=low"); | 1197 resourceResponse.addHTTPHeaderField("chrome-proxy", "q=low"); |
| 1207 | 1198 |
| 1208 imageResource->responseReceived(resourceResponse, nullptr); | 1199 imageResource->responseReceived(resourceResponse, nullptr); |
| 1209 | 1200 |
| 1210 // This is number is sufficiently large amount of bytes necessary for the | 1201 // This is number is sufficiently large amount of bytes necessary for the |
| 1211 // image to be created (since the size is known). This was determined by | 1202 // image to be created (since the size is known). This was determined by |
| 1212 // appending one byte at a time (with flushes) until the image was decoded. | 1203 // appending one byte at a time (with flushes) until the image was decoded. |
| 1213 size_t meaningfulImageSize = 280; | 1204 size_t meaningfulImageSize = 280; |
| 1214 imageResource->appendData(reinterpret_cast<const char*>(kJpegImage2), | 1205 imageResource->appendData(reinterpret_cast<const char*>(kJpegImage2), |
| 1215 meaningfulImageSize); | 1206 meaningfulImageSize); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1269 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); | 1260 EXPECT_TRUE(observer->imageNotifyFinishedCalled()); |
| 1270 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); | 1261 EXPECT_TRUE(imageResource->getContent()->getImage()->isBitmapImage()); |
| 1271 EXPECT_EQ(50, imageResource->getContent()->getImage()->width()); | 1262 EXPECT_EQ(50, imageResource->getContent()->getImage()->width()); |
| 1272 EXPECT_EQ(50, imageResource->getContent()->getImage()->height()); | 1263 EXPECT_EQ(50, imageResource->getContent()->getImage()->height()); |
| 1273 | 1264 |
| 1274 WTF::setTimeFunctionsForTesting(nullptr); | 1265 WTF::setTimeFunctionsForTesting(nullptr); |
| 1275 } | 1266 } |
| 1276 | 1267 |
| 1277 } // namespace | 1268 } // namespace |
| 1278 } // namespace blink | 1269 } // namespace blink |
| OLD | NEW |