Chromium Code Reviews

Side by Side Diff: third_party/WebKit/Source/core/fetch/ImageResource.cpp

Issue 1802123002: Unify Resource loading status tracking (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
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...)
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...)
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
OLDNEW

Powered by Google App Engine