diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
index 1df482f564c..b1d88192d3e 100644
--- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
@@ -45,6 +45,10 @@
#include "nsIWebShell.h"
extern nsresult NS_NewHTMLIFrame(nsIHTMLContent** aInstancePtrResult,
nsIAtom* aTag, nsIWebShell* aWebShell); // XXX move
+extern nsresult NS_NewHTMLFrame(nsIHTMLContent** aInstancePtrResult,
+ nsIAtom* aTag, nsIWebShell* aWebShell); // XXX move
+extern nsresult NS_NewHTMLFrameset(nsIHTMLContent** aInstancePtrResult,
+ nsIAtom* aTag, nsIWebShell* aWebShell); // XXX move
// XXX attribute values have entities in them - use the parsers expander!
@@ -129,10 +133,10 @@ public:
NS_IMETHOD CloseBody(const nsIParserNode& aNode);
NS_IMETHOD OpenForm(const nsIParserNode& aNode);
NS_IMETHOD CloseForm(const nsIParserNode& aNode);
- NS_IMETHOD OpenMap(const nsIParserNode& aNode);
- NS_IMETHOD CloseMap(const nsIParserNode& aNode);
NS_IMETHOD OpenFrameset(const nsIParserNode& aNode);
NS_IMETHOD CloseFrameset(const nsIParserNode& aNode);
+ NS_IMETHOD OpenMap(const nsIParserNode& aNode);
+ NS_IMETHOD CloseMap(const nsIParserNode& aNode);
NS_IMETHOD OpenContainer(const nsIParserNode& aNode);
NS_IMETHOD CloseContainer(const nsIParserNode& aNode);
NS_IMETHOD AddLeaf(const nsIParserNode& aNode);
@@ -157,6 +161,8 @@ protected:
const nsIParserNode& aNode);
nsresult ProcessEMBEDTag(nsIHTMLContent** aInstancePtrResult,
const nsIParserNode& aNode);
+ nsresult ProcessFrameTag(nsIHTMLContent** aInstancePtrResult,
+ const nsIParserNode& aNode);
nsresult ProcessHRTag(nsIHTMLContent** aInstancePtrResult,
const nsIParserNode& aNode);
nsresult ProcessINPUTTag(nsIHTMLContent** aInstancePtrResult,
@@ -182,6 +188,8 @@ protected:
nsresult ProcessIFRAMETag(nsIHTMLContent** aInstancePtrResult,
const nsIParserNode& aNode);
+ nsresult ProcessFRAMESETTag(nsIHTMLContent** aInstancePtrResult,
+ const nsIParserNode& aNode);
//----------------------------------------------------------------------
void FlushText();
@@ -205,6 +213,8 @@ protected:
nsresult AddAttributes(const nsIParserNode& aNode,
nsIHTMLContent* aInstancePtrResult);
+ nsIHTMLContent* GetBodyOrFrameset() { if (mBody) return mBody; else return mFrameset; }
+
nsresult LoadStyleSheet(nsIURL* aURL,
nsIUnicharInputStream* aUIN);
@@ -226,6 +236,7 @@ protected:
nsIHTMLContent* mRoot;
nsIHTMLContent* mBody;
+ nsIHTMLContent* mFrameset;
nsIHTMLContent* mHead;
PRTime mLastUpdateTime;
@@ -233,6 +244,11 @@ protected:
PRBool mLayoutStarted;
PRInt32 mInMonolithicContainer;
nsIWebShell* mWebShell;
+
+ // XXX The parser needs to keep track of body tags and frameset tags
+ // and tell the content sink if they are to be ignored. For example, in nav4
+ //