Chromium Code Reviews| Index: Source/core/loader/DocumentLoader.cpp |
| diff --git a/Source/core/loader/DocumentLoader.cpp b/Source/core/loader/DocumentLoader.cpp |
| index 81db5347980b3047f6c6f2213481f8e89743b261..04ffea3e9eff86698a3afda3b262519acae0a9d9 100644 |
| --- a/Source/core/loader/DocumentLoader.cpp |
| +++ b/Source/core/loader/DocumentLoader.cpp |
| @@ -103,7 +103,6 @@ DocumentLoader::DocumentLoader(const ResourceRequest& req, const SubstituteData& |
| , m_isClientRedirect(false) |
| , m_isLoadingMultipartContent(false) |
| , m_wasOnloadHandled(false) |
| - , m_substituteResourceDeliveryTimer(this, &DocumentLoader::substituteResourceDeliveryTimerFired) |
| , m_loadingMainResource(false) |
| , m_timeOfLastDataReceived(0.0) |
| , m_identifierForLoadWithoutResourceLoader(0) |
| @@ -690,8 +689,6 @@ void DocumentLoader::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const |
| info.addMember(m_originalRequestCopy, "originalRequestCopy"); |
| info.addMember(m_request, "request"); |
| info.addMember(m_response, "response"); |
| - info.addMember(m_pendingSubstituteResources, "pendingSubstituteResources"); |
| - info.addMember(m_substituteResourceDeliveryTimer, "substituteResourceDeliveryTimer"); |
| info.addMember(m_archiveResourceCollection, "archiveResourceCollection"); |
| info.addMember(m_archive, "archive"); |
| info.addMember(m_resourcesClientKnowsAbout, "resourcesClientKnowsAbout"); |
| @@ -839,96 +836,23 @@ void DocumentLoader::prepareSubframeArchiveLoadIfNeeded() |
| void DocumentLoader::clearArchiveResources() |
| { |
| m_archiveResourceCollection.clear(); |
| - m_substituteResourceDeliveryTimer.stop(); |
| } |
| -ArchiveResource* DocumentLoader::archiveResourceForURL(const KURL& url) const |
| +bool DocumentLoader::scheduleArchiveLoad(CachedResource* cachedResource, const ResourceRequest& request) |
| { |
| - if (!m_archiveResourceCollection) |
| - return 0; |
| - |
| - ArchiveResource* resource = m_archiveResourceCollection->archiveResourceForURL(url); |
| - |
| - return resource && !resource->shouldIgnoreWhenUnarchiving() ? resource : 0; |
| -} |
| - |
| -void DocumentLoader::deliverSubstituteResourcesAfterDelay() |
| -{ |
| - if (m_pendingSubstituteResources.isEmpty()) |
| - return; |
| - ASSERT(m_frame && m_frame->page()); |
| - if (m_frame->page()->defersLoading()) |
| - return; |
| - if (!m_substituteResourceDeliveryTimer.isActive()) |
| - m_substituteResourceDeliveryTimer.startOneShot(0); |
| -} |
| - |
| -void DocumentLoader::substituteResourceDeliveryTimerFired(Timer<DocumentLoader>*) |
| -{ |
| - if (m_pendingSubstituteResources.isEmpty()) |
| - return; |
| - ASSERT(m_frame && m_frame->page()); |
| - if (m_frame->page()->defersLoading()) |
| - return; |
| - |
| - SubstituteResourceMap copy; |
| - copy.swap(m_pendingSubstituteResources); |
| - |
| - SubstituteResourceMap::const_iterator end = copy.end(); |
| - for (SubstituteResourceMap::const_iterator it = copy.begin(); it != end; ++it) { |
| - RefPtr<ResourceLoader> loader = it->key; |
| - SubstituteResource* resource = it->value.get(); |
| - |
| - if (resource) { |
| - SharedBuffer* data = resource->data(); |
| - |
| - loader->didReceiveResponse(0, resource->response()); |
| - |
| - // Calling ResourceLoader::didReceiveResponse can end up cancelling the load, |
| - // so we need to check if the loader has reached its terminal state. |
| - if (loader->reachedTerminalState()) |
| - return; |
| - |
| - loader->didReceiveData(0, data->data(), data->size(), data->size()); |
| - |
| - // Calling ResourceLoader::didReceiveData can end up cancelling the load, |
| - // so we need to check if the loader has reached its terminal state. |
| - if (loader->reachedTerminalState()) |
| - return; |
| - |
| - loader->didFinishLoading(0, 0); |
| - } else { |
| - // A null resource means that we should fail the load. |
| - // FIXME: Maybe we should use another error here - something like "not in cache". |
| - loader->didFail(0, loader->cannotShowURLError()); |
| - } |
| - } |
| -} |
| - |
| -#ifndef NDEBUG |
| -bool DocumentLoader::isSubstituteLoadPending(ResourceLoader* loader) const |
| -{ |
| - return m_pendingSubstituteResources.contains(loader); |
| -} |
| -#endif |
| + if (!m_archive) |
| + return false; |
| -void DocumentLoader::cancelPendingSubstituteLoad(ResourceLoader* loader) |
| -{ |
| - if (m_pendingSubstituteResources.isEmpty()) |
| - return; |
| - m_pendingSubstituteResources.remove(loader); |
| - if (m_pendingSubstituteResources.isEmpty()) |
| - m_substituteResourceDeliveryTimer.stop(); |
| -} |
| + ASSERT(m_archiveResourceCollection); |
| + ArchiveResource* archiveResource = m_archiveResourceCollection->archiveResourceForURL(request.url()); |
| + ASSERT(archiveResource); |
| -bool DocumentLoader::scheduleArchiveLoad(ResourceLoader* loader, const ResourceRequest& request) |
| -{ |
| - if (ArchiveResource* resource = archiveResourceForURL(request.url())) { |
| - m_pendingSubstituteResources.set(loader, resource); |
| - deliverSubstituteResourcesAfterDelay(); |
| - return true; |
| - } |
| - return m_archive; |
| + cachedResource->setLoading(true); |
| + SharedBuffer* data = archiveResource->data(); |
| + cachedResource->responseReceived(archiveResource->response()); |
| + cachedResource->appendData(data->data(), data->size()); |
| + cachedResource->finish(); |
|
Nate Chapin
2013/05/22 23:28:46
This "loads" the ArchiveResource by directly popul
abarth-chromium
2013/05/23 17:10:07
They're probably not needed.
|
| + return true; |
| } |
| void DocumentLoader::setTitle(const StringWithDirection& title) |
| @@ -990,8 +914,6 @@ void DocumentLoader::setDefersLoading(bool defers) |
| mainResourceLoader()->setDefersLoading(defers); |
| setAllDefersLoading(m_resourceLoaders, defers); |
| - if (!defers) |
| - deliverSubstituteResourcesAfterDelay(); |
| } |
| void DocumentLoader::setMainResourceDataBufferingPolicy(DataBufferingPolicy dataBufferingPolicy) |