From: ossy@webkit.org Date: Wed, 28 Sep 2011 19:55:44 +0000 (+0000) Subject: Fix a regression in r96060. ResourceLoader shouldn't get X-Git-Tag: 070512121124~23438 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e555c49235ef84ae0d699cc9724a64e92cdc3110;p=profile%2Fivi%2Fwebkit-efl.git Fix a regression in r96060. ResourceLoader shouldn't get initialized with a null DocumentLoader. https://bugs.webkit.org/show_bug.cgi?id=69004 Patch by Nate Chapin on 2011-09-28 Reviewed by Csaba Osztrogonác. This should fix a debug crash in some platforms in plugins/js-from-destroy.html * loader/ResourceLoader.cpp: (WebCore::ResourceLoader::init): Move the activeDocumentLoader() null checks back to SubresouceLoader::create(). * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::create): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@96249 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index 6741f3c..1ed784e 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,20 @@ +2011-09-28 Nate Chapin + + Fix a regression in r96060. ResourceLoader shouldn't get + initialized with a null DocumentLoader. + https://bugs.webkit.org/show_bug.cgi?id=69004 + + Reviewed by Csaba Osztrogonác. + + This should fix a debug crash in some platforms in + plugins/js-from-destroy.html + + * loader/ResourceLoader.cpp: + (WebCore::ResourceLoader::init): Move the activeDocumentLoader() null checks back + to SubresouceLoader::create(). + * loader/SubresourceLoader.cpp: + (WebCore::SubresourceLoader::create): + 2011-09-28 Adam Barth CSP doesn't work for a wide variety of cases diff --git a/Source/WebCore/loader/ResourceLoader.cpp b/Source/WebCore/loader/ResourceLoader.cpp index 5e715f4..8f23387 100644 --- a/Source/WebCore/loader/ResourceLoader.cpp +++ b/Source/WebCore/loader/ResourceLoader.cpp @@ -113,12 +113,6 @@ bool ResourceLoader::init(const ResourceRequest& r) ResourceRequest clientRequest(r); - FrameLoader* frameLoader = m_frame->loader(); - if (m_options.securityCheck == DoSecurityCheck && (frameLoader->state() == FrameStateProvisional || !frameLoader->activeDocumentLoader() || frameLoader->activeDocumentLoader()->isStopping())) { - releaseResources(); - return false; - } - if (m_options.securityCheck == DoSecurityCheck && !m_frame->document()->securityOrigin()->canDisplay(clientRequest.url())) { FrameLoader::reportLocalLoadFailed(m_frame.get(), clientRequest.url().string()); releaseResources(); diff --git a/Source/WebCore/loader/SubresourceLoader.cpp b/Source/WebCore/loader/SubresourceLoader.cpp index 89ccb42..b2f76d2 100644 --- a/Source/WebCore/loader/SubresourceLoader.cpp +++ b/Source/WebCore/loader/SubresourceLoader.cpp @@ -66,7 +66,10 @@ PassRefPtr SubresourceLoader::create(Frame* frame, Subresourc if (!frame) return 0; - FrameLoader* fl = frame->loader(); + FrameLoader* frameLoader = frame->loader(); + if (options.securityCheck == DoSecurityCheck && (frameLoader->state() == FrameStateProvisional || !frameLoader->activeDocumentLoader() || frameLoader->activeDocumentLoader()->isStopping())) + return 0; + ResourceRequest newRequest = request; // Note: We skip the Content-Security-Policy check here because we check @@ -76,8 +79,8 @@ PassRefPtr SubresourceLoader::create(Frame* frame, Subresourc String outgoingReferrer; String outgoingOrigin; if (request.httpReferrer().isNull()) { - outgoingReferrer = fl->outgoingReferrer(); - outgoingOrigin = fl->outgoingOrigin(); + outgoingReferrer = frameLoader->outgoingReferrer(); + outgoingOrigin = frameLoader->outgoingOrigin(); } else { outgoingReferrer = request.httpReferrer(); outgoingOrigin = SecurityOrigin::createFromString(outgoingReferrer)->toString(); @@ -89,7 +92,7 @@ PassRefPtr SubresourceLoader::create(Frame* frame, Subresourc newRequest.setHTTPReferrer(outgoingReferrer); FrameLoader::addHTTPOriginIfNeeded(newRequest, outgoingOrigin); - fl->addExtraFieldsToSubresourceRequest(newRequest); + frameLoader->addExtraFieldsToSubresourceRequest(newRequest); RefPtr subloader(adoptRef(new SubresourceLoader(frame, client, options))); if (!subloader->init(newRequest))