+2011-09-28 Nate Chapin <japhet@chromium.org>
+
+ 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 <abarth@webkit.org>
CSP doesn't work for a wide variety of cases
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();
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
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();
newRequest.setHTTPReferrer(outgoingReferrer);
FrameLoader::addHTTPOriginIfNeeded(newRequest, outgoingOrigin);
- fl->addExtraFieldsToSubresourceRequest(newRequest);
+ frameLoader->addExtraFieldsToSubresourceRequest(newRequest);
RefPtr<SubresourceLoader> subloader(adoptRef(new SubresourceLoader(frame, client, options)));
if (!subloader->init(newRequest))