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, const Resou
rceLoaderOptions& options) | 58 ImageResource::ImageResource(const ResourceRequest& resourceRequest, const Resou
rceLoaderOptions& options) |
62 : Resource(resourceRequest, Image, options) | 59 : Resource(resourceRequest, Image, options) |
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, const ResourceLoaderOptions& o
ptions) | 68 ImageResource::ImageResource(blink::Image* image, const ResourceLoaderOptions& o
ptions) |
73 : Resource(ResourceRequest(""), Image, options) | 69 : Resource(ResourceRequest(""), Image, options) |
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, const ResourceLoaderOptions& options) | 79 ImageResource::ImageResource(const ResourceRequest& resourceRequest, blink::Imag
e* image, const ResourceLoaderOptions& options) |
85 : Resource(resourceRequest, Image, options) | 80 : Resource(resourceRequest, Image, options) |
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) | |
109 { | |
110 ASSERT(fetcher); | |
111 if (fetcher->autoLoadImages()) | |
112 Resource::load(fetcher); | |
113 else | |
114 setLoading(false); | |
115 } | |
116 | |
117 void ImageResource::didAddClient(ResourceClient* c) | 102 void ImageResource::didAddClient(ResourceClient* c) |
118 { | 103 { |
119 if (m_data && !m_image && !errorOccurred()) { | 104 if (m_data && !m_image && !errorOccurred()) { |
120 createImage(); | 105 createImage(); |
121 m_image->setData(m_data, true); | 106 m_image->setData(m_data, true); |
122 } | 107 } |
123 | 108 |
124 ASSERT(ImageResourceClient::isExpectedType(c)); | 109 ASSERT(ImageResourceClient::isExpectedType(c)); |
125 if (m_image && !m_image->isNull()) | 110 if (m_image && !m_image->isNull()) |
126 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... |
476 m_multipartParsingState = MultipartParsingState::ParsingFirstPart; | 461 m_multipartParsingState = MultipartParsingState::ParsingFirstPart; |
477 return; | 462 return; |
478 } | 463 } |
479 clear(); | 464 clear(); |
480 updateImage(true); | 465 updateImage(true); |
481 m_data.clear(); | 466 m_data.clear(); |
482 | 467 |
483 if (m_multipartParsingState == MultipartParsingState::ParsingFirstPart) { | 468 if (m_multipartParsingState == MultipartParsingState::ParsingFirstPart) { |
484 m_multipartParsingState = MultipartParsingState::FinishedParsingFirstPar
t; | 469 m_multipartParsingState = MultipartParsingState::FinishedParsingFirstPar
t; |
485 // Notify finished when the first part ends. | 470 // Notify finished when the first part ends. |
486 setLoading(false); | 471 if (!errorOccurred()) |
| 472 setStatus(Cached); |
487 checkNotify(); | 473 checkNotify(); |
488 if (m_loader) | 474 if (m_loader) |
489 m_loader->didFinishLoadingOnePart(0, WebURLLoaderClient::kUnknownEnc
odedDataLength); | 475 m_loader->didFinishLoadingOnePart(0, WebURLLoaderClient::kUnknownEnc
odedDataLength); |
490 } | 476 } |
491 } | 477 } |
492 | 478 |
493 void ImageResource::multipartDataReceived(const char* bytes, size_t size) | 479 void ImageResource::multipartDataReceived(const char* bytes, size_t size) |
494 { | 480 { |
495 ASSERT(m_multipartParser); | 481 ASSERT(m_multipartParser); |
496 Resource::appendData(bytes, size); | 482 Resource::appendData(bytes, size); |
497 } | 483 } |
498 | 484 |
499 bool ImageResource::isAccessAllowed(SecurityOrigin* securityOrigin) | 485 bool ImageResource::isAccessAllowed(SecurityOrigin* securityOrigin) |
500 { | 486 { |
501 if (response().wasFetchedViaServiceWorker()) | 487 if (response().wasFetchedViaServiceWorker()) |
502 return response().serviceWorkerResponseType() != WebServiceWorkerRespons
eTypeOpaque; | 488 return response().serviceWorkerResponseType() != WebServiceWorkerRespons
eTypeOpaque; |
503 if (!getImage()->currentFrameHasSingleSecurityOrigin()) | 489 if (!getImage()->currentFrameHasSingleSecurityOrigin()) |
504 return false; | 490 return false; |
505 if (passesAccessControlCheck(securityOrigin)) | 491 if (passesAccessControlCheck(securityOrigin)) |
506 return true; | 492 return true; |
507 return !securityOrigin->taintsCanvas(response().url()); | 493 return !securityOrigin->taintsCanvas(response().url()); |
508 } | 494 } |
509 | 495 |
510 } // namespace blink | 496 } // namespace blink |
OLD | NEW |