Index: Source/platform/mhtml/MHTMLArchive.cpp |
diff --git a/Source/platform/mhtml/MHTMLArchive.cpp b/Source/platform/mhtml/MHTMLArchive.cpp |
index fe1ecc39b2080e043e174b9b53cb1c837f2daf7d..5544951ab5d3a63476822a6506e99f9cdbe72b4a 100644 |
--- a/Source/platform/mhtml/MHTMLArchive.cpp |
+++ b/Source/platform/mhtml/MHTMLArchive.cpp |
@@ -35,6 +35,7 @@ |
#include "platform/MIMETypeRegistry.h" |
#include "platform/SerializedResource.h" |
#include "platform/SharedBuffer.h" |
+#include "platform/mhtml/ArchiveResource.h" |
#include "platform/mhtml/MHTMLParser.h" |
#include "platform/text/QuotedPrintable.h" |
#include "platform/weborigin/SchemeRegistry.h" |
@@ -86,29 +87,31 @@ MHTMLArchive::MHTMLArchive() |
MHTMLArchive::~MHTMLArchive() |
{ |
+#if !ENABLE(OILPAN) |
// Because all frames know about each other we need to perform a deep clearing of the archives graph. |
clearAllSubframeArchives(); |
+#endif |
} |
-PassRefPtr<MHTMLArchive> MHTMLArchive::create() |
+PassRefPtrWillBeRawPtr<MHTMLArchive> MHTMLArchive::create() |
{ |
- return adoptRef(new MHTMLArchive); |
+ return adoptRefWillBeNoop(new MHTMLArchive); |
} |
-PassRefPtr<MHTMLArchive> MHTMLArchive::create(const KURL& url, SharedBuffer* data) |
+PassRefPtrWillBeRawPtr<MHTMLArchive> MHTMLArchive::create(const KURL& url, SharedBuffer* data) |
{ |
// For security reasons we only load MHTML pages from local URLs. |
if (!SchemeRegistry::shouldTreatURLSchemeAsLocal(url.protocol())) |
return nullptr; |
MHTMLParser parser(data); |
- RefPtr<MHTMLArchive> mainArchive = parser.parseArchive(); |
+ RefPtrWillBeRawPtr<MHTMLArchive> mainArchive = parser.parseArchive(); |
if (!mainArchive) |
return nullptr; // Invalid MHTML file. |
// Since MHTML is a flat format, we need to make all frames aware of all resources. |
for (size_t i = 0; i < parser.frameCount(); ++i) { |
- RefPtr<MHTMLArchive> archive = parser.frameAt(i); |
+ RefPtrWillBeRawPtr<MHTMLArchive> archive = parser.frameAt(i); |
for (size_t j = 1; j < parser.frameCount(); ++j) { |
if (i != j) |
archive->addSubframeArchive(parser.frameAt(j)); |
@@ -214,15 +217,16 @@ PassRefPtr<SharedBuffer> MHTMLArchive::generateMHTMLData(const Vector<Serialized |
return mhtmlData.release(); |
} |
+#if !ENABLE(OILPAN) |
void MHTMLArchive::clearAllSubframeArchives() |
{ |
- Vector<RefPtr<MHTMLArchive> > clearedArchives; |
+ SubFrameArchives clearedArchives; |
clearAllSubframeArchivesImpl(&clearedArchives); |
} |
-void MHTMLArchive::clearAllSubframeArchivesImpl(Vector<RefPtr<MHTMLArchive> >* clearedArchives) |
+void MHTMLArchive::clearAllSubframeArchivesImpl(SubFrameArchives* clearedArchives) |
{ |
- for (Vector<RefPtr<MHTMLArchive> >::iterator it = m_subframeArchives.begin(); it != m_subframeArchives.end(); ++it) { |
+ for (SubFrameArchives::iterator it = m_subframeArchives.begin(); it != m_subframeArchives.end(); ++it) { |
if (!clearedArchives->contains(*it)) { |
clearedArchives->append(*it); |
(*it)->clearAllSubframeArchivesImpl(clearedArchives); |
@@ -230,5 +234,28 @@ void MHTMLArchive::clearAllSubframeArchivesImpl(Vector<RefPtr<MHTMLArchive> >* c |
} |
m_subframeArchives.clear(); |
} |
+#endif |
+ |
+void MHTMLArchive::setMainResource(PassRefPtrWillBeRawPtr<ArchiveResource> mainResource) |
+{ |
+ m_mainResource = mainResource; |
+} |
+ |
+void MHTMLArchive::addSubresource(PassRefPtrWillBeRawPtr<ArchiveResource> subResource) |
+{ |
+ m_subresources.append(subResource); |
+} |
+ |
+void MHTMLArchive::addSubframeArchive(PassRefPtrWillBeRawPtr<MHTMLArchive> subframeArchive) |
+{ |
+ m_subframeArchives.append(subframeArchive); |
+} |
+ |
+void MHTMLArchive::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_mainResource); |
+ visitor->trace(m_subresources); |
+ visitor->trace(m_subframeArchives); |
+} |
} |