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

Unified Diff: Source/core/loader/ImageLoader.cpp

Issue 1374793005: Single image reload fix (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/loader/ImageLoader.h ('k') | Source/core/svg/SVGImageElement.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/loader/ImageLoader.cpp
diff --git a/Source/core/loader/ImageLoader.cpp b/Source/core/loader/ImageLoader.cpp
index 85c24c77d5fb9ada412684ea02d9dfba008d9384..bcc60d8cf4d0ba2c0408c36d9fb155e96ec8ba48 100644
--- a/Source/core/loader/ImageLoader.cpp
+++ b/Source/core/loader/ImageLoader.cpp
@@ -52,6 +52,27 @@
namespace blink {
+namespace {
+
+class ExtraDataContainer : public ResourceRequest::ExtraData {
+public:
+ static PassRefPtr<ExtraDataContainer> create(WebURLRequest::ExtraData* extraData) { return adoptRef(new ExtraDataContainer(extraData)); }
+
+ ~ExtraDataContainer() override {}
+
+ WebURLRequest::ExtraData* extraData() const { return m_extraData.get(); }
+
+private:
+ explicit ExtraDataContainer(WebURLRequest::ExtraData* extraData)
+ : m_extraData(adoptPtr(extraData))
+ {
+ }
+
+ OwnPtr<WebURLRequest::ExtraData> m_extraData;
+};
+
+} // namespace
+
static ImageEventSender& loadEventSender()
{
DEFINE_STATIC_LOCAL(ImageEventSender, sender, (EventTypeNames::load));
@@ -112,9 +133,9 @@ public:
return;
if (m_scriptState->contextIsValid()) {
ScriptState::Scope scope(m_scriptState.get());
- m_loader->doUpdateFromElement(m_shouldBypassMainWorldCSP, m_updateBehavior, m_referrerPolicy);
+ m_loader->doUpdateFromElement(0, m_shouldBypassMainWorldCSP, m_updateBehavior, m_referrerPolicy);
} else {
- m_loader->doUpdateFromElement(m_shouldBypassMainWorldCSP, m_updateBehavior, m_referrerPolicy);
+ m_loader->doUpdateFromElement(0, m_shouldBypassMainWorldCSP, m_updateBehavior, m_referrerPolicy);
}
}
@@ -285,7 +306,7 @@ inline void ImageLoader::enqueueImageLoadingMicroTask(UpdateFromElementBehavior
m_loadDelayCounter = IncrementLoadEventDelayCount::create(m_element->document());
}
-void ImageLoader::doUpdateFromElement(BypassMainWorldBehavior bypassBehavior, UpdateFromElementBehavior updateBehavior, ReferrerPolicy referrerPolicy)
+void ImageLoader::doUpdateFromElement(WebURLRequest::ExtraData* extraData, BypassMainWorldBehavior bypassBehavior, UpdateFromElementBehavior updateBehavior, ReferrerPolicy referrerPolicy)
{
// FIXME: According to
// http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content.html#the-img-element:the-img-element-55
@@ -314,11 +335,13 @@ void ImageLoader::doUpdateFromElement(BypassMainWorldBehavior bypassBehavior, Up
ResourceRequest resourceRequest(url);
resourceRequest.setFetchCredentialsMode(WebURLRequest::FetchCredentialsModeSameOrigin);
if (updateBehavior == UpdateForcedReload) {
- resourceRequest.setCachePolicy(ResourceRequestCachePolicy::ReloadBypassingCache);
// ImageLoader defers the load of images when in an ImageDocument. Don't defer this load on a forced reload.
m_loadingImageDocument = false;
}
+ if (extraData)
+ resourceRequest.setExtraData(ExtraDataContainer::create(extraData));
+
if (RuntimeEnabledFeatures::referrerPolicyAttributeEnabled() && referrerPolicy != ReferrerPolicyDefault)
resourceRequest.setHTTPReferrer(SecurityPolicy::generateReferrer(referrerPolicy, url, document.outgoingReferrer()));
@@ -397,7 +420,7 @@ void ImageLoader::doUpdateFromElement(BypassMainWorldBehavior bypassBehavior, Up
updatedHasPendingEvent();
}
-void ImageLoader::updateFromElement(UpdateFromElementBehavior updateBehavior, ReferrerPolicy referrerPolicy)
+void ImageLoader::updateFromElement(WebURLRequest::ExtraData* extraData, UpdateFromElementBehavior updateBehavior, ReferrerPolicy referrerPolicy)
{
AtomicString imageSourceURL = m_element->imageSourceURL();
m_suppressErrorEvents = (updateBehavior == UpdateSizeChanged);
@@ -417,7 +440,7 @@ void ImageLoader::updateFromElement(UpdateFromElementBehavior updateBehavior, Re
KURL url = imageSourceToKURL(imageSourceURL);
if (shouldLoadImmediately(url)) {
- doUpdateFromElement(DoNotBypassMainWorldCSP, updateBehavior, referrerPolicy);
+ doUpdateFromElement(extraData, DoNotBypassMainWorldCSP, updateBehavior, referrerPolicy);
return;
}
// Allow the idiom "img.src=''; img.src='.." to clear down the image before
« no previous file with comments | « Source/core/loader/ImageLoader.h ('k') | Source/core/svg/SVGImageElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698