WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-99736-20121018212802.patch (text/plain), 41.22 KB, created by
Marja Hölttä
on 2012-10-18 12:29:18 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Marja Hölttä
Created:
2012-10-18 12:29:18 PDT
Size:
41.22 KB
patch
obsolete
>Subversion Revision: 131789 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index bd51285f1122a3f6299c4f553fffee3679d53ef1..1a17070400617bbb56d49b291888dd0db42d689f 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,77 @@ >+2012-10-18 Marja Hölttä <marja@chromium.org> >+ >+ Refactor CachedResourceLoader: add CachedResourceRequest >+ https://bugs.webkit.org/show_bug.cgi?id=99736 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This is needed for fixing bugs 84883 and 92761. >+ >+ * css/CSSFontFaceSrcValue.cpp: >+ (WebCore::CSSFontFaceSrcValue::cachedFont): >+ * css/CSSImageSetValue.cpp: >+ (WebCore::CSSImageSetValue::cachedImageSet): >+ * css/CSSImageValue.cpp: >+ (WebCore::CSSImageValue::cachedImage): >+ * css/StyleRuleImport.cpp: >+ (WebCore::StyleRuleImport::requestStyleSheet): >+ * css/WebKitCSSSVGDocumentValue.cpp: >+ (WebCore::WebKitCSSSVGDocumentValue::load): >+ * css/WebKitCSSShaderValue.cpp: >+ (WebCore::WebKitCSSShaderValue::cachedShader): >+ * dom/ProcessingInstruction.cpp: >+ (WebCore::ProcessingInstruction::checkStyleSheet): >+ * dom/ScriptElement.cpp: >+ (WebCore::ScriptElement::requestScript): >+ * html/HTMLLinkElement.cpp: >+ (WebCore::HTMLLinkElement::process): >+ * loader/DocumentThreadableLoader.cpp: >+ (WebCore::DocumentThreadableLoader::loadRequest): >+ * loader/ImageLoader.cpp: >+ (WebCore::ImageLoader::updateFromElement): >+ * loader/LinkLoader.cpp: >+ (WebCore::LinkLoader::loadLink): >+ * loader/TextTrackLoader.cpp: >+ (WebCore::TextTrackLoader::load): >+ * loader/cache/CachedResourceLoader.cpp: >+ (WebCore::CachedResourceLoader::CachedResourceRequest::CachedResourceRequest): >+ (WebCore): >+ (WebCore::CachedResourceLoader::requestImage): >+ (WebCore::CachedResourceLoader::requestFont): >+ (WebCore::CachedResourceLoader::requestTextTrack): >+ (WebCore::CachedResourceLoader::requestShader): >+ (WebCore::CachedResourceLoader::requestCSSStyleSheet): >+ (WebCore::CachedResourceLoader::requestUserCSSStyleSheet): >+ (WebCore::CachedResourceLoader::requestScript): >+ (WebCore::CachedResourceLoader::requestXSLStyleSheet): >+ (WebCore::CachedResourceLoader::requestSVGDocument): >+ (WebCore::CachedResourceLoader::requestLinkResource): >+ (WebCore::CachedResourceLoader::requestRawResource): >+ (WebCore::CachedResourceLoader::requestResource): >+ (WebCore::CachedResourceLoader::requestPreload): >+ * loader/cache/CachedResourceLoader.h: >+ (CachedResourceRequest): >+ (WebCore::CachedResourceLoader::CachedResourceRequest::setCharset): >+ (WebCore::CachedResourceLoader::CachedResourceRequest::setDefer): >+ (WebCore::CachedResourceLoader::CachedResourceRequest::setForPreload): >+ (WebCore::CachedResourceLoader::CachedResourceRequest::resourceRequest): >+ (WebCore::CachedResourceLoader::CachedResourceRequest::charset): >+ (WebCore::CachedResourceLoader::CachedResourceRequest::options): >+ (WebCore::CachedResourceLoader::CachedResourceRequest::priority): >+ (WebCore::CachedResourceLoader::CachedResourceRequest::forPreload): >+ (WebCore::CachedResourceLoader::CachedResourceRequest::defer): >+ (CachedResourceLoader): >+ * loader/icon/IconLoader.cpp: >+ (WebCore::IconLoader::startLoading): >+ * svg/SVGFEImageElement.cpp: >+ (WebCore::SVGFEImageElement::requestImageResource): >+ * svg/SVGFontFaceUriElement.cpp: >+ (WebCore::SVGFontFaceUriElement::loadFont): >+ * svg/SVGUseElement.cpp: >+ (WebCore::SVGUseElement::svgAttributeChanged): >+ * xml/XSLImportRule.cpp: >+ (WebCore::XSLImportRule::loadSheet): >+ > 2012-10-18 Jer Noble <jer.noble@apple.com> > > Crash in WebCore::Document::webkitExitFullscreen + 618 >diff --git a/Source/WebCore/css/CSSFontFaceSrcValue.cpp b/Source/WebCore/css/CSSFontFaceSrcValue.cpp >index 2a1c04787d6a0c4c87138044a2c1755898710cfb..97cfda40139abb0dce9592e4452767634e7a9da9 100644 >--- a/Source/WebCore/css/CSSFontFaceSrcValue.cpp >+++ b/Source/WebCore/css/CSSFontFaceSrcValue.cpp >@@ -95,7 +95,7 @@ bool CSSFontFaceSrcValue::hasFailedOrCanceledSubresources() const > CachedFont* CSSFontFaceSrcValue::cachedFont(Document* document) > { > if (!m_cachedFont) { >- ResourceRequest request(document->completeURL(m_resource)); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(document->completeURL(m_resource))); > m_cachedFont = document->cachedResourceLoader()->requestFont(request); > } > return m_cachedFont.get(); >@@ -113,4 +113,3 @@ void CSSFontFaceSrcValue::reportDescendantMemoryUsage(MemoryObjectInfo* memoryOb > } > > } >- >diff --git a/Source/WebCore/css/CSSImageSetValue.cpp b/Source/WebCore/css/CSSImageSetValue.cpp >index 6e02a20f95ac3f14f461a1c5100b4ad62bd9ef0a..50459bd40df397e53592a43fc6c61282e424943a 100644 >--- a/Source/WebCore/css/CSSImageSetValue.cpp >+++ b/Source/WebCore/css/CSSImageSetValue.cpp >@@ -108,7 +108,7 @@ StyleCachedImageSet* CSSImageSetValue::cachedImageSet(CachedResourceLoader* load > // All forms of scale should be included: Page::pageScaleFactor(), Frame::pageZoomFactor(), > // and any CSS transforms. https://bugs.webkit.org/show_bug.cgi?id=81698 > ImageWithScale image = bestImageForScaleFactor(); >- ResourceRequest request(loader->document()->completeURL(image.imageURL)); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(loader->document()->completeURL(image.imageURL))); > if (CachedResourceHandle<CachedImage> cachedImage = loader->requestImage(request)) { > m_imageSet = StyleCachedImageSet::create(cachedImage.get(), image.scaleFactor, this); > m_accessedBestFitImage = true; >diff --git a/Source/WebCore/css/CSSImageValue.cpp b/Source/WebCore/css/CSSImageValue.cpp >index 726c2c043471e967b92bc9fa764c3239f2b7a546..24341a0b04ca1cf66e14c762d78bd378c7b14ad4 100644 >--- a/Source/WebCore/css/CSSImageValue.cpp >+++ b/Source/WebCore/css/CSSImageValue.cpp >@@ -82,7 +82,7 @@ StyleCachedImage* CSSImageValue::cachedImage(CachedResourceLoader* loader, const > if (!m_accessedImage) { > m_accessedImage = true; > >- ResourceRequest request(loader->document()->completeURL(url)); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(loader->document()->completeURL(url))); > if (CachedResourceHandle<CachedImage> cachedImage = loader->requestImage(request)) > m_image = StyleCachedImage::create(cachedImage.get()); > } >diff --git a/Source/WebCore/css/StyleRuleImport.cpp b/Source/WebCore/css/StyleRuleImport.cpp >index 26f29e82f80a9ff51dace570d8f47e938ae5de0a..63417e1bd3d6f604447984f32d9b65d79a48b6d4 100644 >--- a/Source/WebCore/css/StyleRuleImport.cpp >+++ b/Source/WebCore/css/StyleRuleImport.cpp >@@ -115,11 +115,11 @@ void StyleRuleImport::requestStyleSheet() > rootSheet = sheet; > } > >- ResourceRequest request(absURL); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(absURL), m_parentStyleSheet->charset()); > if (m_parentStyleSheet->isUserStyleSheet()) >- m_cachedSheet = cachedResourceLoader->requestUserCSSStyleSheet(request, m_parentStyleSheet->charset()); >+ m_cachedSheet = cachedResourceLoader->requestUserCSSStyleSheet(request); > else >- m_cachedSheet = cachedResourceLoader->requestCSSStyleSheet(request, m_parentStyleSheet->charset()); >+ m_cachedSheet = cachedResourceLoader->requestCSSStyleSheet(request); > if (m_cachedSheet) { > // if the import rule is issued dynamically, the sheet may be > // removed from the pending sheet count, so let the doc know >diff --git a/Source/WebCore/css/WebKitCSSSVGDocumentValue.cpp b/Source/WebCore/css/WebKitCSSSVGDocumentValue.cpp >index 44c88089470e839d974eba01cc06f7d920c18122..2a79e82985740092c5337dbd6b244cdcc9fb4345 100644 >--- a/Source/WebCore/css/WebKitCSSSVGDocumentValue.cpp >+++ b/Source/WebCore/css/WebKitCSSSVGDocumentValue.cpp >@@ -52,7 +52,7 @@ CachedSVGDocument* WebKitCSSSVGDocumentValue::load(CachedResourceLoader* loader) > if (!m_loadRequested) { > m_loadRequested = true; > >- ResourceRequest request(loader->document()->completeURL(m_url)); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(loader->document()->completeURL(m_url))); > m_document = loader->requestSVGDocument(request); > } > >diff --git a/Source/WebCore/css/WebKitCSSShaderValue.cpp b/Source/WebCore/css/WebKitCSSShaderValue.cpp >index 6f9373e0f0fa2df8bf494281b5c2d87729abb961..29c9f1e3ceeb4da886b2954366b61a45a2052446 100644 >--- a/Source/WebCore/css/WebKitCSSShaderValue.cpp >+++ b/Source/WebCore/css/WebKitCSSShaderValue.cpp >@@ -59,7 +59,7 @@ StyleCachedShader* WebKitCSSShaderValue::cachedShader(CachedResourceLoader* load > if (!m_accessedShader) { > m_accessedShader = true; > >- ResourceRequest request(loader->document()->completeURL(m_url)); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(loader->document()->completeURL(m_url))); > if (CachedResourceHandle<CachedShader> cachedShader = loader->requestShader(request)) > m_shader = StyleCachedShader::create(cachedShader.get()); > } >diff --git a/Source/WebCore/dom/ProcessingInstruction.cpp b/Source/WebCore/dom/ProcessingInstruction.cpp >index 4bca1d1eb95ebaaec10ad138fcc6d1feb3f6f6b6..92f4e04fc3b675f97d6797e6bf64556755e73e4b 100644 >--- a/Source/WebCore/dom/ProcessingInstruction.cpp >+++ b/Source/WebCore/dom/ProcessingInstruction.cpp >@@ -163,7 +163,7 @@ void ProcessingInstruction::checkStyleSheet() > m_loading = true; > document()->styleSheetCollection()->addPendingSheet(); > >- ResourceRequest request(document()->completeURL(href)); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(document()->completeURL(href))); > #if ENABLE(XSLT) > if (m_isXSL) > m_cachedSheet = document()->cachedResourceLoader()->requestXSLStyleSheet(request); >@@ -173,8 +173,9 @@ void ProcessingInstruction::checkStyleSheet() > String charset = attrs.get("charset"); > if (charset.isEmpty()) > charset = document()->charset(); >+ request.setCharset(charset); > >- m_cachedSheet = document()->cachedResourceLoader()->requestCSSStyleSheet(request, charset); >+ m_cachedSheet = document()->cachedResourceLoader()->requestCSSStyleSheet(request); > } > if (m_cachedSheet) > m_cachedSheet->addClient(this); >diff --git a/Source/WebCore/dom/ScriptElement.cpp b/Source/WebCore/dom/ScriptElement.cpp >index 209fc79c1c8c08a4f69a999983fb07198638e696..3ea76a2184ee55006cd82f984d0085a7268365f8 100644 >--- a/Source/WebCore/dom/ScriptElement.cpp >+++ b/Source/WebCore/dom/ScriptElement.cpp >@@ -256,16 +256,16 @@ bool ScriptElement::requestScript(const String& sourceUrl) > > ASSERT(!m_cachedScript); > if (!stripLeadingAndTrailingHTMLSpaces(sourceUrl).isEmpty()) { >- ResourceRequest request = ResourceRequest(m_element->document()->completeURL(sourceUrl)); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(m_element->document()->completeURL(sourceUrl), scriptCharset())); > > String crossOriginMode = m_element->fastGetAttribute(HTMLNames::crossoriginAttr); > if (!crossOriginMode.isNull()) { > m_requestUsesAccessControl = true; > StoredCredentials allowCredentials = equalIgnoringCase(crossOriginMode, "use-credentials") ? AllowStoredCredentials : DoNotAllowStoredCredentials; >- updateRequestForAccessControl(request, m_element->document()->securityOrigin(), allowCredentials); >+ updateRequestForAccessControl(request.resourceRequest(), m_element->document()->securityOrigin(), allowCredentials); > } > >- m_cachedScript = m_element->document()->cachedResourceLoader()->requestScript(request, scriptCharset()); >+ m_cachedScript = m_element->document()->cachedResourceLoader()->requestScript(request); > m_isExternalScript = true; > } > >diff --git a/Source/WebCore/html/HTMLLinkElement.cpp b/Source/WebCore/html/HTMLLinkElement.cpp >index fdc7a5cce3231af9c2244e1c9f44483b84bf0131..d0010b6496fff2e7f4fe24cf51fb53d2c13e9ccd 100644 >--- a/Source/WebCore/html/HTMLLinkElement.cpp >+++ b/Source/WebCore/html/HTMLLinkElement.cpp >@@ -220,8 +220,8 @@ void HTMLLinkElement::process() > > // Load stylesheets that are not needed for the rendering immediately with low priority. > ResourceLoadPriority priority = blocking ? ResourceLoadPriorityUnresolved : ResourceLoadPriorityVeryLow; >- ResourceRequest request(document()->completeURL(m_url)); >- m_cachedSheet = document()->cachedResourceLoader()->requestCSSStyleSheet(request, charset, priority); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(document()->completeURL(m_url)), charset, priority); >+ m_cachedSheet = document()->cachedResourceLoader()->requestCSSStyleSheet(request); > > if (m_cachedSheet) > m_cachedSheet->addClient(this); >diff --git a/Source/WebCore/loader/DocumentThreadableLoader.cpp b/Source/WebCore/loader/DocumentThreadableLoader.cpp >index 71a1ad3b197118c2ab1bcde290a3192d5c69074f..443a61303f28133007934d4e23eea881e004ad3d 100644 >--- a/Source/WebCore/loader/DocumentThreadableLoader.cpp >+++ b/Source/WebCore/loader/DocumentThreadableLoader.cpp >@@ -376,17 +376,17 @@ void DocumentThreadableLoader::loadRequest(const ResourceRequest& request, Secur > options.shouldBufferData = BufferData; > } > >- ResourceRequest newRequest(request); >+ CachedResourceLoader::CachedResourceRequest newRequest(request, options); > #if ENABLE(INSPECTOR) > if (m_actualRequest) { > // Because willSendRequest only gets called during redirects, we initialize the identifier and the first willSendRequest here. > m_preflightRequestIdentifier = m_document->frame()->page()->progress()->createUniqueIdentifier(); > ResourceResponse redirectResponse = ResourceResponse(); >- InspectorInstrumentation::willSendRequest(m_document->frame(), m_preflightRequestIdentifier, m_document->frame()->loader()->documentLoader(), newRequest, redirectResponse); >+ InspectorInstrumentation::willSendRequest(m_document->frame(), m_preflightRequestIdentifier, m_document->frame()->loader()->documentLoader(), newRequest.resourceRequest(), redirectResponse); > } > #endif > ASSERT(!m_resource); >- m_resource = m_document->cachedResourceLoader()->requestRawResource(newRequest, options); >+ m_resource = m_document->cachedResourceLoader()->requestRawResource(newRequest); > if (m_resource) { > #if ENABLE(INSPECTOR) > if (m_resource->loader()) { >diff --git a/Source/WebCore/loader/ImageLoader.cpp b/Source/WebCore/loader/ImageLoader.cpp >index a6da61e6548ef07a682dcdb7c46744842768162b..df1a0f40738e0ec74adaa90987bb3edd7dd1a4b5 100644 >--- a/Source/WebCore/loader/ImageLoader.cpp >+++ b/Source/WebCore/loader/ImageLoader.cpp >@@ -177,18 +177,18 @@ void ImageLoader::updateFromElement() > // an empty string. > CachedResourceHandle<CachedImage> newImage = 0; > if (!attr.isNull() && !stripLeadingAndTrailingHTMLSpaces(attr).isEmpty()) { >- ResourceRequest request = ResourceRequest(document()->completeURL(sourceURI(attr))); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(document()->completeURL(sourceURI(attr)))); > > String crossOriginMode = client()->sourceElement()->fastGetAttribute(HTMLNames::crossoriginAttr); > if (!crossOriginMode.isNull()) { > StoredCredentials allowCredentials = equalIgnoringCase(crossOriginMode, "use-credentials") ? AllowStoredCredentials : DoNotAllowStoredCredentials; >- updateRequestForAccessControl(request, document()->securityOrigin(), allowCredentials); >+ updateRequestForAccessControl(request.resourceRequest(), document()->securityOrigin(), allowCredentials); > } > > if (m_loadManually) { > bool autoLoadOtherImages = document()->cachedResourceLoader()->autoLoadImages(); > document()->cachedResourceLoader()->setAutoLoadImages(false); >- newImage = new CachedImage(request); >+ newImage = new CachedImage(request.resourceRequest()); > newImage->setLoading(true); > newImage->setOwningCachedResourceLoader(document()->cachedResourceLoader()); > document()->cachedResourceLoader()->m_documentResources.set(newImage->url(), newImage.get()); >diff --git a/Source/WebCore/loader/LinkLoader.cpp b/Source/WebCore/loader/LinkLoader.cpp >index af25a86803c407479c10267af2667ea02ae5d2f3..a9f5915c66c835d6a375826c50923a7b48778247 100644 >--- a/Source/WebCore/loader/LinkLoader.cpp >+++ b/Source/WebCore/loader/LinkLoader.cpp >@@ -119,13 +119,13 @@ bool LinkLoader::loadLink(const LinkRelAttribute& relAttribute, const String& ty > priority = ResourceLoadPriorityLow; > type = CachedResource::LinkSubresource; > } >- ResourceRequest linkRequest(document->completeURL(href)); >+ CachedResourceLoader::CachedResourceRequest linkRequest(ResourceRequest(document->completeURL(href)), priority); > > if (m_cachedLinkResource) { > m_cachedLinkResource->removeClient(this); > m_cachedLinkResource = 0; > } >- m_cachedLinkResource = document->cachedResourceLoader()->requestLinkResource(type, linkRequest, priority); >+ m_cachedLinkResource = document->cachedResourceLoader()->requestLinkResource(type, linkRequest); > if (m_cachedLinkResource) > m_cachedLinkResource->addClient(this); > } >diff --git a/Source/WebCore/loader/TextTrackLoader.cpp b/Source/WebCore/loader/TextTrackLoader.cpp >index a9b7f960bf6d650300517cb0f963ada45e95a1fb..2c7a6d5f398c81e41f2773185da11df0f6d0c483 100644 >--- a/Source/WebCore/loader/TextTrackLoader.cpp >+++ b/Source/WebCore/loader/TextTrackLoader.cpp >@@ -153,12 +153,12 @@ bool TextTrackLoader::load(const KURL& url, const String& crossOriginMode) > > ASSERT(m_scriptExecutionContext->isDocument()); > Document* document = static_cast<Document*>(m_scriptExecutionContext); >- ResourceRequest cueRequest(document->completeURL(url)); >+ CachedResourceLoader::CachedResourceRequest cueRequest(ResourceRequest(document->completeURL(url))); > > if (!crossOriginMode.isNull()) { > m_crossOriginMode = crossOriginMode; > StoredCredentials allowCredentials = equalIgnoringCase(crossOriginMode, "use-credentials") ? AllowStoredCredentials : DoNotAllowStoredCredentials; >- updateRequestForAccessControl(cueRequest, document->securityOrigin(), allowCredentials); >+ updateRequestForAccessControl(cueRequest.resourceRequest(), document->securityOrigin(), allowCredentials); > } else { > // Cross-origin resources that are not suitably CORS-enabled may not load. > if (!document->securityOrigin()->canRequest(url)) { >diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.cpp b/Source/WebCore/loader/cache/CachedResourceLoader.cpp >index 1ffca4fc1e189a2782c4d89dec9f1a3c8ec4ed70..1e56d4a341bac964a04a97823c223bd28a7e58f1 100644 >--- a/Source/WebCore/loader/cache/CachedResourceLoader.cpp >+++ b/Source/WebCore/loader/cache/CachedResourceLoader.cpp >@@ -113,6 +113,26 @@ static const ResourceLoaderOptions& defaultCachedResourceOptions() > return options; > } > >+CachedResourceLoader::CachedResourceRequest::CachedResourceRequest(const ResourceRequest& resourceRequest, const String& charset, ResourceLoadPriority priority) >+ : m_resourceRequest(resourceRequest) >+ , m_charset(charset) >+ , m_options(defaultCachedResourceOptions()) >+ , m_priority(priority) >+{ >+} >+ >+CachedResourceLoader::CachedResourceRequest::CachedResourceRequest(const ResourceRequest& resourceRequest, const ResourceLoaderOptions& options) >+ : m_resourceRequest(resourceRequest) >+ , m_options(options) >+{ >+} >+ >+CachedResourceLoader::CachedResourceRequest::CachedResourceRequest(const ResourceRequest& resourceRequest, ResourceLoadPriority priority) >+ : m_resourceRequest(resourceRequest) >+ , m_priority(priority) >+{ >+} >+ > CachedResourceLoader::CachedResourceLoader(DocumentLoader* documentLoader) > : m_document(0) > , m_documentLoader(documentLoader) >@@ -155,56 +175,57 @@ Frame* CachedResourceLoader::frame() const > return m_documentLoader ? m_documentLoader->frame() : 0; > } > >-CachedResourceHandle<CachedImage> CachedResourceLoader::requestImage(ResourceRequest& request) >+CachedResourceHandle<CachedImage> CachedResourceLoader::requestImage(CachedResourceRequest& request) > { > if (Frame* f = frame()) { > if (f->loader()->pageDismissalEventBeingDispatched() != FrameLoader::NoDismissal) { >- KURL requestURL = request.url(); >+ KURL requestURL = request.resourceRequest().url(); > if (requestURL.isValid() && canRequest(CachedResource::ImageResource, requestURL)) > PingLoader::loadImage(f, requestURL); > return 0; > } > } >- return static_cast<CachedImage*>(requestResource(CachedResource::ImageResource, request, String(), defaultCachedResourceOptions(), ResourceLoadPriorityUnresolved, false, clientDefersImage(request.url()) ? DeferredByClient : NoDefer).get()); >+ request.setDefer(clientDefersImage(request.resourceRequest().url()) ? DeferredByClient : NoDefer); >+ return static_cast<CachedImage*>(requestResource(CachedResource::ImageResource, request).get()); > } > >-CachedResourceHandle<CachedFont> CachedResourceLoader::requestFont(ResourceRequest& request) >+CachedResourceHandle<CachedFont> CachedResourceLoader::requestFont(CachedResourceRequest& request) > { >- return static_cast<CachedFont*>(requestResource(CachedResource::FontResource, request, String(), defaultCachedResourceOptions()).get()); >+ return static_cast<CachedFont*>(requestResource(CachedResource::FontResource, request).get()); > } > > #if ENABLE(VIDEO_TRACK) >-CachedResourceHandle<CachedTextTrack> CachedResourceLoader::requestTextTrack(ResourceRequest& request) >+CachedResourceHandle<CachedTextTrack> CachedResourceLoader::requestTextTrack(CachedResourceRequest& request) > { >- return static_cast<CachedTextTrack*>(requestResource(CachedResource::TextTrackResource, request, String(), defaultCachedResourceOptions()).get()); >+ return static_cast<CachedTextTrack*>(requestResource(CachedResource::TextTrackResource, request).get()); > } > #endif > > #if ENABLE(CSS_SHADERS) >-CachedResourceHandle<CachedShader> CachedResourceLoader::requestShader(ResourceRequest& request) >+CachedResourceHandle<CachedShader> CachedResourceLoader::requestShader(CachedResourceRequest& request) > { >- return static_cast<CachedShader*>(requestResource(CachedResource::ShaderResource, request, String(), defaultCachedResourceOptions()).get()); >+ return static_cast<CachedShader*>(requestResource(CachedResource::ShaderResource, request).get()); > } > #endif > >-CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestCSSStyleSheet(ResourceRequest& request, const String& charset, ResourceLoadPriority priority) >+CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestCSSStyleSheet(CachedResourceRequest& request) > { >- return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSSStyleSheet, request, charset, defaultCachedResourceOptions(), priority).get()); >+ return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSSStyleSheet, request).get()); > } > >-CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestUserCSSStyleSheet(ResourceRequest& request, const String& charset) >+CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestUserCSSStyleSheet(CachedResourceRequest& request) > { >- KURL url = MemoryCache::removeFragmentIdentifierIfNeeded(request.url()); >+ KURL url = MemoryCache::removeFragmentIdentifierIfNeeded(request.resourceRequest().url()); > > if (CachedResource* existing = memoryCache()->resourceForURL(url)) { > if (existing->type() == CachedResource::CSSStyleSheet) > return static_cast<CachedCSSStyleSheet*>(existing); > memoryCache()->remove(existing); > } >- if (url.string() != request.url()) >- request.setURL(url); >+ if (url.string() != request.resourceRequest().url()) >+ request.resourceRequest().setURL(url); > >- CachedResourceHandle<CachedCSSStyleSheet> userSheet = new CachedCSSStyleSheet(request, charset); >+ CachedResourceHandle<CachedCSSStyleSheet> userSheet = new CachedCSSStyleSheet(request.resourceRequest(), request.charset()); > > memoryCache()->add(userSheet.get()); > // FIXME: loadResource calls setOwningCachedResourceLoader() if the resource couldn't be added to cache. Does this function need to call it, too? >@@ -214,37 +235,37 @@ CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestUserCSSSt > return userSheet; > } > >-CachedResourceHandle<CachedScript> CachedResourceLoader::requestScript(ResourceRequest& request, const String& charset) >+CachedResourceHandle<CachedScript> CachedResourceLoader::requestScript(CachedResourceRequest& request) > { >- return static_cast<CachedScript*>(requestResource(CachedResource::Script, request, charset, defaultCachedResourceOptions()).get()); >+ return static_cast<CachedScript*>(requestResource(CachedResource::Script, request).get()); > } > > #if ENABLE(XSLT) >-CachedResourceHandle<CachedXSLStyleSheet> CachedResourceLoader::requestXSLStyleSheet(ResourceRequest& request) >+CachedResourceHandle<CachedXSLStyleSheet> CachedResourceLoader::requestXSLStyleSheet(CachedResourceRequest& request) > { >- return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XSLStyleSheet, request, String(), defaultCachedResourceOptions()).get()); >+ return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XSLStyleSheet, request).get()); > } > #endif > > #if ENABLE(SVG) >-CachedResourceHandle<CachedSVGDocument> CachedResourceLoader::requestSVGDocument(ResourceRequest& request) >+CachedResourceHandle<CachedSVGDocument> CachedResourceLoader::requestSVGDocument(CachedResourceRequest& request) > { >- return static_cast<CachedSVGDocument*>(requestResource(CachedResource::SVGDocumentResource, request, String(), defaultCachedResourceOptions()).get()); >+ return static_cast<CachedSVGDocument*>(requestResource(CachedResource::SVGDocumentResource, request).get()); > } > #endif > > #if ENABLE(LINK_PREFETCH) >-CachedResourceHandle<CachedResource> CachedResourceLoader::requestLinkResource(CachedResource::Type type, ResourceRequest& request, ResourceLoadPriority priority) >+CachedResourceHandle<CachedResource> CachedResourceLoader::requestLinkResource(CachedResource::Type type, CachedResourceRequest& request) > { > ASSERT(frame()); > ASSERT(type == CachedResource::LinkPrefetch || type == CachedResource::LinkSubresource); >- return requestResource(type, request, String(), defaultCachedResourceOptions(), priority); >+ return requestResource(type, request); > } > #endif > >-CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestRawResource(ResourceRequest& request, const ResourceLoaderOptions& options) >+CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestRawResource(CachedResourceRequest& request) > { >- return static_cast<CachedRawResource*>(requestResource(CachedResource::RawResource, request, String(), options, ResourceLoadPriorityUnresolved, false).get()); >+ return static_cast<CachedRawResource*>(requestResource(CachedResource::RawResource, request).get()); > } > > bool CachedResourceLoader::checkInsecureContent(CachedResource::Type type, const KURL& url) const >@@ -402,11 +423,11 @@ bool CachedResourceLoader::canRequest(CachedResource::Type type, const KURL& url > return true; > } > >-CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(CachedResource::Type type, ResourceRequest& request, const String& charset, const ResourceLoaderOptions& options, ResourceLoadPriority priority, bool forPreload, DeferOption defer) >+CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(CachedResource::Type type, CachedResourceRequest& request) > { >- KURL url = request.url(); >+ KURL url = request.resourceRequest().url(); > >- LOG(ResourceLoading, "CachedResourceLoader::requestResource '%s', charset '%s', priority=%d, forPreload=%u", url.string().latin1().data(), charset.latin1().data(), priority, forPreload); >+ LOG(ResourceLoading, "CachedResourceLoader::requestResource '%s', charset '%s', priority=%d, forPreload=%u", url.string().latin1().data(), request.charset().latin1().data(), request.priority(), request.forPreload()); > > // If only the fragment identifiers differ, it is the same resource. > url = MemoryCache::removeFragmentIdentifierIfNeeded(url); >@@ -414,7 +435,7 @@ CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(Cache > if (!url.isValid()) > return 0; > >- if (!canRequest(type, url, forPreload)) >+ if (!canRequest(type, url, request.forPreload())) > return 0; > > if (memoryCache()->disabled()) { >@@ -428,16 +449,16 @@ CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(Cache > // See if we can use an existing resource from the cache. > CachedResourceHandle<CachedResource> resource = memoryCache()->resourceForURL(url); > >- if (request.url() != url) >- request.setURL(url); >+ if (request.resourceRequest().url() != url) >+ request.resourceRequest().setURL(url); > >- const RevalidationPolicy policy = determineRevalidationPolicy(type, request, forPreload, resource.get(), defer); >+ const RevalidationPolicy policy = determineRevalidationPolicy(type, request.resourceRequest(), request.forPreload(), resource.get(), request.defer()); > switch (policy) { > case Reload: > memoryCache()->remove(resource.get()); > // Fall through > case Load: >- resource = loadResource(type, request, charset); >+ resource = loadResource(type, request.resourceRequest(), request.charset()); > break; > case Revalidate: > resource = revalidateResource(resource.get()); >@@ -451,9 +472,9 @@ CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(Cache > if (!resource) > return 0; > >- resource->setLoadPriority(priority); >- if ((policy != Use || resource->stillNeedsLoad()) && NoDefer == defer) { >- resource->load(this, options); >+ resource->setLoadPriority(request.priority()); >+ if ((policy != Use || resource->stillNeedsLoad()) && NoDefer == request.defer()) { >+ resource->load(this, request.options()); > > // We don't support immediate loads, but we do support immediate failure. > if (resource->errorOccurred()) { >@@ -463,8 +484,8 @@ CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(Cache > } > } > >- if (!request.url().protocolIsData()) >- m_validatedURLs.add(request.url()); >+ if (!request.resourceRequest().url().protocolIsData()) >+ m_validatedURLs.add(request.resourceRequest().url()); > > ASSERT(resource->url() == url.string()); > m_documentResources.set(resource->url(), resource); >@@ -793,7 +814,10 @@ void CachedResourceLoader::requestPreload(CachedResource::Type type, ResourceReq > if (type == CachedResource::Script || type == CachedResource::CSSStyleSheet) > encoding = charset.isEmpty() ? m_document->charset() : charset; > >- CachedResourceHandle<CachedResource> resource = requestResource(type, request, encoding, defaultCachedResourceOptions(), ResourceLoadPriorityUnresolved, true); >+ CachedResourceRequest cachedResourceRequest(request); >+ cachedResourceRequest.setForPreload(true); >+ >+ CachedResourceHandle<CachedResource> resource = requestResource(type, cachedResourceRequest); > if (!resource || (m_preloads && m_preloads->contains(resource.get()))) > return; > resource->increasePreloadCount(); >diff --git a/Source/WebCore/loader/cache/CachedResourceLoader.h b/Source/WebCore/loader/cache/CachedResourceLoader.h >index 2a7985e6cb249252d8159e985e690453c6ded803..4960604737cfafe9900669f14cb4ee87c8cc6ac2 100644 >--- a/Source/WebCore/loader/cache/CachedResourceLoader.h >+++ b/Source/WebCore/loader/cache/CachedResourceLoader.h >@@ -68,30 +68,57 @@ friend class ImageLoader; > friend class ResourceCacheValidationSuppressor; > > public: >+ enum DeferOption { NoDefer, DeferredByClient }; >+ class CachedResourceRequest { >+ public: >+ explicit CachedResourceRequest(const ResourceRequest&, const String& charset = String(), ResourceLoadPriority = ResourceLoadPriorityUnresolved); >+ CachedResourceRequest(const ResourceRequest&, const ResourceLoaderOptions&); >+ CachedResourceRequest(const ResourceRequest&, ResourceLoadPriority); >+ >+ void setCharset(const String& charset) { m_charset = charset; } >+ void setDefer(CachedResourceLoader::DeferOption defer) { m_defer = defer; } >+ void setForPreload(bool forPreload) { m_forPreload = forPreload; } >+ >+ ResourceRequest& resourceRequest() { return m_resourceRequest; } >+ const ResourceRequest& resourceRequest() const { return m_resourceRequest; } >+ const String& charset() const { return m_charset; } >+ const ResourceLoaderOptions& options() const { return m_options; } >+ ResourceLoadPriority priority() const { return m_priority; } >+ bool forPreload() const { return m_forPreload; } >+ CachedResourceLoader::DeferOption defer() const { return m_defer; } >+ private: >+ ResourceRequest m_resourceRequest; >+ String m_charset; >+ ResourceLoaderOptions m_options; >+ ResourceLoadPriority m_priority; >+ bool m_forPreload; >+ CachedResourceLoader::DeferOption m_defer; >+ }; >+ > static PassRefPtr<CachedResourceLoader> create(DocumentLoader* documentLoader) { return adoptRef(new CachedResourceLoader(documentLoader)); } > ~CachedResourceLoader(); > >- CachedResourceHandle<CachedImage> requestImage(ResourceRequest&); >- CachedResourceHandle<CachedCSSStyleSheet> requestCSSStyleSheet(ResourceRequest&, const String& charset, ResourceLoadPriority = ResourceLoadPriorityUnresolved); >- CachedResourceHandle<CachedCSSStyleSheet> requestUserCSSStyleSheet(ResourceRequest&, const String& charset); >- CachedResourceHandle<CachedScript> requestScript(ResourceRequest&, const String& charset); >- CachedResourceHandle<CachedFont> requestFont(ResourceRequest&); >- CachedResourceHandle<CachedRawResource> requestRawResource(ResourceRequest&, const ResourceLoaderOptions&); >+ CachedResourceHandle<CachedImage> requestImage(CachedResourceRequest&); >+ CachedResourceHandle<CachedCSSStyleSheet> requestCSSStyleSheet(CachedResourceRequest&); >+ CachedResourceHandle<CachedCSSStyleSheet> requestUserCSSStyleSheet(CachedResourceRequest&); >+ CachedResourceHandle<CachedScript> requestScript(CachedResourceRequest&); >+ CachedResourceHandle<CachedFont> requestFont(CachedResourceRequest&); >+ CachedResourceHandle<CachedRawResource> requestRawResource(CachedResourceRequest&); > > #if ENABLE(SVG) >- CachedResourceHandle<CachedSVGDocument> requestSVGDocument(ResourceRequest&); >+ CachedResourceHandle<CachedSVGDocument> requestSVGDocument(CachedResourceRequest&); > #endif > #if ENABLE(XSLT) >- CachedResourceHandle<CachedXSLStyleSheet> requestXSLStyleSheet(ResourceRequest&); >+ CachedResourceHandle<CachedXSLStyleSheet> requestXSLStyleSheet(CachedResourceRequest&); > #endif > #if ENABLE(LINK_PREFETCH) >- CachedResourceHandle<CachedResource> requestLinkResource(CachedResource::Type, ResourceRequest&, ResourceLoadPriority = ResourceLoadPriorityUnresolved); >+ CachedResourceHandle<CachedResource> requestLinkResource(CachedResource::Type, CachedResourceRequest&); > #endif > #if ENABLE(VIDEO_TRACK) >- CachedResourceHandle<CachedTextTrack> requestTextTrack(ResourceRequest&); >+ CachedResourceHandle<CachedTextTrack> requestTextTrack(CachedResourceRequest&); > #endif > #if ENABLE(CSS_SHADERS) >- CachedResourceHandle<CachedShader> requestShader(ResourceRequest&); >+ CachedResourceHandle<CachedShader> requestShader(CachedResourceRequest&); > #endif > > // Logs an access denied message to the console for the specified URL. >@@ -138,8 +165,7 @@ public: > private: > explicit CachedResourceLoader(DocumentLoader*); > >- enum DeferOption { NoDefer, DeferredByClient }; >- CachedResourceHandle<CachedResource> requestResource(CachedResource::Type, ResourceRequest&, const String& charset, const ResourceLoaderOptions&, ResourceLoadPriority = ResourceLoadPriorityUnresolved, bool isPreload = false, DeferOption = NoDefer); >+ CachedResourceHandle<CachedResource> requestResource(CachedResource::Type, CachedResourceRequest&); > CachedResourceHandle<CachedResource> revalidateResource(CachedResource*); > CachedResourceHandle<CachedResource> loadResource(CachedResource::Type, ResourceRequest&, const String& charset); > void requestPreload(CachedResource::Type, ResourceRequest&, const String& charset); >diff --git a/Source/WebCore/loader/icon/IconLoader.cpp b/Source/WebCore/loader/icon/IconLoader.cpp >index 63bc0ea1ca2174da80e15ca23de88905b145b534..2a3f73f3f66743571606516c468bf6416ba46c70 100644 >--- a/Source/WebCore/loader/icon/IconLoader.cpp >+++ b/Source/WebCore/loader/icon/IconLoader.cpp >@@ -59,14 +59,14 @@ void IconLoader::startLoading() > if (m_resource || !m_frame->document()) > return; > >- ResourceRequest resourceRequest(m_frame->loader()->icon()->url()); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(m_frame->loader()->icon()->url()), ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck)); >+ > #if PLATFORM(BLACKBERRY) >- resourceRequest.setTargetType(ResourceRequest::TargetIsFavicon); >+ request.resourceRequest().setTargetType(ResourceRequest::TargetIsFavicon); > #endif >- resourceRequest.setPriority(ResourceLoadPriorityLow); >+ request.resourceRequest().setPriority(ResourceLoadPriorityLow); > >- m_resource = m_frame->document()->cachedResourceLoader()->requestRawResource(resourceRequest, >- ResourceLoaderOptions(SendCallbacks, SniffContent, BufferData, DoNotAllowStoredCredentials, DoNotAskClientForCrossOriginCredentials, DoSecurityCheck)); >+ m_resource = m_frame->document()->cachedResourceLoader()->requestRawResource(request); > if (m_resource) > m_resource->addClient(this); > else >diff --git a/Source/WebCore/svg/SVGFEImageElement.cpp b/Source/WebCore/svg/SVGFEImageElement.cpp >index 7635738fde184d1e1df48eb6fb36aecaa235d5fb..bef271f169ead698bc12a936b0bac3574f3c780c 100644 >--- a/Source/WebCore/svg/SVGFEImageElement.cpp >+++ b/Source/WebCore/svg/SVGFEImageElement.cpp >@@ -80,7 +80,7 @@ void SVGFEImageElement::clearResourceReferences() > > void SVGFEImageElement::requestImageResource() > { >- ResourceRequest request(ownerDocument()->completeURL(href())); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(ownerDocument()->completeURL(href()))); > m_cachedImage = document()->cachedResourceLoader()->requestImage(request); > > if (m_cachedImage) >diff --git a/Source/WebCore/svg/SVGFontFaceUriElement.cpp b/Source/WebCore/svg/SVGFontFaceUriElement.cpp >index f61053772b622fafe94750e099348e6770b7e807..b4869a6743cfe3b26ceefe717ea55f5a0b89fe76 100644 >--- a/Source/WebCore/svg/SVGFontFaceUriElement.cpp >+++ b/Source/WebCore/svg/SVGFontFaceUriElement.cpp >@@ -96,7 +96,7 @@ void SVGFontFaceUriElement::loadFont() > const AtomicString& href = getAttribute(XLinkNames::hrefAttr); > if (!href.isNull()) { > CachedResourceLoader* cachedResourceLoader = document()->cachedResourceLoader(); >- ResourceRequest request(document()->completeURL(href)); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(document()->completeURL(href))); > m_cachedFont = cachedResourceLoader->requestFont(request); > if (m_cachedFont) { > m_cachedFont->addClient(this); >diff --git a/Source/WebCore/svg/SVGUseElement.cpp b/Source/WebCore/svg/SVGUseElement.cpp >index d19ea195df20a2ef639f6a1e99a20b2582b950e1..5834855e29f2b0b8f77f6712aa08c1f14252a928 100755 >--- a/Source/WebCore/svg/SVGUseElement.cpp >+++ b/Source/WebCore/svg/SVGUseElement.cpp >@@ -254,7 +254,7 @@ void SVGUseElement::svgAttributeChanged(const QualifiedName& attrName) > if (isExternalReference) { > KURL url = document()->completeURL(href()); > if (url.hasFragmentIdentifier()) { >- ResourceRequest request(url.string()); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(url.string())); > m_cachedDocument = document()->cachedResourceLoader()->requestSVGDocument(request); > if (m_cachedDocument) > m_cachedDocument->addClient(this); >diff --git a/Source/WebCore/xml/XSLImportRule.cpp b/Source/WebCore/xml/XSLImportRule.cpp >index 0a1770d0345a8a1fc83d7b7fb2d442d2ba39eb1f..a7ab08bc6af728ecffa3c67dafaf79152dc16676 100644 >--- a/Source/WebCore/xml/XSLImportRule.cpp >+++ b/Source/WebCore/xml/XSLImportRule.cpp >@@ -98,7 +98,7 @@ void XSLImportRule::loadSheet() > return; > } > >- ResourceRequest request(cachedResourceLoader->document()->completeURL(absHref)); >+ CachedResourceLoader::CachedResourceRequest request(ResourceRequest(cachedResourceLoader->document()->completeURL(absHref))); > m_cachedSheet = cachedResourceLoader->requestXSLStyleSheet(request); > > if (m_cachedSheet) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 99736
:
169450
|
169525
|
169668
|
169679
|
169698
|
169726
|
169730
|
169740
|
169741
|
169744
|
169776
|
169777
|
169809
|
169810