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