Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

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: Rebase Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
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...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698