| OLD | NEW |
| 1 /* | 1 /* |
| 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
| 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
| 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
| 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
| 6 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 6 Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
| 7 | 7 |
| 8 This library is free software; you can redistribute it and/or | 8 This library is free software; you can redistribute it and/or |
| 9 modify it under the terms of the GNU Library General Public | 9 modify it under the terms of the GNU Library General Public |
| 10 License as published by the Free Software Foundation; either | 10 License as published by the Free Software Foundation; either |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 { | 45 { |
| 46 if (request.resourceRequest().requestContext() == WebURLRequest::RequestCont
extUnspecified) | 46 if (request.resourceRequest().requestContext() == WebURLRequest::RequestCont
extUnspecified) |
| 47 request.mutableResourceRequest().setRequestContext(WebURLRequest::Reques
tContextImage); | 47 request.mutableResourceRequest().setRequestContext(WebURLRequest::Reques
tContextImage); |
| 48 if (fetcher->context().pageDismissalEventBeingDispatched()) { | 48 if (fetcher->context().pageDismissalEventBeingDispatched()) { |
| 49 KURL requestURL = request.resourceRequest().url(); | 49 KURL requestURL = request.resourceRequest().url(); |
| 50 if (requestURL.isValid() && fetcher->context().canRequest(Resource::Imag
e, request.resourceRequest(), requestURL, request.options(), request.forPreload(
), request.getOriginRestriction())) | 50 if (requestURL.isValid() && fetcher->context().canRequest(Resource::Imag
e, request.resourceRequest(), requestURL, request.options(), request.forPreload(
), request.getOriginRestriction())) |
| 51 fetcher->context().sendImagePing(requestURL); | 51 fetcher->context().sendImagePing(requestURL); |
| 52 return nullptr; | 52 return nullptr; |
| 53 } | 53 } |
| 54 | 54 |
| 55 if (fetcher->clientDefersImage(request.resourceRequest().url())) | |
| 56 request.setDefer(FetchRequest::DeferredByClient); | |
| 57 | |
| 58 return toImageResource(fetcher->requestResource(request, ImageResourceFactor
y())); | 55 return toImageResource(fetcher->requestResource(request, ImageResourceFactor
y())); |
| 59 } | 56 } |
| 60 | 57 |
| 61 ImageResource::ImageResource(const ResourceRequest& resourceRequest) | 58 ImageResource::ImageResource(const ResourceRequest& resourceRequest) |
| 62 : Resource(resourceRequest, Image) | 59 : Resource(resourceRequest, Image) |
| 63 , m_devicePixelRatioHeaderValue(1.0) | 60 , m_devicePixelRatioHeaderValue(1.0) |
| 64 , m_image(nullptr) | 61 , m_image(nullptr) |
| 65 , m_hasDevicePixelRatioHeaderValue(false) | 62 , m_hasDevicePixelRatioHeaderValue(false) |
| 66 { | 63 { |
| 67 WTF_LOG(Timers, "new ImageResource(ResourceRequest) %p", this); | 64 WTF_LOG(Timers, "new ImageResource(ResourceRequest) %p", this); |
| 68 setStatus(Unknown); | |
| 69 setCustomAcceptHeader(); | 65 setCustomAcceptHeader(); |
| 70 } | 66 } |
| 71 | 67 |
| 72 ImageResource::ImageResource(blink::Image* image) | 68 ImageResource::ImageResource(blink::Image* image) |
| 73 : Resource(ResourceRequest(""), Image) | 69 : Resource(ResourceRequest(""), Image) |
| 74 , m_devicePixelRatioHeaderValue(1.0) | 70 , m_devicePixelRatioHeaderValue(1.0) |
| 75 , m_image(image) | 71 , m_image(image) |
| 76 , m_hasDevicePixelRatioHeaderValue(false) | 72 , m_hasDevicePixelRatioHeaderValue(false) |
| 77 { | 73 { |
| 78 WTF_LOG(Timers, "new ImageResource(Image) %p", this); | 74 WTF_LOG(Timers, "new ImageResource(Image) %p", this); |
| 79 setStatus(Cached); | 75 setStatus(Cached); |
| 80 setLoading(false); | |
| 81 setCustomAcceptHeader(); | 76 setCustomAcceptHeader(); |
| 82 } | 77 } |
| 83 | 78 |
| 84 ImageResource::ImageResource(const ResourceRequest& resourceRequest, blink::Imag
e* image) | 79 ImageResource::ImageResource(const ResourceRequest& resourceRequest, blink::Imag
e* image) |
| 85 : Resource(resourceRequest, Image) | 80 : Resource(resourceRequest, Image) |
| 86 , m_image(image) | 81 , m_image(image) |
| 87 { | 82 { |
| 88 WTF_LOG(Timers, "new ImageResource(ResourceRequest, Image) %p", this); | 83 WTF_LOG(Timers, "new ImageResource(ResourceRequest, Image) %p", this); |
| 89 setStatus(Cached); | 84 setStatus(Cached); |
| 90 setLoading(false); | |
| 91 setCustomAcceptHeader(); | 85 setCustomAcceptHeader(); |
| 92 } | 86 } |
| 93 | 87 |
| 94 ImageResource::~ImageResource() | 88 ImageResource::~ImageResource() |
| 95 { | 89 { |
| 96 WTF_LOG(Timers, "~ImageResource %p", this); | 90 WTF_LOG(Timers, "~ImageResource %p", this); |
| 97 clearImage(); | 91 clearImage(); |
| 98 } | 92 } |
| 99 | 93 |
| 100 DEFINE_TRACE(ImageResource) | 94 DEFINE_TRACE(ImageResource) |
| 101 { | 95 { |
| 102 visitor->trace(m_multipartParser); | 96 visitor->trace(m_multipartParser); |
| 103 Resource::trace(visitor); | 97 Resource::trace(visitor); |
| 104 ImageObserver::trace(visitor); | 98 ImageObserver::trace(visitor); |
| 105 MultipartImageResourceParser::Client::trace(visitor); | 99 MultipartImageResourceParser::Client::trace(visitor); |
| 106 } | 100 } |
| 107 | 101 |
| 108 void ImageResource::load(ResourceFetcher* fetcher, const ResourceLoaderOptions&
options) | |
| 109 { | |
| 110 if (!fetcher || fetcher->autoLoadImages()) | |
| 111 Resource::load(fetcher, options); | |
| 112 else | |
| 113 setLoading(false); | |
| 114 } | |
| 115 | |
| 116 void ImageResource::didAddClient(ResourceClient* c) | 102 void ImageResource::didAddClient(ResourceClient* c) |
| 117 { | 103 { |
| 118 if (m_data && !m_image && !errorOccurred()) { | 104 if (m_data && !m_image && !errorOccurred()) { |
| 119 createImage(); | 105 createImage(); |
| 120 m_image->setData(m_data, true); | 106 m_image->setData(m_data, true); |
| 121 } | 107 } |
| 122 | 108 |
| 123 ASSERT(ImageResourceClient::isExpectedType(c)); | 109 ASSERT(ImageResourceClient::isExpectedType(c)); |
| 124 if (m_image && !m_image->isNull()) | 110 if (m_image && !m_image->isNull()) |
| 125 static_cast<ImageResourceClient*>(c)->imageChanged(this); | 111 static_cast<ImageResourceClient*>(c)->imageChanged(this); |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 475 m_multipartParsingState = MultipartParsingState::ParsingFirstPart; | 461 m_multipartParsingState = MultipartParsingState::ParsingFirstPart; |
| 476 return; | 462 return; |
| 477 } | 463 } |
| 478 clear(); | 464 clear(); |
| 479 updateImage(true); | 465 updateImage(true); |
| 480 m_data.clear(); | 466 m_data.clear(); |
| 481 | 467 |
| 482 if (m_multipartParsingState == MultipartParsingState::ParsingFirstPart) { | 468 if (m_multipartParsingState == MultipartParsingState::ParsingFirstPart) { |
| 483 m_multipartParsingState = MultipartParsingState::FinishedParsingFirstPar
t; | 469 m_multipartParsingState = MultipartParsingState::FinishedParsingFirstPar
t; |
| 484 // Notify finished when the first part ends. | 470 // Notify finished when the first part ends. |
| 485 setLoading(false); | 471 if (!errorOccurred()) |
| 472 setStatus(Cached); |
| 486 checkNotify(); | 473 checkNotify(); |
| 487 if (m_loader) | 474 if (m_loader) |
| 488 m_loader->didFinishLoadingOnePart(0, WebURLLoaderClient::kUnknownEnc
odedDataLength); | 475 m_loader->didFinishLoadingOnePart(0, WebURLLoaderClient::kUnknownEnc
odedDataLength); |
| 489 } | 476 } |
| 490 } | 477 } |
| 491 | 478 |
| 492 void ImageResource::multipartDataReceived(const char* bytes, size_t size) | 479 void ImageResource::multipartDataReceived(const char* bytes, size_t size) |
| 493 { | 480 { |
| 494 ASSERT(m_multipartParser); | 481 ASSERT(m_multipartParser); |
| 495 Resource::appendData(bytes, size); | 482 Resource::appendData(bytes, size); |
| 496 } | 483 } |
| 497 | 484 |
| 498 bool ImageResource::isAccessAllowed(SecurityOrigin* securityOrigin) | 485 bool ImageResource::isAccessAllowed(SecurityOrigin* securityOrigin) |
| 499 { | 486 { |
| 500 if (response().wasFetchedViaServiceWorker()) | 487 if (response().wasFetchedViaServiceWorker()) |
| 501 return response().serviceWorkerResponseType() != WebServiceWorkerRespons
eTypeOpaque; | 488 return response().serviceWorkerResponseType() != WebServiceWorkerRespons
eTypeOpaque; |
| 502 if (!getImage()->currentFrameHasSingleSecurityOrigin()) | 489 if (!getImage()->currentFrameHasSingleSecurityOrigin()) |
| 503 return false; | 490 return false; |
| 504 if (passesAccessControlCheck(securityOrigin)) | 491 if (passesAccessControlCheck(securityOrigin)) |
| 505 return true; | 492 return true; |
| 506 return !securityOrigin->taintsCanvas(response().url()); | 493 return !securityOrigin->taintsCanvas(response().url()); |
| 507 } | 494 } |
| 508 | 495 |
| 509 } // namespace blink | 496 } // namespace blink |
| OLD | NEW |