summaryrefslogtreecommitdiff
path: root/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp')
-rw-r--r--Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp b/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp
index 55e3efcf2..9be88d24a 100644
--- a/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp
+++ b/Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp
@@ -428,7 +428,7 @@ RetainPtr<CFDataRef> LegacyWebArchive::createPropertyListRepresentation(const Re
#endif
-PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(Node* node)
+PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(Node* node, FrameFilter* filter)
{
ASSERT(node);
if (!node)
@@ -445,7 +445,7 @@ PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(Node* node)
if (nodeType != Node::DOCUMENT_NODE && nodeType != Node::DOCUMENT_TYPE_NODE)
markupString = frame->documentTypeString() + markupString;
- return create(markupString, frame, nodeList);
+ return create(markupString, frame, nodeList, filter);
}
PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(Frame* frame)
@@ -494,10 +494,10 @@ PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(Range* range)
// FIXME: This is always "for interchange". Is that right? See the previous method.
String markupString = frame->documentTypeString() + createMarkup(range, &nodeList, AnnotateForInterchange);
- return create(markupString, frame, nodeList);
+ return create(markupString, frame, nodeList, 0);
}
-PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(const String& markupString, Frame* frame, const Vector<Node*>& nodes)
+PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(const String& markupString, Frame* frame, const Vector<Node*>& nodes, FrameFilter* frameFilter)
{
ASSERT(frame);
@@ -521,7 +521,10 @@ PassRefPtr<LegacyWebArchive> LegacyWebArchive::create(const String& markupString
Frame* childFrame;
if ((node->hasTagName(HTMLNames::frameTag) || node->hasTagName(HTMLNames::iframeTag) || node->hasTagName(HTMLNames::objectTag)) &&
(childFrame = static_cast<HTMLFrameOwnerElement*>(node)->contentFrame())) {
- RefPtr<LegacyWebArchive> subframeArchive = create(childFrame->document());
+ if (frameFilter && !frameFilter->shouldIncludeSubframe(childFrame))
+ continue;
+
+ RefPtr<LegacyWebArchive> subframeArchive = create(childFrame->document(), frameFilter);
if (subframeArchive)
subframeArchives.append(subframeArchive);
@@ -584,7 +587,7 @@ PassRefPtr<LegacyWebArchive> LegacyWebArchive::createFromSelection(Frame* frame)
Vector<Node*> nodeList;
String markupString = frame->documentTypeString() + createMarkup(selectionRange.get(), &nodeList, AnnotateForInterchange);
- RefPtr<LegacyWebArchive> archive = create(markupString, frame, nodeList);
+ RefPtr<LegacyWebArchive> archive = create(markupString, frame, nodeList, 0);
if (!frame->document() || !frame->document()->isFrameSet())
return archive.release();