| Index: Source/core/loader/DocumentLoader.cpp
|
| diff --git a/Source/core/loader/DocumentLoader.cpp b/Source/core/loader/DocumentLoader.cpp
|
| index c5dbd81bee9313d410e27146666535a8dd3e82f3..3bb6bc12e553dd7582c8914acb5d3ee8c7cfff8c 100644
|
| --- a/Source/core/loader/DocumentLoader.cpp
|
| +++ b/Source/core/loader/DocumentLoader.cpp
|
| @@ -803,27 +803,31 @@ bool DocumentLoader::maybeCreateArchive()
|
| return true;
|
| }
|
|
|
| -void DocumentLoader::setArchive(PassRefPtr<MHTMLArchive> archive)
|
| -{
|
| - m_archive = archive;
|
| - addAllArchiveResources(m_archive.get());
|
| -}
|
| -
|
| void DocumentLoader::addAllArchiveResources(MHTMLArchive* archive)
|
| {
|
| + ASSERT(archive);
|
| if (!m_archiveResourceCollection)
|
| m_archiveResourceCollection = adoptPtr(new ArchiveResourceCollection);
|
| -
|
| - ASSERT(archive);
|
| - if (!archive)
|
| - return;
|
| -
|
| m_archiveResourceCollection->addAllResources(archive);
|
| }
|
|
|
| -PassRefPtr<MHTMLArchive> DocumentLoader::popArchiveForSubframe(const String& frameName, const KURL& url)
|
| +void DocumentLoader::prepareSubframeArchiveLoadIfNeeded()
|
| {
|
| - return m_archiveResourceCollection ? m_archiveResourceCollection->popSubframeArchive(frameName, url) : PassRefPtr<MHTMLArchive>(0);
|
| + if (!m_frame->tree()->parent())
|
| + return;
|
| +
|
| + ArchiveResourceCollection* parentCollection = m_frame->tree()->parent()->loader()->documentLoader()->m_archiveResourceCollection.get();
|
| + if (!parentCollection)
|
| + return;
|
| +
|
| + m_archive = parentCollection->popSubframeArchive(m_frame->tree()->uniqueName(), m_request.url());
|
| +
|
| + if (!m_archive)
|
| + return;
|
| + addAllArchiveResources(m_archive.get());
|
| +
|
| + ArchiveResource* mainResource = m_archive->mainResource();
|
| + m_substituteData = SubstituteData(mainResource->data(), mainResource->mimeType(), mainResource->textEncoding(), KURL());
|
| }
|
|
|
| void DocumentLoader::clearArchiveResources()
|
| @@ -1059,6 +1063,7 @@ void DocumentLoader::startLoadingMainResource()
|
| return;
|
|
|
| m_applicationCacheHost->willStartLoadingMainResource(m_request);
|
| + prepareSubframeArchiveLoadIfNeeded();
|
|
|
| if (m_substituteData.isValid()) {
|
| m_identifierForLoadWithoutResourceLoader = createUniqueIdentifier();
|
|
|