void CachedResourceLoader::checkForPendingPreloads() { if (m_pendingPreloads.isEmpty() || !m_document->body() || !m_document->body()->renderer()) return; while (!m_pendingPreloads.isEmpty()) { PendingPreload preload = m_pendingPreloads.takeFirst(); // Don't request preload if the resource already loaded normally (this will result in double load if the page is being reloaded with cached results ignored). if (!cachedResource(preload.m_request.url())) requestPreload(preload.m_type, preload.m_request, preload.m_charset); } m_pendingPreloads.clear(); }
void DocLoader::preload(CachedResource::Type type, const String& url, const String& charset, bool referencedFromBody) { bool hasRendering = m_doc->body() && m_doc->body()->renderer(); if (!hasRendering && (referencedFromBody || type == CachedResource::ImageResource)) { // Don't preload images or body resources before we have something to draw. This prevents // preloads from body delaying first display when bandwidth is limited. PendingPreload pendingPreload = { type, url, charset }; m_pendingPreloads.append(pendingPreload); return; } requestPreload(type, url, charset); }
void DocLoader::checkForPendingPreloads() { unsigned count = m_pendingPreloads.size(); if (!count || !m_doc->body() || !m_doc->body()->renderer()) return; for (unsigned i = 0; i < count; ++i) { PendingPreload& preload = m_pendingPreloads[i]; // Don't request preload if the resource already loaded normally (this will result in double load if the page is being reloaded with cached results ignored). if (!cachedResource(m_doc->completeURL(preload.m_url))) requestPreload(preload.m_type, preload.m_url, preload.m_charset); } m_pendingPreloads.clear(); }
void CachedResourceLoader::preload(CachedResource::Type type, ResourceRequest& request, const String& charset, bool referencedFromBody) { // FIXME: Rip this out when we are sure it is no longer necessary (even for mobile). UNUSED_PARAM(referencedFromBody); bool hasRendering = m_document->body() && m_document->body()->renderer(); bool canBlockParser = type == CachedResource::Script || type == CachedResource::CSSStyleSheet; if (!hasRendering && !canBlockParser) { // Don't preload subresources that can't block the parser before we have something to draw. // This helps prevent preloads from delaying first display when bandwidth is limited. PendingPreload pendingPreload = { type, request, charset }; m_pendingPreloads.append(pendingPreload); return; } requestPreload(type, request, charset); }
void CachedResourceLoader::preload(CachedResource::Type type, CachedResourceRequest& request, const String& charset) { bool delaySubresourceLoad = true; #if PLATFORM(IOS) || PLATFORM(CHROMIUM) delaySubresourceLoad = false; #endif #if PLATFORM(CHROMIUM) // FIXME: All ports should take advantage of this, but first must support ResourceHandle::didChangePriority(). if (type == CachedResource::ImageResource) request.setPriority(ResourceLoadPriorityVeryLow); #endif if (delaySubresourceLoad) { bool hasRendering = m_document->body() && m_document->body()->renderer(); bool canBlockParser = type == CachedResource::Script || type == CachedResource::CSSStyleSheet; if (!hasRendering && !canBlockParser) { // Don't preload subresources that can't block the parser before we have something to draw. // This helps prevent preloads from delaying first display when bandwidth is limited. PendingPreload pendingPreload = { type, request, charset }; m_pendingPreloads.append(pendingPreload); return; } } requestPreload(type, request, charset); }