HTMLResourcePreloader.cpp [plain text]
#include "config.h"
#include "HTMLResourcePreloader.h"
#include "CachedResourceLoader.h"
#include "Document.h"
namespace WebCore {
bool PreloadRequest::isSafeToSendToAnotherThread() const
{
return m_initiator.isSafeToSendToAnotherThread()
&& m_charset.isSafeToSendToAnotherThread()
&& m_resourceURL.isSafeToSendToAnotherThread()
&& m_baseURL.isSafeToSendToAnotherThread();
}
KURL PreloadRequest::completeURL(Document* document)
{
return document->completeURL(m_resourceURL, m_baseURL.isEmpty() ? document->url() : m_baseURL);
}
CachedResourceRequest PreloadRequest::resourceRequest(Document* document)
{
#if PLATFORM(IOS)
ASSERT(isMainThread() || pthread_main_np());
#else
ASSERT(isMainThread());
#endif
CachedResourceRequest request(ResourceRequest(completeURL(document)));
request.setInitiator(m_initiator);
if (m_resourceType == CachedResource::Script)
request.mutableResourceRequest().setAllowCookies(m_crossOriginModeAllowsCookies);
return request;
}
void HTMLResourcePreloader::takeAndPreload(PreloadRequestStream& r)
{
PreloadRequestStream requests;
requests.swap(r);
for (PreloadRequestStream::iterator it = requests.begin(); it != requests.end(); ++it)
preload(it->release());
}
void HTMLResourcePreloader::preload(PassOwnPtr<PreloadRequest> preload)
{
CachedResourceRequest request = preload->resourceRequest(m_document);
m_document->cachedResourceLoader()->preload(preload->resourceType(), request, preload->charset());
}
}