diff --git a/layout/html/base/src/nsHTMLHead.cpp b/layout/html/base/src/nsHTMLHead.cpp
new file mode 100644
index 000000000000..1b3bcf3ab3c0
--- /dev/null
+++ b/layout/html/base/src/nsHTMLHead.cpp
@@ -0,0 +1,74 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * The contents of this file are subject to the Netscape Public License
+ * Version 1.0 (the "NPL"); you may not use this file except in
+ * compliance with the NPL. You may obtain a copy of the NPL at
+ * http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the NPL is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
+ * for the specific language governing rights and limitations under the
+ * NPL.
+ *
+ * The Initial Developer of this code under the NPL is Netscape
+ * Communications Corporation. Portions created by Netscape are
+ * Copyright (C) 1998 Netscape Communications Corporation. All Rights
+ * Reserved.
+ */
+#include "nsHTMLParts.h"
+#include "nsHTMLContainer.h"
+#include "nsFrame.h"
+#include "nsHTMLIIDs.h"
+
+class nsHTMLHead : public nsHTMLContainer {
+public:
+ nsHTMLHead(nsIAtom* aTag);
+
+ virtual nsresult CreateFrame(nsIPresContext* aPresContext,
+ nsIFrame* aParentFrame,
+ nsIStyleContext* aStyleContext,
+ nsIFrame*& aResult);
+
+protected:
+ virtual ~nsHTMLHead();
+};
+
+nsHTMLHead::nsHTMLHead(nsIAtom* aTag)
+ : nsHTMLContainer(aTag)
+{
+}
+
+nsHTMLHead::~nsHTMLHead()
+{
+}
+
+nsresult
+nsHTMLHead::CreateFrame(nsIPresContext* aPresContext,
+ nsIFrame* aParentFrame,
+ nsIStyleContext* aStyleContext,
+ nsIFrame*& aResult)
+{
+ nsIFrame* frame;
+ nsFrame::NewFrame(&frame, this, aParentFrame);
+ if (nsnull == frame) {
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
+ frame->SetStyleContext(aPresContext, aStyleContext);
+ aResult = frame;
+ return NS_OK;
+}
+
+nsresult
+NS_NewHTMLHead(nsIHTMLContent** aInstancePtrResult,
+ nsIAtom* aTag)
+{
+ NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
+ if (nsnull == aInstancePtrResult) {
+ return NS_ERROR_NULL_POINTER;
+ }
+ nsIHTMLContent* it = new nsHTMLHead(aTag);
+ if (nsnull == it) {
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
+ return it->QueryInterface(kIHTMLContentIID, (void **) aInstancePtrResult);
+}