diff -r 000000000000 -r 6474c204b198 layout/generic/nsHTMLParts.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/layout/generic/nsHTMLParts.h Wed Dec 31 06:09:35 2014 +0100
@@ -0,0 +1,200 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* factory functions for rendering object classes */
+
+#ifndef nsHTMLParts_h___
+#define nsHTMLParts_h___
+
+#include "nscore.h"
+#include "nsISupports.h"
+#include "nsIFrame.h"
+class nsIAtom;
+class nsNodeInfoManager;
+class nsIContent;
+class nsIContentIterator;
+class nsIDocument;
+class nsIFrame;
+class nsIHTMLContentSink;
+class nsIFragmentContentSink;
+class nsStyleContext;
+class nsIURI;
+class nsString;
+class nsIPresShell;
+class nsIChannel;
+class nsTableColFrame;
+
+// These are all the block specific frame bits, they are copied from
+// the prev-in-flow to a newly created next-in-flow, except for the
+// NS_BLOCK_FLAGS_NON_INHERITED_MASK bits below.
+#define NS_BLOCK_FLAGS_MASK (NS_BLOCK_MARGIN_ROOT | \
+ NS_BLOCK_FLOAT_MGR | \
+ NS_BLOCK_CLIP_PAGINATED_OVERFLOW | \
+ NS_BLOCK_HAS_FIRST_LETTER_STYLE | \
+ NS_BLOCK_FRAME_HAS_OUTSIDE_BULLET | \
+ NS_BLOCK_HAS_FIRST_LETTER_CHILD | \
+ NS_BLOCK_FRAME_HAS_INSIDE_BULLET)
+
+// This is the subset of NS_BLOCK_FLAGS_MASK that is NOT inherited
+// by default. They should only be set on the first-in-flow.
+// See nsBlockFrame::Init.
+#define NS_BLOCK_FLAGS_NON_INHERITED_MASK \
+ (NS_BLOCK_FRAME_HAS_OUTSIDE_BULLET | \
+ NS_BLOCK_HAS_FIRST_LETTER_CHILD | \
+ NS_BLOCK_FRAME_HAS_INSIDE_BULLET)
+
+// Factory methods for creating html layout objects
+
+// Create a frame that supports "display: block" layout behavior
+nsIFrame*
+NS_NewBlockFrame(nsIPresShell* aPresShell, nsStyleContext* aContext, nsFrameState aFlags = nsFrameState(0));
+
+// Special Generated Content Node. It contains text taken from an
+// attribute of its *grandparent* content node.
+nsresult
+NS_NewAttributeContent(nsNodeInfoManager *aNodeInfoManager,
+ int32_t aNameSpaceID, nsIAtom* aAttrName,
+ nsIContent** aResult);
+
+// Create a basic area frame but the GetFrameForPoint is overridden to always
+// return the option frame
+// By default, area frames will extend
+// their height to cover any children that "stick out".
+nsIFrame*
+NS_NewSelectsAreaFrame(nsIPresShell* aPresShell, nsStyleContext* aContext, nsFrameState aFlags);
+
+// Create a block formatting context blockframe
+inline nsIFrame* NS_NewBlockFormattingContext(nsIPresShell* aPresShell,
+ nsStyleContext* aStyleContext)
+{
+ return NS_NewBlockFrame(aPresShell, aStyleContext,
+ NS_BLOCK_FLOAT_MGR | NS_BLOCK_MARGIN_ROOT);
+}
+
+nsIFrame*
+NS_NewBRFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
+
+nsIFrame*
+NS_NewCommentFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
+
+// and