diff options
Diffstat (limited to 'WebCore/loader')
-rw-r--r-- | WebCore/loader/CachedFont.cpp | 10 | ||||
-rw-r--r-- | WebCore/loader/DocumentLoader.cpp | 11 | ||||
-rw-r--r-- | WebCore/loader/DocumentLoader.h | 5 | ||||
-rw-r--r-- | WebCore/loader/DocumentThreadableLoader.cpp | 241 | ||||
-rw-r--r-- | WebCore/loader/DocumentThreadableLoader.h | 28 | ||||
-rw-r--r-- | WebCore/loader/EmptyClients.h | 4 | ||||
-rw-r--r-- | WebCore/loader/FTPDirectoryDocument.cpp | 8 | ||||
-rw-r--r-- | WebCore/loader/FTPDirectoryDocument.h | 4 | ||||
-rw-r--r-- | WebCore/loader/FrameLoader.cpp | 36 | ||||
-rw-r--r-- | WebCore/loader/FrameLoader.h | 2 | ||||
-rw-r--r-- | WebCore/loader/ImageDocument.h | 4 | ||||
-rw-r--r-- | WebCore/loader/MediaDocument.h | 13 | ||||
-rw-r--r-- | WebCore/loader/PlaceholderDocument.h | 2 | ||||
-rw-r--r-- | WebCore/loader/PluginDocument.h | 4 | ||||
-rw-r--r-- | WebCore/loader/TextDocument.h | 4 | ||||
-rw-r--r-- | WebCore/loader/ThreadableLoader.cpp | 12 | ||||
-rw-r--r-- | WebCore/loader/ThreadableLoader.h | 32 | ||||
-rw-r--r-- | WebCore/loader/WorkerThreadableLoader.cpp | 20 | ||||
-rw-r--r-- | WebCore/loader/WorkerThreadableLoader.h | 12 | ||||
-rw-r--r-- | WebCore/loader/loader.cpp | 4 |
20 files changed, 142 insertions, 314 deletions
diff --git a/WebCore/loader/CachedFont.cpp b/WebCore/loader/CachedFont.cpp index 8da746c..dfb9dd8 100644 --- a/WebCore/loader/CachedFont.cpp +++ b/WebCore/loader/CachedFont.cpp @@ -31,7 +31,7 @@ #include "CachedResourceClientWalker.h" #include "DOMImplementation.h" #include "FontPlatformData.h" -#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU) +#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) #include "FontCustomPlatformData.h" #endif #include "TextResourceDecoder.h" @@ -60,7 +60,7 @@ CachedFont::CachedFont(const String &url) CachedFont::~CachedFont() { -#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU) +#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) delete m_fontData; #endif } @@ -98,7 +98,7 @@ void CachedFont::beginLoadIfNeeded(DocLoader* dl) bool CachedFont::ensureCustomFontData() { -#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU) +#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) #if ENABLE(SVG_FONTS) ASSERT(!m_isSVGFont); #endif @@ -117,7 +117,7 @@ FontPlatformData CachedFont::platformDataFromCustomData(float size, bool bold, b if (m_externalSVGDocument) return FontPlatformData(size, bold, italic); #endif -#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU) +#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) ASSERT(m_fontData); return m_fontData->fontPlatformData(static_cast<int>(size), bold, italic, renderingMode); #else @@ -173,7 +173,7 @@ SVGFontElement* CachedFont::getSVGFontById(const String& fontName) const void CachedFont::allClientsRemoved() { -#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) || PLATFORM(HAIKU) +#if PLATFORM(CG) || PLATFORM(QT) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && (PLATFORM(WIN_OS) || PLATFORM(LINUX))) if (m_fontData) { delete m_fontData; m_fontData = 0; diff --git a/WebCore/loader/DocumentLoader.cpp b/WebCore/loader/DocumentLoader.cpp index 2c170d0..4ec69a7 100644 --- a/WebCore/loader/DocumentLoader.cpp +++ b/WebCore/loader/DocumentLoader.cpp @@ -148,6 +148,7 @@ DocumentLoader::DocumentLoader(const ResourceRequest& req, const SubstituteData& , m_gotFirstByte(false) , m_primaryLoadComplete(false) , m_isClientRedirect(false) + , m_loadingFromCachedPage(false) , m_stopRecordingResponses(false) , m_substituteResourceDeliveryTimer(this, &DocumentLoader::substituteResourceDeliveryTimerFired) , m_didCreateGlobalHistoryEntry(false) @@ -696,6 +697,16 @@ bool DocumentLoader::urlForHistoryReflectsFailure() const return m_substituteData.isValid() || m_response.httpStatusCode() >= 400; } +void DocumentLoader::loadFromCachedPage(PassRefPtr<CachedPage> cachedPage) +{ + LOG(PageCache, "WebCorePageCache: DocumentLoader %p loading from cached page %p", this, cachedPage.get()); + + prepareForLoadStart(); + setLoadingFromCachedPage(true); + setCommitted(true); + frameLoader()->commitProvisionalLoad(cachedPage); +} + const KURL& DocumentLoader::originalURL() const { return m_originalRequestCopy.url(); diff --git a/WebCore/loader/DocumentLoader.h b/WebCore/loader/DocumentLoader.h index cd28e06..134d954 100644 --- a/WebCore/loader/DocumentLoader.h +++ b/WebCore/loader/DocumentLoader.h @@ -174,6 +174,10 @@ namespace WebCore { bool didCreateGlobalHistoryEntry() const { return m_didCreateGlobalHistoryEntry; } void setDidCreateGlobalHistoryEntry(bool didCreateGlobalHistoryEntry) { m_didCreateGlobalHistoryEntry = didCreateGlobalHistoryEntry; } + void loadFromCachedPage(PassRefPtr<CachedPage>); + void setLoadingFromCachedPage(bool loading) { m_loadingFromCachedPage = loading; } + bool isLoadingFromCachedPage() const { return m_loadingFromCachedPage; } + void setDefersLoading(bool); bool startLoadingMainResource(unsigned long identifier); @@ -260,6 +264,7 @@ namespace WebCore { bool m_gotFirstByte; bool m_primaryLoadComplete; bool m_isClientRedirect; + bool m_loadingFromCachedPage; String m_pageTitle; diff --git a/WebCore/loader/DocumentThreadableLoader.cpp b/WebCore/loader/DocumentThreadableLoader.cpp index 0d8dc18..dd5ca76 100644 --- a/WebCore/loader/DocumentThreadableLoader.cpp +++ b/WebCore/loader/DocumentThreadableLoader.cpp @@ -32,9 +32,8 @@ #include "DocumentThreadableLoader.h" #include "AuthenticationChallenge.h" -#include "CrossOriginAccessControl.h" -#include "CrossOriginPreflightResultCache.h" #include "Document.h" +#include "DocumentThreadableLoader.h" #include "Frame.h" #include "FrameLoader.h" #include "ResourceRequest.h" @@ -44,107 +43,61 @@ namespace WebCore { -void DocumentThreadableLoader::loadResourceSynchronously(Document* document, const ResourceRequest& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options) +void DocumentThreadableLoader::loadResourceSynchronously(Document* document, const ResourceRequest& request, ThreadableLoaderClient& client, StoredCredentials storedCredentials) { - // The loader will be deleted as soon as this function exits. - RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, &client, LoadSynchronously, request, options)); - ASSERT(loader->hasOneRef()); -} + bool sameOriginRequest = document->securityOrigin()->canRequest(request.url()); -PassRefPtr<DocumentThreadableLoader> DocumentThreadableLoader::create(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options) -{ - RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, client, LoadAsynchronously, request, options)); - if (!loader->m_loader) - loader = 0; - return loader.release(); -} - -DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest& request, const ThreadableLoaderOptions& options) - : m_client(client) - , m_document(document) - , m_options(options) - , m_sameOriginRequest(document->securityOrigin()->canRequest(request.url())) - , m_async(blockingBehavior == LoadAsynchronously) -{ - ASSERT(document); - ASSERT(client); + Vector<char> data; + ResourceError error; + ResourceResponse response; + unsigned long identifier = std::numeric_limits<unsigned long>::max(); + if (document->frame()) + identifier = document->frame()->loader()->loadResourceSynchronously(request, storedCredentials, error, response, data); - if (m_sameOriginRequest || m_options.crossOriginRequestPolicy == AllowCrossOriginRequests) { - bool skipCanLoadCheck = false; - loadRequest(request, skipCanLoadCheck); + // No exception for file:/// resources, see <rdar://problem/4962298>. + // Also, if we have an HTTP response, then it wasn't a network error in fact. + if (!error.isNull() && !request.url().isLocalFile() && response.httpStatusCode() <= 0) { + client.didFail(error); return; } - if (m_options.crossOriginRequestPolicy == DenyCrossOriginRequests) { - m_client->didFail(ResourceError()); + // FIXME: This check along with the one in willSendRequest is specific to xhr and + // should be made more generic. + if (sameOriginRequest && !document->securityOrigin()->canRequest(response.url())) { + client.didFailRedirectCheck(); return; } - - ASSERT(m_options.crossOriginRequestPolicy == UseAccessControl); - - if (!m_options.forcePreflight && isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields())) - makeSimpleCrossOriginAccessRequest(request); - else { - m_actualRequest.set(new ResourceRequest(request)); - m_actualRequest->setAllowHTTPCookies(m_options.allowCredentials); - - if (CrossOriginPreflightResultCache::shared().canSkipPreflight(document->securityOrigin()->toString(), request.url(), m_options.allowCredentials, request.httpMethod(), request.httpHeaderFields())) - preflightSuccess(); - else - makeCrossOriginAccessRequestWithPreflight(request); - } -} -void DocumentThreadableLoader::makeSimpleCrossOriginAccessRequest(const ResourceRequest& request) -{ - ASSERT(isSimpleCrossOriginAccessRequest(request.httpMethod(), request.httpHeaderFields())); - - // Cross-origin requests are only defined for HTTP. We would catch this when checking response headers later, but there is no reason to send a request that's guaranteed to be denied. - if (!request.url().protocolInHTTPFamily()) { - m_client->didFail(ResourceError()); - return; - } + client.didReceiveResponse(response); - // Make a copy of the passed request so that we can modify some details. - ResourceRequest crossOriginRequest(request); - crossOriginRequest.removeCredentials(); - crossOriginRequest.setAllowHTTPCookies(m_options.allowCredentials); - crossOriginRequest.setHTTPOrigin(m_document->securityOrigin()->toString()); + const char* bytes = static_cast<const char*>(data.data()); + int len = static_cast<int>(data.size()); + client.didReceiveData(bytes, len); - bool skipCanLoadCheck = false; - loadRequest(crossOriginRequest, skipCanLoadCheck); + client.didFinishLoading(identifier); } -void DocumentThreadableLoader::makeCrossOriginAccessRequestWithPreflight(const ResourceRequest& request) +PassRefPtr<DocumentThreadableLoader> DocumentThreadableLoader::create(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy) { - ResourceRequest preflightRequest(request.url()); - preflightRequest.removeCredentials(); - preflightRequest.setHTTPOrigin(m_document->securityOrigin()->toString()); - preflightRequest.setAllowHTTPCookies(m_options.allowCredentials); - preflightRequest.setHTTPMethod("OPTIONS"); - preflightRequest.setHTTPHeaderField("Access-Control-Request-Method", request.httpMethod()); - - const HTTPHeaderMap& requestHeaderFields = request.httpHeaderFields(); - - if (requestHeaderFields.size() > 0) { - Vector<UChar> headerBuffer; - HTTPHeaderMap::const_iterator it = requestHeaderFields.begin(); - append(headerBuffer, it->first); - ++it; - - HTTPHeaderMap::const_iterator end = requestHeaderFields.end(); - for (; it != end; ++it) { - headerBuffer.append(','); - headerBuffer.append(' '); - append(headerBuffer, it->first); - } - - preflightRequest.setHTTPHeaderField("Access-Control-Request-Headers", String::adopt(headerBuffer)); - preflightRequest.addHTTPHeaderFields(requestHeaderFields); - } + ASSERT(document); + RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, client, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy)); + if (!loader->m_loader) + loader = 0; + return loader.release(); +} - bool skipCanLoadCheck = false; - loadRequest(preflightRequest, skipCanLoadCheck); +DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy) + : m_client(client) + , m_document(document) + , m_allowStoredCredentials(storedCredentials == AllowStoredCredentials) + , m_sameOriginRequest(document->securityOrigin()->canRequest(request.url())) + , m_denyCrossOriginRedirect(crossOriginRedirectPolicy == DenyCrossOriginRedirect) +{ + ASSERT(document); + ASSERT(client); + ASSERT(storedCredentials == AllowStoredCredentials || storedCredentials == DoNotAllowStoredCredentials); + ASSERT(crossOriginRedirectPolicy == DenyCrossOriginRedirect || crossOriginRedirectPolicy == AllowCrossOriginRedirect); + m_loader = SubresourceLoader::create(document->frame(), this, request, false, callbacksSetting == SendLoadCallbacks, contentSniff == SniffContent); } DocumentThreadableLoader::~DocumentThreadableLoader() @@ -169,7 +122,8 @@ void DocumentThreadableLoader::willSendRequest(SubresourceLoader* loader, Resour ASSERT(m_client); ASSERT_UNUSED(loader, loader == m_loader); - if (!isAllowedRedirect(request.url())) { + // FIXME: This needs to be fixed to follow the redirect correctly even for cross-domain requests. + if (m_denyCrossOriginRedirect && !m_document->securityOrigin()->canRequest(request.url())) { RefPtr<DocumentThreadableLoader> protect(this); m_client->didFailRedirectCheck(); request = ResourceRequest(); @@ -189,31 +143,7 @@ void DocumentThreadableLoader::didReceiveResponse(SubresourceLoader* loader, con ASSERT(m_client); ASSERT_UNUSED(loader, loader == m_loader); - if (m_actualRequest) { - if (!passesAccessControlCheck(response, m_options.allowCredentials, m_document->securityOrigin())) { - preflightFailure(); - return; - } - - OwnPtr<CrossOriginPreflightResultCacheItem> preflightResult(new CrossOriginPreflightResultCacheItem(m_options.allowCredentials)); - if (!preflightResult->parse(response) - || !preflightResult->allowsCrossOriginMethod(m_actualRequest->httpMethod()) - || !preflightResult->allowsCrossOriginHeaders(m_actualRequest->httpHeaderFields())) { - preflightFailure(); - return; - } - - CrossOriginPreflightResultCache::shared().appendEntry(m_document->securityOrigin()->toString(), m_actualRequest->url(), preflightResult.release()); - } else { - if (!m_sameOriginRequest && m_options.crossOriginRequestPolicy == UseAccessControl) { - if (!passesAccessControlCheck(response, m_options.allowCredentials, m_document->securityOrigin())) { - m_client->didFail(ResourceError()); - return; - } - } - - m_client->didReceiveResponse(response); - } + m_client->didReceiveResponse(response); } void DocumentThreadableLoader::didReceiveData(SubresourceLoader* loader, const char* data, int lengthReceived) @@ -228,17 +158,7 @@ void DocumentThreadableLoader::didFinishLoading(SubresourceLoader* loader) { ASSERT(loader == m_loader); ASSERT(m_client); - didFinishLoading(loader->identifier()); -} - -void DocumentThreadableLoader::didFinishLoading(unsigned long identifier) -{ - if (m_actualRequest) { - ASSERT(!m_sameOriginRequest); - ASSERT(m_options.crossOriginRequestPolicy == UseAccessControl); - preflightSuccess(); - } else - m_client->didFinishLoading(identifier); + m_client->didFinishLoading(loader->identifier()); } void DocumentThreadableLoader::didFail(SubresourceLoader* loader, const ResourceError& error) @@ -254,7 +174,7 @@ bool DocumentThreadableLoader::getShouldUseCredentialStorage(SubresourceLoader* { ASSERT_UNUSED(loader, loader == m_loader); - if (!m_options.allowCredentials) { + if (!m_allowStoredCredentials) { shouldUseCredentialStorage = false; return true; } @@ -280,73 +200,4 @@ void DocumentThreadableLoader::receivedCancellation(SubresourceLoader* loader, c m_client->didReceiveAuthenticationCancellation(challenge.failureResponse()); } -void DocumentThreadableLoader::preflightSuccess() -{ - OwnPtr<ResourceRequest> actualRequest; - actualRequest.swap(m_actualRequest); - - bool skipCanLoadCheck = true; // ok to skip load check since we already asked about the preflight request - loadRequest(*actualRequest, skipCanLoadCheck); -} - -void DocumentThreadableLoader::preflightFailure() -{ - m_client->didFail(ResourceError()); -} - -void DocumentThreadableLoader::loadRequest(const ResourceRequest& request, bool skipCanLoadCheck) -{ - if (m_async) { - // Don't sniff content or send load callbacks for the preflight request. - bool sendLoadCallbacks = m_options.sendLoadCallbacks && !m_actualRequest; - bool sniffContent = m_options.sniffContent && !m_actualRequest; - m_loader = SubresourceLoader::create(m_document->frame(), this, request, skipCanLoadCheck, sendLoadCallbacks, sniffContent); - return; - } - - // FIXME: ThreadableLoaderOptions.sniffContent is not supported for synchronous requests. - StoredCredentials storedCredentials = m_options.allowCredentials ? AllowStoredCredentials : DoNotAllowStoredCredentials; - - Vector<char> data; - ResourceError error; - ResourceResponse response; - unsigned long identifier = std::numeric_limits<unsigned long>::max(); - if (m_document->frame()) - identifier = m_document->frame()->loader()->loadResourceSynchronously(request, storedCredentials, error, response, data); - - // No exception for file:/// resources, see <rdar://problem/4962298>. - // Also, if we have an HTTP response, then it wasn't a network error in fact. - if (!error.isNull() && !request.url().isLocalFile() && response.httpStatusCode() <= 0) { - m_client->didFail(error); - return; - } - - // FIXME: FrameLoader::loadSynchronously() does not tell us whether a redirect happened or not, so we guess by comparing the - // request and response URLs. This isn't a perfect test though, since a server can serve a redirect to the same URL that was - // requested. - if (request.url() != response.url() && !isAllowedRedirect(response.url())) { - m_client->didFailRedirectCheck(); - return; - } - - didReceiveResponse(0, response); - - const char* bytes = static_cast<const char*>(data.data()); - int len = static_cast<int>(data.size()); - didReceiveData(0, bytes, len); - - didFinishLoading(identifier); -} - -bool DocumentThreadableLoader::isAllowedRedirect(const KURL& url) -{ - if (m_options.crossOriginRequestPolicy == AllowCrossOriginRequests) - return true; - - // FIXME: We need to implement access control for each redirect. This will require some refactoring though, because the code - // that processes redirects doesn't know about access control and expects a synchronous answer from its client about whether - // a redirect should proceed. - return m_sameOriginRequest && m_document->securityOrigin()->canRequest(url); -} - } // namespace WebCore diff --git a/WebCore/loader/DocumentThreadableLoader.h b/WebCore/loader/DocumentThreadableLoader.h index 64b1a22..465475f 100644 --- a/WebCore/loader/DocumentThreadableLoader.h +++ b/WebCore/loader/DocumentThreadableLoader.h @@ -33,21 +33,19 @@ #include "SubresourceLoaderClient.h" #include "ThreadableLoader.h" -#include <wtf/OwnPtr.h> #include <wtf/PassRefPtr.h> #include <wtf/RefCounted.h> #include <wtf/RefPtr.h> namespace WebCore { class Document; - class KURL; struct ResourceRequest; class ThreadableLoaderClient; class DocumentThreadableLoader : public RefCounted<DocumentThreadableLoader>, public ThreadableLoader, private SubresourceLoaderClient { public: - static void loadResourceSynchronously(Document*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&); - static PassRefPtr<DocumentThreadableLoader> create(Document*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&); + static void loadResourceSynchronously(Document*, const ResourceRequest&, ThreadableLoaderClient&, StoredCredentials); + static PassRefPtr<DocumentThreadableLoader> create(Document*, ThreadableLoaderClient*, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy); virtual ~DocumentThreadableLoader(); virtual void cancel(); @@ -60,13 +58,7 @@ namespace WebCore { virtual void derefThreadableLoader() { deref(); } private: - enum BlockingBehavior { - LoadSynchronously, - LoadAsynchronously - }; - - DocumentThreadableLoader(Document*, ThreadableLoaderClient*, BlockingBehavior blockingBehavior, const ResourceRequest&, const ThreadableLoaderOptions& options); - + DocumentThreadableLoader(Document*, ThreadableLoaderClient*, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy); virtual void willSendRequest(SubresourceLoader*, ResourceRequest&, const ResourceResponse& redirectResponse); virtual void didSendData(SubresourceLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent); @@ -79,22 +71,12 @@ namespace WebCore { virtual void didReceiveAuthenticationChallenge(SubresourceLoader*, const AuthenticationChallenge&); virtual void receivedCancellation(SubresourceLoader*, const AuthenticationChallenge&); - void didFinishLoading(unsigned long identifier); - void makeSimpleCrossOriginAccessRequest(const ResourceRequest& request); - void makeCrossOriginAccessRequestWithPreflight(const ResourceRequest& request); - void preflightSuccess(); - void preflightFailure(); - - void loadRequest(const ResourceRequest&, bool skipCanLoadCheck); - bool isAllowedRedirect(const KURL&); - RefPtr<SubresourceLoader> m_loader; ThreadableLoaderClient* m_client; Document* m_document; - ThreadableLoaderOptions m_options; + bool m_allowStoredCredentials; bool m_sameOriginRequest; - bool m_async; - OwnPtr<ResourceRequest> m_actualRequest; // non-null during Access Control preflight checks + bool m_denyCrossOriginRedirect; }; } // namespace WebCore diff --git a/WebCore/loader/EmptyClients.h b/WebCore/loader/EmptyClients.h index 8d748a7..3f70c43 100644 --- a/WebCore/loader/EmptyClients.h +++ b/WebCore/loader/EmptyClients.h @@ -137,10 +137,6 @@ public: virtual void reachedMaxAppCacheSize(int64_t) { } #endif -#if ENABLE(NOTIFICATIONS) - virtual NotificationPresenter* notificationPresenter() const { return 0; } -#endif - virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) { } virtual void formStateDidChange(const Node*) { } diff --git a/WebCore/loader/FTPDirectoryDocument.cpp b/WebCore/loader/FTPDirectoryDocument.cpp index ee0f4ca..ace4cfe 100644 --- a/WebCore/loader/FTPDirectoryDocument.cpp +++ b/WebCore/loader/FTPDirectoryDocument.cpp @@ -118,7 +118,7 @@ void FTPDirectoryTokenizer::appendEntry(const String& filename, const String& si rowElement->setAttribute("class", "ftpDirectoryEntryRow", ec); RefPtr<Element> element = m_doc->createElement(tdTag, false); - element->appendChild(Text::create(m_doc, String(&noBreakSpace, 1)), ec); + element->appendChild(new Text(m_doc, String(&noBreakSpace, 1)), ec); if (isDirectory) element->setAttribute("class", "ftpDirectoryIcon ftpDirectoryTypeDirectory", ec); else @@ -130,12 +130,12 @@ void FTPDirectoryTokenizer::appendEntry(const String& filename, const String& si rowElement->appendChild(element, ec); element = m_doc->createElement(tdTag, false); - element->appendChild(Text::create(m_doc, date), ec); + element->appendChild(new Text(m_doc, date), ec); element->setAttribute("class", "ftpDirectoryFileDate", ec); rowElement->appendChild(element, ec); element = m_doc->createElement(tdTag, false); - element->appendChild(Text::create(m_doc, size), ec); + element->appendChild(new Text(m_doc, size), ec); element->setAttribute("class", "ftpDirectoryFileSize", ec); rowElement->appendChild(element, ec); } @@ -152,7 +152,7 @@ PassRefPtr<Element> FTPDirectoryTokenizer::createTDForFilename(const String& fil RefPtr<Element> anchorElement = m_doc->createElement(aTag, false); anchorElement->setAttribute("href", fullURL, ec); - anchorElement->appendChild(Text::create(m_doc, filename), ec); + anchorElement->appendChild(new Text(m_doc, filename), ec); RefPtr<Element> tdElement = m_doc->createElement(tdTag, false); tdElement->appendChild(anchorElement, ec); diff --git a/WebCore/loader/FTPDirectoryDocument.h b/WebCore/loader/FTPDirectoryDocument.h index b208c4e..ecc6f73 100644 --- a/WebCore/loader/FTPDirectoryDocument.h +++ b/WebCore/loader/FTPDirectoryDocument.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007, 2008, 2009 Apple Inc. All rights reserved. + * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -35,7 +35,7 @@ class FTPDirectoryDocument : public HTMLDocument { public: static PassRefPtr<FTPDirectoryDocument> create(Frame* frame) { - return adoptRef(new FTPDirectoryDocument(frame)); + return new FTPDirectoryDocument(frame); } private: diff --git a/WebCore/loader/FrameLoader.cpp b/WebCore/loader/FrameLoader.cpp index dd584ca..256c82d 100644 --- a/WebCore/loader/FrameLoader.cpp +++ b/WebCore/loader/FrameLoader.cpp @@ -89,7 +89,6 @@ #include "SecurityOrigin.h" #include "SegmentedString.h" #include "Settings.h" -#include "SharedWorkerRepository.h" #include "TextResourceDecoder.h" #include "WindowFeatures.h" #include "XMLHttpRequest.h" @@ -278,7 +277,6 @@ FrameLoader::FrameLoader(Frame* frame, FrameLoaderClient* client) , m_isDisplayingInitialEmptyDocument(false) , m_committedFirstRealDocumentLoad(false) , m_didPerformFirstNavigation(false) - , m_loadingFromCachedPage(false) #ifndef NDEBUG , m_didDispatchDidCommitLoad(false) #endif @@ -931,6 +929,9 @@ void FrameLoader::begin(const KURL& url, bool dispatch, SecurityOrigin* origin) m_frame->setDocument(document); + if (dispatch) + dispatchWindowObjectAvailable(); + document->setURL(m_URL); if (m_decoder) document->setDecoder(m_decoder.get()); @@ -940,9 +941,6 @@ void FrameLoader::begin(const KURL& url, bool dispatch, SecurityOrigin* origin) m_frame->domWindow()->setURL(document->url()); m_frame->domWindow()->setSecurityOrigin(document->securityOrigin()); - if (dispatch) - dispatchWindowObjectAvailable(); - updateFirstPartyForCookies(); Settings* settings = document->settings(); @@ -1845,9 +1843,6 @@ bool FrameLoader::canCachePageContainingThisFrame() #if ENABLE(DATABASE) && !m_frame->document()->hasOpenDatabases() #endif -#if ENABLE(SHARED_WORKERS) - && !SharedWorkerRepository::hasSharedWorkers(m_frame->document()) -#endif && !m_frame->document()->usingGeolocation() && m_currentHistoryItem && !m_quickRedirectComing @@ -1994,10 +1989,6 @@ bool FrameLoader::logCanCacheFrameDecision(int indentLevel) if (m_frame->document()->hasOpenDatabases()) { PCLOG(" -Frame has open database handles"); cannotCache = true; } #endif -#if ENABLE(SHARED_WORKERS) - if (SharedWorkerRepository::hasSharedWorkers(m_frame->document())) - { PCLOG(" -Frame has associated SharedWorkers"); cannotCache = true; } -#endif if (m_frame->document()->usingGeolocation()) { PCLOG(" -Frame uses Geolocation"); cannotCache = true; } if (!m_currentHistoryItem) @@ -2842,8 +2833,7 @@ void FrameLoader::commitProvisionalLoad(PassRefPtr<CachedPage> prpCachedPage) RefPtr<CachedPage> cachedPage = prpCachedPage; RefPtr<DocumentLoader> pdl = m_provisionalDocumentLoader; - LOG(PageCache, "WebCoreLoading %s: About to commit provisional load from previous URL '%s' to new URL '%s'", m_frame->tree()->name().string().utf8().data(), m_URL.string().utf8().data(), - pdl ? pdl->url().string().utf8().data() : "<no provisional DocumentLoader>"); + LOG(Loading, "WebCoreLoading %s: About to commit provisional load from previous URL %s", m_frame->tree()->name().string().utf8().data(), m_URL.string().utf8().data()); // Check to see if we need to cache the page we are navigating away from into the back/forward cache. // We are doing this here because we know for sure that a new page is about to be loaded. @@ -2884,7 +2874,7 @@ void FrameLoader::commitProvisionalLoad(PassRefPtr<CachedPage> prpCachedPage) if (m_loadType == FrameLoadTypeStandard && m_documentLoader->isClientRedirect()) updateHistoryForClientRedirect(); - if (m_loadingFromCachedPage) { + if (m_documentLoader->isLoadingFromCachedPage()) { m_frame->document()->documentDidBecomeActive(); // Force a layout to update view size and thereby update scrollbars. @@ -3461,7 +3451,7 @@ void FrameLoader::continueLoadAfterWillSubmitForm(PolicyAction) if (activeDocLoader && activeDocLoader->isLoadingMainResource()) return; - m_loadingFromCachedPage = false; + m_provisionalDocumentLoader->setLoadingFromCachedPage(false); unsigned long identifier = 0; @@ -4246,17 +4236,7 @@ bool FrameLoader::loadProvisionalItemFromCachedPage() RefPtr<CachedPage> cachedPage = pageCache()->get(m_provisionalHistoryItem.get()); if (!cachedPage || !cachedPage->document()) return false; - - DocumentLoader *provisionalLoader = provisionalDocumentLoader(); - LOG(PageCache, "WebCorePageCache: FrameLoader %p loading provisional DocumentLoader %p with URL '%s' from CachedPage %p", this, provisionalLoader, provisionalLoader->url().string().utf8().data(), cachedPage.get()); - - provisionalLoader->prepareForLoadStart(); - - m_loadingFromCachedPage = true; - - provisionalLoader->setCommitted(true); - commitProvisionalLoad(cachedPage); - + provisionalDocumentLoader()->loadFromCachedPage(cachedPage.release()); return true; } @@ -5131,6 +5111,8 @@ void FrameLoader::dispatchWindowObjectAvailable() m_client->windowObjectCleared(); if (Page* page = m_frame->page()) { + if (InspectorController* inspector = page->inspectorController()) + inspector->inspectedWindowScriptObjectCleared(m_frame); if (InspectorController* inspector = page->parentInspectorController()) inspector->windowScriptObjectAvailable(); } diff --git a/WebCore/loader/FrameLoader.h b/WebCore/loader/FrameLoader.h index 17013b5..5a8ee91 100644 --- a/WebCore/loader/FrameLoader.h +++ b/WebCore/loader/FrameLoader.h @@ -350,7 +350,6 @@ namespace WebCore { void setTitle(const String&); void commitProvisionalLoad(PassRefPtr<CachedPage>); - bool isLoadingFromCachedPage() const { return m_loadingFromCachedPage; } void goToItem(HistoryItem*, FrameLoadType); void saveDocumentAndScrollState(); @@ -623,7 +622,6 @@ namespace WebCore { RefPtr<HistoryItem> m_provisionalHistoryItem; bool m_didPerformFirstNavigation; - bool m_loadingFromCachedPage; #ifndef NDEBUG bool m_didDispatchDidCommitLoad; diff --git a/WebCore/loader/ImageDocument.h b/WebCore/loader/ImageDocument.h index 080b250..1bc5245 100644 --- a/WebCore/loader/ImageDocument.h +++ b/WebCore/loader/ImageDocument.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. + * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -35,7 +35,7 @@ class ImageDocument : public HTMLDocument { public: static PassRefPtr<ImageDocument> create(Frame* frame) { - return adoptRef(new ImageDocument(frame)); + return new ImageDocument(frame); } CachedImage* cachedImage(); diff --git a/WebCore/loader/MediaDocument.h b/WebCore/loader/MediaDocument.h index aa751ab..ac286f0 100644 --- a/WebCore/loader/MediaDocument.h +++ b/WebCore/loader/MediaDocument.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 Apple Inc. All Rights Reserved. + * Copyright (C) 2008 Apple Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -36,23 +36,22 @@ class MediaDocument : public HTMLDocument { public: static PassRefPtr<MediaDocument> create(Frame* frame) { - return adoptRef(new MediaDocument(frame)); + return new MediaDocument(frame); } - virtual ~MediaDocument(); + + virtual void defaultEventHandler(Event*); void mediaElementSawUnsupportedTracks(); private: MediaDocument(Frame*); + virtual ~MediaDocument(); + Timer<MediaDocument> m_replaceMediaElementTimer; virtual bool isMediaDocument() const { return true; } virtual Tokenizer* createTokenizer(); - virtual void defaultEventHandler(Event*); - void replaceMediaElementTimerFired(Timer<MediaDocument>*); - - Timer<MediaDocument> m_replaceMediaElementTimer; }; } diff --git a/WebCore/loader/PlaceholderDocument.h b/WebCore/loader/PlaceholderDocument.h index a759266..c542370 100644 --- a/WebCore/loader/PlaceholderDocument.h +++ b/WebCore/loader/PlaceholderDocument.h @@ -34,7 +34,7 @@ class PlaceholderDocument : public Document { public: static PassRefPtr<PlaceholderDocument> create(Frame* frame) { - return adoptRef(new PlaceholderDocument(frame)); + return new PlaceholderDocument(frame); } virtual void attach(); diff --git a/WebCore/loader/PluginDocument.h b/WebCore/loader/PluginDocument.h index 1d5c964..35e4038 100644 --- a/WebCore/loader/PluginDocument.h +++ b/WebCore/loader/PluginDocument.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2008, 2009Apple Inc. All rights reserved. + * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -33,7 +33,7 @@ class PluginDocument : public HTMLDocument { public: static PassRefPtr<PluginDocument> create(Frame* frame) { - return adoptRef(new PluginDocument(frame)); + return new PluginDocument(frame); } private: diff --git a/WebCore/loader/TextDocument.h b/WebCore/loader/TextDocument.h index 53e3074..c67fea5 100644 --- a/WebCore/loader/TextDocument.h +++ b/WebCore/loader/TextDocument.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2008, 2009 Apple Inc. All rights reserved. + * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -35,7 +35,7 @@ class TextDocument : public HTMLDocument { public: static PassRefPtr<TextDocument> create(Frame* frame) { - return adoptRef(new TextDocument(frame)); + return new TextDocument(frame); } private: diff --git a/WebCore/loader/ThreadableLoader.cpp b/WebCore/loader/ThreadableLoader.cpp index 720ba4e..b174af7 100644 --- a/WebCore/loader/ThreadableLoader.cpp +++ b/WebCore/loader/ThreadableLoader.cpp @@ -40,33 +40,33 @@ namespace WebCore { -PassRefPtr<ThreadableLoader> ThreadableLoader::create(ScriptExecutionContext* context, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options) +PassRefPtr<ThreadableLoader> ThreadableLoader::create(ScriptExecutionContext* context, ThreadableLoaderClient* client, const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy) { ASSERT(client); ASSERT(context); #if ENABLE(WORKERS) if (context->isWorkerContext()) - return WorkerThreadableLoader::create(static_cast<WorkerContext*>(context), client, WorkerRunLoop::defaultMode(), request, options); + return WorkerThreadableLoader::create(static_cast<WorkerContext*>(context), client, WorkerRunLoop::defaultMode(), request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy); #endif // ENABLE(WORKERS) ASSERT(context->isDocument()); - return DocumentThreadableLoader::create(static_cast<Document*>(context), client, request, options); + return DocumentThreadableLoader::create(static_cast<Document*>(context), client, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy); } -void ThreadableLoader::loadResourceSynchronously(ScriptExecutionContext* context, const ResourceRequest& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options) +void ThreadableLoader::loadResourceSynchronously(ScriptExecutionContext* context, const ResourceRequest& request, ThreadableLoaderClient& client, StoredCredentials storedCredentials) { ASSERT(context); #if ENABLE(WORKERS) if (context->isWorkerContext()) { - WorkerThreadableLoader::loadResourceSynchronously(static_cast<WorkerContext*>(context), request, client, options); + WorkerThreadableLoader::loadResourceSynchronously(static_cast<WorkerContext*>(context), request, client, storedCredentials, DenyCrossOriginRedirect); return; } #endif // ENABLE(WORKERS) ASSERT(context->isDocument()); - DocumentThreadableLoader::loadResourceSynchronously(static_cast<Document*>(context), request, client, options); + DocumentThreadableLoader::loadResourceSynchronously(static_cast<Document*>(context), request, client, storedCredentials); } } // namespace WebCore diff --git a/WebCore/loader/ThreadableLoader.h b/WebCore/loader/ThreadableLoader.h index a52bfad..1ac12cb 100644 --- a/WebCore/loader/ThreadableLoader.h +++ b/WebCore/loader/ThreadableLoader.h @@ -43,32 +43,32 @@ namespace WebCore { class ScriptExecutionContext; class ThreadableLoaderClient; + enum LoadCallbacks { + SendLoadCallbacks, + DoNotSendLoadCallbacks + }; + + enum ContentSniff { + SniffContent, + DoNotSniffContent + }; + enum StoredCredentials { AllowStoredCredentials, DoNotAllowStoredCredentials }; - - enum CrossOriginRequestPolicy { - DenyCrossOriginRequests, - UseAccessControl, - AllowCrossOriginRequests - }; - - struct ThreadableLoaderOptions { - ThreadableLoaderOptions() : sendLoadCallbacks(false), sniffContent(false), allowCredentials(false), forcePreflight(false), crossOriginRequestPolicy(DenyCrossOriginRequests) { } - bool sendLoadCallbacks; - bool sniffContent; - bool allowCredentials; // Whether HTTP credentials and cookies are sent with the request. - bool forcePreflight; // If AccessControl is used, whether to force a preflight. - CrossOriginRequestPolicy crossOriginRequestPolicy; + + enum CrossOriginRedirectPolicy { + DenyCrossOriginRedirect, + AllowCrossOriginRedirect }; // Useful for doing loader operations from any thread (not threadsafe, // just able to run on threads other than the main thread). class ThreadableLoader : public Noncopyable { public: - static void loadResourceSynchronously(ScriptExecutionContext*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&); - static PassRefPtr<ThreadableLoader> create(ScriptExecutionContext*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&); + static void loadResourceSynchronously(ScriptExecutionContext*, const ResourceRequest&, ThreadableLoaderClient&, StoredCredentials); + static PassRefPtr<ThreadableLoader> create(ScriptExecutionContext*, ThreadableLoaderClient*, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy); virtual void cancel() = 0; void ref() { refThreadableLoader(); } diff --git a/WebCore/loader/WorkerThreadableLoader.cpp b/WebCore/loader/WorkerThreadableLoader.cpp index 6819759..4d12b8d 100644 --- a/WebCore/loader/WorkerThreadableLoader.cpp +++ b/WebCore/loader/WorkerThreadableLoader.cpp @@ -53,10 +53,11 @@ namespace WebCore { static const char loadResourceSynchronouslyMode[] = "loadResourceSynchronouslyMode"; -WorkerThreadableLoader::WorkerThreadableLoader(WorkerContext* workerContext, ThreadableLoaderClient* client, const String& taskMode, const ResourceRequest& request, const ThreadableLoaderOptions& options) +WorkerThreadableLoader::WorkerThreadableLoader(WorkerContext* workerContext, ThreadableLoaderClient* client, const String& taskMode, const ResourceRequest& request, LoadCallbacks callbacksSetting, + ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy) : m_workerContext(workerContext) , m_workerClientWrapper(ThreadableLoaderClientWrapper::create(client)) - , m_bridge(*(new MainThreadBridge(m_workerClientWrapper, m_workerContext->thread()->workerLoaderProxy(), taskMode, request, options))) + , m_bridge(*(new MainThreadBridge(m_workerClientWrapper, m_workerContext->thread()->workerLoaderProxy(), taskMode, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy))) { } @@ -65,7 +66,7 @@ WorkerThreadableLoader::~WorkerThreadableLoader() m_bridge.destroy(); } -void WorkerThreadableLoader::loadResourceSynchronously(WorkerContext* workerContext, const ResourceRequest& request, ThreadableLoaderClient& client, const ThreadableLoaderOptions& options) +void WorkerThreadableLoader::loadResourceSynchronously(WorkerContext* workerContext, const ResourceRequest& request, ThreadableLoaderClient& client, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy) { WorkerRunLoop& runLoop = workerContext->thread()->runLoop(); @@ -73,7 +74,9 @@ void WorkerThreadableLoader::loadResourceSynchronously(WorkerContext* workerCont String mode = loadResourceSynchronouslyMode; mode.append(String::number(runLoop.createUniqueId())); - RefPtr<WorkerThreadableLoader> loader = WorkerThreadableLoader::create(workerContext, &client, mode, request, options); + ContentSniff contentSniff = request.url().isLocalFile() ? SniffContent : DoNotSniffContent; + RefPtr<WorkerThreadableLoader> loader = WorkerThreadableLoader::create(workerContext, &client, mode, request, DoNotSendLoadCallbacks, contentSniff, storedCredentials, crossOriginRedirectPolicy); + MessageQueueWaitResult result = MessageQueueMessageReceived; while (!loader->done() && result != MessageQueueTerminated) result = runLoop.runInMode(workerContext, mode); @@ -88,20 +91,21 @@ void WorkerThreadableLoader::cancel() } WorkerThreadableLoader::MainThreadBridge::MainThreadBridge(PassRefPtr<ThreadableLoaderClientWrapper> workerClientWrapper, WorkerLoaderProxy& loaderProxy, const String& taskMode, - const ResourceRequest& request, const ThreadableLoaderOptions& options) + const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, + CrossOriginRedirectPolicy crossOriginRedirectPolicy) : m_workerClientWrapper(workerClientWrapper) , m_loaderProxy(loaderProxy) , m_taskMode(taskMode.copy()) { ASSERT(m_workerClientWrapper.get()); - m_loaderProxy.postTaskToLoader(createCallbackTask(&MainThreadBridge::mainThreadCreateLoader, this, request, options)); + m_loaderProxy.postTaskToLoader(createCallbackTask(&MainThreadBridge::mainThreadCreateLoader, this, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy)); } WorkerThreadableLoader::MainThreadBridge::~MainThreadBridge() { } -void WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader(ScriptExecutionContext* context, MainThreadBridge* thisPtr, auto_ptr<CrossThreadResourceRequestData> requestData, ThreadableLoaderOptions options) +void WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader(ScriptExecutionContext* context, MainThreadBridge* thisPtr, auto_ptr<CrossThreadResourceRequestData> requestData, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy) { ASSERT(isMainThread()); ASSERT(context->isDocument()); @@ -113,7 +117,7 @@ void WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader(ScriptExec // FIXME: If the a site requests a local resource, then this will return a non-zero value but the sync path // will return a 0 value. Either this should return 0 or the other code path should do a callback with // a failure. - thisPtr->m_mainThreadLoader = ThreadableLoader::create(context, thisPtr, *request, options); + thisPtr->m_mainThreadLoader = ThreadableLoader::create(context, thisPtr, *request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy); ASSERT(thisPtr->m_mainThreadLoader); } diff --git a/WebCore/loader/WorkerThreadableLoader.h b/WebCore/loader/WorkerThreadableLoader.h index 230c77d..8b11b70 100644 --- a/WebCore/loader/WorkerThreadableLoader.h +++ b/WebCore/loader/WorkerThreadableLoader.h @@ -55,10 +55,10 @@ namespace WebCore { class WorkerThreadableLoader : public RefCounted<WorkerThreadableLoader>, public ThreadableLoader { public: - static void loadResourceSynchronously(WorkerContext*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&); - static PassRefPtr<WorkerThreadableLoader> create(WorkerContext* workerContext, ThreadableLoaderClient* client, const String& taskMode, const ResourceRequest& request, const ThreadableLoaderOptions& options) + static void loadResourceSynchronously(WorkerContext*, const ResourceRequest&, ThreadableLoaderClient&, StoredCredentials, CrossOriginRedirectPolicy); + static PassRefPtr<WorkerThreadableLoader> create(WorkerContext* workerContext, ThreadableLoaderClient* client, const String& taskMode, const ResourceRequest& request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, CrossOriginRedirectPolicy crossOriginRedirectPolicy) { - return adoptRef(new WorkerThreadableLoader(workerContext, client, taskMode, request, options)); + return adoptRef(new WorkerThreadableLoader(workerContext, client, taskMode, request, callbacksSetting, contentSniff, storedCredentials, crossOriginRedirectPolicy)); } ~WorkerThreadableLoader(); @@ -97,7 +97,7 @@ namespace WebCore { class MainThreadBridge : ThreadableLoaderClient { public: // All executed on the worker context's thread. - MainThreadBridge(PassRefPtr<ThreadableLoaderClientWrapper>, WorkerLoaderProxy&, const String& taskMode, const ResourceRequest&, const ThreadableLoaderOptions&); + MainThreadBridge(PassRefPtr<ThreadableLoaderClientWrapper>, WorkerLoaderProxy&, const String& taskMode, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy); void cancel(); void destroy(); @@ -109,7 +109,7 @@ namespace WebCore { static void mainThreadDestroy(ScriptExecutionContext*, MainThreadBridge*); ~MainThreadBridge(); - static void mainThreadCreateLoader(ScriptExecutionContext*, MainThreadBridge*, std::auto_ptr<CrossThreadResourceRequestData>, ThreadableLoaderOptions); + static void mainThreadCreateLoader(ScriptExecutionContext*, MainThreadBridge*, std::auto_ptr<CrossThreadResourceRequestData>, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy); static void mainThreadCancel(ScriptExecutionContext*, MainThreadBridge*); virtual void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent); virtual void didReceiveResponse(const ResourceResponse&); @@ -133,7 +133,7 @@ namespace WebCore { String m_taskMode; }; - WorkerThreadableLoader(WorkerContext*, ThreadableLoaderClient*, const String& taskMode, const ResourceRequest&, const ThreadableLoaderOptions&); + WorkerThreadableLoader(WorkerContext*, ThreadableLoaderClient*, const String& taskMode, const ResourceRequest&, LoadCallbacks, ContentSniff, StoredCredentials, CrossOriginRedirectPolicy); RefPtr<WorkerContext> m_workerContext; RefPtr<ThreadableLoaderClientWrapper> m_workerClientWrapper; diff --git a/WebCore/loader/loader.cpp b/WebCore/loader/loader.cpp index 4ab4f34..65d15a5 100644 --- a/WebCore/loader/loader.cpp +++ b/WebCore/loader/loader.cpp @@ -355,7 +355,7 @@ void Loader::Host::didFinishLoading(SubresourceLoader* loader) DocLoader* docLoader = request->docLoader(); // Prevent the document from being destroyed before we are done with // the docLoader that it will delete when the document gets deleted. - RefPtr<Document> protector(docLoader->doc()); + DocPtr<Document> protector(docLoader->doc()); if (!request->isMultipart()) docLoader->decrementRequestCount(); @@ -403,7 +403,7 @@ void Loader::Host::didFail(SubresourceLoader* loader, bool cancelled) DocLoader* docLoader = request->docLoader(); // Prevent the document from being destroyed before we are done with // the docLoader that it will delete when the document gets deleted. - RefPtr<Document> protector(docLoader->doc()); + DocPtr<Document> protector(docLoader->doc()); if (!request->isMultipart()) docLoader->decrementRequestCount(); |