Changeset 182266 in webkit
- Timestamp:
- Apr 1, 2015 5:22:54 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 4 deleted
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r182264 r182266 1 2015-04-01 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r182247. 4 https://bugs.webkit.org/show_bug.cgi?id=143326 5 6 unfortunately broke some tests (Requested by dino on #webkit). 7 8 Reverted changeset: 9 10 "Async loading of image resources" 11 https://bugs.webkit.org/show_bug.cgi?id=134488 12 http://trac.webkit.org/changeset/182247 13 1 14 2015-04-01 Dean Jackson <dino@apple.com> 2 15 -
trunk/LayoutTests/fast/dom/HTMLImageElement/image-loading-gc.html
r182247 r182266 33 33 </script> 34 34 <body onload="runTest()"> 35 <div>This tests that an image element won't be garbage collected when it's loading, even if it doesn't have any references.</div> 35 <div>This tests that an image element won't be garbage collected when it's loading, even if it doesn't have any references. 36 36 <div id="result">FAILURE</div> 37 37 </body> -
trunk/LayoutTests/fast/dom/image-object.html
r182247 r182266 47 47 numErrs++; 48 48 } 49 i2 = new Image(); 49 50 i2 = new Image() 50 51 i2.onload = imageLoaded; 51 52 i2.src = 'resources/apple.gif'; -
trunk/LayoutTests/http/tests/misc/image-blocked-src-change-expected.txt
r182247 r182266 1 CONSOLE MESSAGE: Not allowed to load local resource: compass.jpg1 CONSOLE MESSAGE: line 44: Not allowed to load local resource: compass.jpg 2 2 Test case for bug 17897 : Not Rendering Images Imported from XHTML Document 3 3 -
trunk/LayoutTests/http/tests/misc/image-blocked-src-no-change-expected.txt
r182247 r182266 1 CONSOLE MESSAGE: Not allowed to load local resource: compass.jpg2 CONSOLE MESSAGE: Not allowed to load local resource: compass.jpg1 CONSOLE MESSAGE: line 27: Not allowed to load local resource: compass.jpg 2 CONSOLE MESSAGE: line 21: Not allowed to load local resource: compass.jpg 3 3 Test case for bug 17897 : Not Rendering Images Imported from XHTML Document 4 4 -
trunk/LayoutTests/http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt
r182247 r182266 6 6 REQUEST_METHOD: POST 7 7 === POST DATA === 8 {"csp-report":{"document-uri":"http://127.0.0.1:8000/security/contentSecurityPolicy/report-blocked-file-uri.html","referrer":"","violated-directive":"img-src 'none'","original-policy":"img-src 'none'; report-uri resources/save-report.php","blocked-uri":"file" }}8 {"csp-report":{"document-uri":"http://127.0.0.1:8000/security/contentSecurityPolicy/report-blocked-file-uri.html","referrer":"","violated-directive":"img-src 'none'","original-policy":"img-src 'none'; report-uri resources/save-report.php","blocked-uri":"file","source-file":"http://127.0.0.1:8000/security/contentSecurityPolicy/report-blocked-file-uri.html","line-number":12}} -
trunk/LayoutTests/http/tests/security/frame-loading-via-document-write-expected.txt
r182247 r182266 1 CONSOLE MESSAGE: Not allowed to load local resource: abe.png1 CONSOLE MESSAGE: line 1: Not allowed to load local resource: abe.png 2 2 3 3 -
trunk/LayoutTests/http/tests/security/local-image-from-remote-expected.txt
r182247 r182266 1 CONSOLE MESSAGE: Not allowed to load local resource: compass.jpg1 CONSOLE MESSAGE: line 14: Not allowed to load local resource: compass.jpg 2 2 This test is to see if a remote file can include a local image. 3 3 Currently this test cannot be run manually on Windows because we do not have a function like pathToLocalResource() outside of DRT. -
trunk/Source/WebCore/ChangeLog
r182265 r182266 1 2015-04-01 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r182247. 4 https://bugs.webkit.org/show_bug.cgi?id=143326 5 6 unfortunately broke some tests (Requested by dino on #webkit). 7 8 Reverted changeset: 9 10 "Async loading of image resources" 11 https://bugs.webkit.org/show_bug.cgi?id=134488 12 http://trac.webkit.org/changeset/182247 13 1 14 2015-04-01 Alex Christensen <achristensen@webkit.org> 2 15 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r182247 r182266 2102 2102 536D5A25193F40FC00CE4CAB /* SourceSizeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 536D5A24193F40FC00CE4CAB /* SourceSizeList.cpp */; }; 2103 2103 536D5A27193F410B00CE4CAB /* SourceSizeList.h in Headers */ = {isa = PBXBuildFile; fileRef = 536D5A26193F410B00CE4CAB /* SourceSizeList.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2104 53B895AF19DC7ED9009CAA93 /* MicroTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 53B895AD19DC7C37009CAA93 /* MicroTask.h */; settings = {ATTRIBUTES = (P rivate, ); }; };2104 53B895AF19DC7ED9009CAA93 /* MicroTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 53B895AD19DC7C37009CAA93 /* MicroTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2105 2105 53C8298D13D8D92700DE2DEB /* RenderFlexibleBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53C8298B13D8D92700DE2DEB /* RenderFlexibleBox.cpp */; }; 2106 2106 53C8298E13D8D92700DE2DEB /* RenderFlexibleBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 53C8298C13D8D92700DE2DEB /* RenderFlexibleBox.h */; settings = {ATTRIBUTES = (Private, ); }; }; -
trunk/Source/WebCore/bindings/js/JSEventListener.cpp
r182247 r182266 30 30 #include "JSMainThreadExecState.h" 31 31 #include "JSMainThreadExecStateInstrumentation.h" 32 #include "MicroTask.h"33 32 #include "ScriptController.h" 34 33 #include "WorkerGlobalScope.h" … … 153 152 } 154 153 } 155 if (scriptExecutionContext->isDocument())156 MicroTaskQueue::singleton().runMicroTasks();157 154 } 158 155 -
trunk/Source/WebCore/bindings/js/ScheduledAction.cpp
r182247 r182266 35 35 #include "JSMainThreadExecStateInstrumentation.h" 36 36 #include "JSWorkerGlobalScope.h" 37 #include "MicroTask.h"38 37 #include "ScriptController.h" 39 38 #include "ScriptExecutionContext.h" … … 127 126 else 128 127 frame->script().executeScriptInWorld(*m_isolatedWorld, m_code); 129 130 MicroTaskQueue::singleton().runMicroTasks();131 128 } 132 129 -
trunk/Source/WebCore/html/HTMLImageElement.cpp
r182247 r182266 453 453 void HTMLImageElement::didMoveToNewDocument(Document* oldDocument) 454 454 { 455 m_imageLoader.elementDidMoveToNewDocument( oldDocument);455 m_imageLoader.elementDidMoveToNewDocument(); 456 456 HTMLElement::didMoveToNewDocument(oldDocument); 457 457 } -
trunk/Source/WebCore/html/HTMLImageLoader.cpp
r182247 r182266 77 77 { 78 78 CachedImage* cachedImage = image(); 79 if (!cachedImage)80 return;81 79 82 80 Ref<Element> protect(element()); -
trunk/Source/WebCore/html/HTMLInputElement.cpp
r182247 r182266 1496 1496 { 1497 1497 if (imageLoader()) 1498 imageLoader()->elementDidMoveToNewDocument( oldDocument);1498 imageLoader()->elementDidMoveToNewDocument(); 1499 1499 1500 1500 bool needsSuspensionCallback = this->needsSuspensionCallback(); -
trunk/Source/WebCore/html/HTMLPlugInImageElement.cpp
r182247 r182266 307 307 308 308 if (m_imageLoader) 309 m_imageLoader->elementDidMoveToNewDocument( oldDocument);309 m_imageLoader->elementDidMoveToNewDocument(); 310 310 311 311 HTMLPlugInElement::didMoveToNewDocument(oldDocument); -
trunk/Source/WebCore/html/HTMLVideoElement.cpp
r182247 r182266 310 310 { 311 311 if (m_imageLoader) 312 m_imageLoader->elementDidMoveToNewDocument( oldDocument);312 m_imageLoader->elementDidMoveToNewDocument(); 313 313 HTMLMediaElement::didMoveToNewDocument(oldDocument); 314 314 } -
trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp
r182247 r182266 35 35 #include "HTMLDocument.h" 36 36 #include "InspectorInstrumentation.h" 37 #include "MicroTask.h"38 37 39 38 namespace WebCore { … … 411 410 return; 412 411 end(); 413 if (!isExecutingScript())414 MicroTaskQueue::singleton().runMicroTasks();415 412 } 416 413 -
trunk/Source/WebCore/loader/ImageLoader.cpp
r182247 r182266 3 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 4 4 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010 Apple Inc. All rights reserved. 5 * Copyright 2014 The Chromium Authors. All rights reserved.6 * Copyright (C) 2015 Akamai Technologies Inc. All rights reserved.7 5 * 8 6 * This library is free software; you can redistribute it and/or … … 37 35 #include "HTMLObjectElement.h" 38 36 #include "HTMLParserIdioms.h" 39 #include "MemoryCache.h"40 37 #include "Page.h" 41 38 #include "RenderImage.h" 42 39 #include "RenderSVGImage.h" 43 #include "ScriptController.h"44 40 #include "SecurityOrigin.h" 45 41 #include <wtf/NeverDestroyed.h> … … 68 64 namespace WebCore { 69 65 70 class ImageLoader::ImageLoaderTask : public MicroTask {71 public:72 ImageLoaderTask(WeakPtr<ImageLoader> loader, CachedResourceLoader::ShouldBypassMainWorldContentSecurityPolicy shouldBypassMainWorldContentSecurityPolicy)73 : m_loader(loader)74 , m_shouldBypassMainWorldContentSecurityPolicy(shouldBypassMainWorldContentSecurityPolicy)75 {76 }77 78 private:79 virtual void run() override80 {81 if (m_loader && m_loader->hasPendingTask())82 m_loader->doUpdateFromElement(m_shouldBypassMainWorldContentSecurityPolicy);83 }84 85 WeakPtr<ImageLoader> m_loader;86 CachedResourceLoader::ShouldBypassMainWorldContentSecurityPolicy m_shouldBypassMainWorldContentSecurityPolicy;87 };88 89 66 static ImageEventSender& beforeLoadEventSender() 90 67 { … … 115 92 , m_image(0) 116 93 , m_derefElementTimer(*this, &ImageLoader::timerFired) 117 , m_weakFactory(this)118 94 , m_hasPendingBeforeLoadEvent(false) 119 95 , m_hasPendingLoadEvent(false) … … 122 98 , m_loadManually(false) 123 99 , m_elementIsProtected(false) 124 , m_hasPendingTask(false)125 100 { 126 101 } … … 185 160 } 186 161 187 void ImageLoader::doUpdateFromElement(CachedResourceLoader::ShouldBypassMainWorldContentSecurityPolicy shouldBypassMainWorldContentSecurityPolicy) 188 { 189 m_hasPendingTask = false; 190 Document& document = m_element.document(); 191 AtomicString attr = m_element.imageSourceURL(); 192 193 String srcURI = sourceURI(attr); 194 URL url; 195 // Set url value only if srcURI is not empty. Otherwise, url will be the URL for the document itself. 196 if (!srcURI.isEmpty()) 197 url = document.completeURL(srcURI); 162 void ImageLoader::updateFromElement() 163 { 164 // If we're not making renderers for the page, then don't load images. We don't want to slow 165 // down the raw HTML parsing case by loading images we don't intend to display. 166 Document& document = element().document(); 167 if (!document.hasLivingRenderTree()) 168 return; 169 170 AtomicString attr = element().imageSourceURL(); 171 172 // Avoid loading a URL we already failed to load. 173 if (!m_failedLoadURL.isEmpty() && attr == m_failedLoadURL) 174 return; 175 198 176 // Do not load any image if the 'src' attribute is missing or if it is 199 177 // an empty string. 200 178 CachedResourceHandle<CachedImage> newImage = 0; 201 if (!url.isNull()) { 202 ResourceRequest resourceRequest(url); 203 CachedResourceRequest request(resourceRequest); 179 if (!attr.isNull() && !stripLeadingAndTrailingHTMLSpaces(attr).isEmpty()) { 180 CachedResourceRequest request(ResourceRequest(document.completeURL(sourceURI(attr)))); 204 181 request.setInitiator(&element()); 205 182 206 AtomicString crossOriginMode = m_element.fastGetAttribute(HTMLNames::crossoriginAttr);183 String crossOriginMode = element().fastGetAttribute(HTMLNames::crossoriginAttr); 207 184 if (!crossOriginMode.isNull()) { 208 185 StoredCredentials allowCredentials = equalIgnoringCase(crossOriginMode, "use-credentials") ? AllowStoredCredentials : DoNotAllowStoredCredentials; … … 219 196 document.cachedResourceLoader().setAutoLoadImages(autoLoadOtherImages); 220 197 } else 221 newImage = document.cachedResourceLoader().requestImage(request , shouldBypassMainWorldContentSecurityPolicy);198 newImage = document.cachedResourceLoader().requestImage(request); 222 199 223 200 // If we do not have an image here, it means that a cross-site … … 237 214 errorEventSender().dispatchEventSoon(*this); 238 215 } 239 216 240 217 CachedImage* oldImage = m_image.get(); 241 218 if (newImage != oldImage) { … … 289 266 // from this function as doing so might result in the destruction of this ImageLoader. 290 267 updatedHasPendingEvent(); 291 document.decrementLoadEventDelayCount();292 }293 294 void ImageLoader::updateFromElement()295 {296 AtomicString attribute = m_element.imageSourceURL();297 298 // Avoid loading a URL we already failed to load.299 if (!m_failedLoadURL.isEmpty() && attribute == m_failedLoadURL)300 return;301 302 // If we're not making renderers for the page, then don't load images. We don't want to slow303 // down the raw HTML parsing case by loading images we don't intend to display.304 Document& document = element().document();305 if (!document.hasLivingRenderTree())306 return;307 308 CachedResourceLoader::ShouldBypassMainWorldContentSecurityPolicy shouldBypassMainWorldContentSecurityPolicy = CachedResourceLoader::ShouldBypassMainWorldContentSecurityPolicy::No;309 if (document.frame() && document.frame()->script().shouldBypassMainWorldContentSecurityPolicy())310 shouldBypassMainWorldContentSecurityPolicy = CachedResourceLoader::ShouldBypassMainWorldContentSecurityPolicy::Yes;311 312 if (!m_hasPendingTask) {313 m_hasPendingTask = true;314 document.incrementLoadEventDelayCount();315 if (shouldLoadImmediately(attribute))316 doUpdateFromElement(CachedResourceLoader::ShouldBypassMainWorldContentSecurityPolicy::No);317 else318 MicroTaskQueue::singleton().queueMicroTask(std::make_unique<ImageLoaderTask>(createWeakPtr(), shouldBypassMainWorldContentSecurityPolicy));319 }320 }321 322 bool ImageLoader::shouldLoadImmediately(const AtomicString& attribute) const323 {324 String srcURI = sourceURI(attribute);325 URL url = element().document().completeURL(srcURI);326 return (srcURI.isEmpty()327 || url.isEmpty()328 || m_loadManually329 || !is<HTMLImageElement>(m_element)330 || url.protocolIsData()331 || MemoryCache::singleton().resourceForURL(url));332 268 } 333 269 … … 341 277 { 342 278 ASSERT(m_failedLoadURL.isEmpty()); 343 ASSERT(resource);344 279 ASSERT(resource == m_image.get()); 345 280 … … 350 285 if (!m_hasPendingLoadEvent) 351 286 return; 352 353 ASSERT(image());354 ASSERT(element().document().securityOrigin());355 287 356 288 if (element().fastHasAttribute(HTMLNames::crossoriginAttr) … … 533 465 } 534 466 535 void ImageLoader::elementDidMoveToNewDocument(Document* oldDocument) 536 { 537 if (m_hasPendingTask) { 538 if (oldDocument) 539 oldDocument->decrementLoadEventDelayCount(); 540 m_element.document().incrementLoadEventDelayCount(); 541 } 467 void ImageLoader::elementDidMoveToNewDocument() 468 { 542 469 clearFailedLoadURL(); 543 470 clearImage(); -
trunk/Source/WebCore/loader/ImageLoader.h
r182247 r182266 26 26 #include "CachedImageClient.h" 27 27 #include "CachedResourceHandle.h" 28 #include "CachedResourceLoader.h"29 #include "MicroTask.h"30 28 #include "Timer.h" 31 #include <wtf/RefCounted.h>32 #include <wtf/WeakPtr.h>33 29 #include <wtf/text/AtomicString.h> 34 30 35 31 namespace WebCore { 36 32 37 class Document;38 33 class Element; 39 34 class ImageLoader; 40 35 class RenderImageResource; 41 class URL;42 class Task;43 36 44 37 template<typename T> class EventSender; … … 58 51 void updateFromElementIgnoringPreviousError(); 59 52 60 void elementDidMoveToNewDocument( Document* oldDocument);53 void elementDidMoveToNewDocument(); 61 54 62 55 Element& element() { return m_element; } 63 56 const Element& element() const { return m_element; } 64 57 65 bool imageComplete() const { return m_imageComplete && !m_hasPendingTask; }58 bool imageComplete() const { return m_imageComplete; } 66 59 67 60 CachedImage* image() const { return m_image.get(); } … … 71 64 72 65 bool hasPendingBeforeLoadEvent() const { return m_hasPendingBeforeLoadEvent; } 73 bool hasPendingActivity() const { return m_hasPendingLoadEvent || m_hasPendingErrorEvent || m_hasPendingTask; }66 bool hasPendingActivity() const { return m_hasPendingLoadEvent || m_hasPendingErrorEvent; } 74 67 75 68 void dispatchPendingEvent(ImageEventSender*); … … 79 72 static void dispatchPendingErrorEvents(); 80 73 81 bool hasPendingTask() const { return m_hasPendingTask; }82 83 74 protected: 84 75 explicit ImageLoader(Element&); … … 86 77 87 78 private: 88 class ImageLoaderTask;89 90 // Called from the task or from updateFromElement to initiate the load.91 void doUpdateFromElement(CachedResourceLoader::ShouldBypassMainWorldContentSecurityPolicy);92 79 virtual void dispatchLoadEvent() = 0; 93 80 virtual String sourceURI(const AtomicString&) const = 0; … … 107 94 void timerFired(); 108 95 109 // Determine whether to initiate a synchronous load or to schedule a microtask.110 bool shouldLoadImmediately(const AtomicString& attribtue) const;111 WeakPtr<ImageLoader> createWeakPtr() { return m_weakFactory.createWeakPtr(); }112 113 96 Element& m_element; 114 97 CachedResourceHandle<CachedImage> m_image; 115 98 Timer m_derefElementTimer; 116 WeakPtrFactory<ImageLoader> m_weakFactory;117 99 AtomicString m_failedLoadURL; 118 100 bool m_hasPendingBeforeLoadEvent : 1; … … 122 104 bool m_loadManually : 1; 123 105 bool m_elementIsProtected : 1; 124 bool m_hasPendingTask : 1;125 106 }; 126 107 -
trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp
r182247 r182266 174 174 } 175 175 176 CachedResourceHandle<CachedImage> CachedResourceLoader::requestImage(CachedResourceRequest& request , ShouldBypassMainWorldContentSecurityPolicy shouldBypassMainWorldContentSecurityPolicy)176 CachedResourceHandle<CachedImage> CachedResourceLoader::requestImage(CachedResourceRequest& request) 177 177 { 178 178 if (Frame* frame = this->frame()) { … … 186 186 187 187 request.setDefer(clientDefersImage(request.resourceRequest().url()) ? CachedResourceRequest::DeferredByClient : CachedResourceRequest::NoDefer); 188 return downcast<CachedImage>(requestResource(CachedResource::ImageResource, request , shouldBypassMainWorldContentSecurityPolicy).get());188 return downcast<CachedImage>(requestResource(CachedResource::ImageResource, request).get()); 189 189 } 190 190 … … 358 358 } 359 359 360 bool CachedResourceLoader::canRequest(CachedResource::Type type, const URL& url, const ResourceLoaderOptions& options, bool forPreload , ShouldBypassMainWorldContentSecurityPolicy bypassMainWorldContentSecurityPolicy)360 bool CachedResourceLoader::canRequest(CachedResource::Type type, const URL& url, const ResourceLoaderOptions& options, bool forPreload) 361 361 { 362 362 if (document() && !document()->securityOrigin()->canDisplay(url)) { … … 367 367 } 368 368 369 370 369 // FIXME: Convert this to check the isolated world's Content Security Policy once webkit.org/b/104520 is solved. 371 bool shouldBypassMainWorldContentSecurityPolicy = (bypassMainWorldContentSecurityPolicy == ShouldBypassMainWorldContentSecurityPolicy::Yes) 372 || (frame() && frame()->script().shouldBypassMainWorldContentSecurityPolicy()); 370 bool shouldBypassMainWorldContentSecurityPolicy = (frame() && frame()->script().shouldBypassMainWorldContentSecurityPolicy()); 373 371 374 372 // Some types of resources can be loaded only from the same origin. Other … … 495 493 } 496 494 497 CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(CachedResource::Type type, CachedResourceRequest& request , ShouldBypassMainWorldContentSecurityPolicy shouldBypassMainWorldContentSecurityPolicy)495 CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(CachedResource::Type type, CachedResourceRequest& request) 498 496 { 499 497 URL url = request.resourceRequest().url(); … … 507 505 return nullptr; 508 506 509 if (!canRequest(type, url, request.options(), request.forPreload() , shouldBypassMainWorldContentSecurityPolicy))507 if (!canRequest(type, url, request.options(), request.forPreload())) 510 508 return nullptr; 511 509 -
trunk/Source/WebCore/loader/cache/CachedResourceLoader.h
r182247 r182266 72 72 ~CachedResourceLoader(); 73 73 74 enum class ShouldBypassMainWorldContentSecurityPolicy { No, Yes }; 75 76 CachedResourceHandle<CachedImage> requestImage(CachedResourceRequest&, ShouldBypassMainWorldContentSecurityPolicy = ShouldBypassMainWorldContentSecurityPolicy::No); 74 CachedResourceHandle<CachedImage> requestImage(CachedResourceRequest&); 77 75 CachedResourceHandle<CachedCSSStyleSheet> requestCSSStyleSheet(CachedResourceRequest&); 78 76 CachedResourceHandle<CachedCSSStyleSheet> requestUserCSSStyleSheet(CachedResourceRequest&); … … 134 132 void checkForPendingPreloads(); 135 133 void printPreloadStats(); 136 bool canRequest(CachedResource::Type, const URL&, const ResourceLoaderOptions&, bool forPreload = false , ShouldBypassMainWorldContentSecurityPolicy = ShouldBypassMainWorldContentSecurityPolicy::No);134 bool canRequest(CachedResource::Type, const URL&, const ResourceLoaderOptions&, bool forPreload = false); 137 135 138 136 static const ResourceLoaderOptions& defaultCachedResourceOptions(); … … 143 141 explicit CachedResourceLoader(DocumentLoader*); 144 142 145 CachedResourceHandle<CachedResource> requestResource(CachedResource::Type, CachedResourceRequest& , ShouldBypassMainWorldContentSecurityPolicy = ShouldBypassMainWorldContentSecurityPolicy::No);143 CachedResourceHandle<CachedResource> requestResource(CachedResource::Type, CachedResourceRequest&); 146 144 CachedResourceHandle<CachedResource> revalidateResource(const CachedResourceRequest&, CachedResource*); 147 145 CachedResourceHandle<CachedResource> loadResource(CachedResource::Type, CachedResourceRequest&); -
trunk/Source/WebCore/svg/SVGImageElement.cpp
r182247 r182266 206 206 void SVGImageElement::didMoveToNewDocument(Document* oldDocument) 207 207 { 208 m_imageLoader.elementDidMoveToNewDocument( oldDocument);208 m_imageLoader.elementDidMoveToNewDocument(); 209 209 SVGGraphicsElement::didMoveToNewDocument(oldDocument); 210 210 } -
trunk/Source/WebCore/xml/parser/XMLDocumentParser.cpp
r182247 r182266 41 41 #include "HTMLStyleElement.h" 42 42 #include "ImageLoader.h" 43 #include "MicroTask.h"44 43 #include "ProcessingInstruction.h" 45 44 #include "ResourceError.h" … … 202 201 clearCurrentNodeStack(); 203 202 document()->finishedParsing(); 204 MicroTaskQueue::singleton().runMicroTasks();205 203 } 206 204
Note: See TracChangeset
for help on using the changeset viewer.