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...) 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...) 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 |