diff --git a/content/html/content/src/HTMLBRElement.cpp b/content/html/content/src/HTMLBRElement.cpp
new file mode 100644
index 00000000000..b0893bf3b6e
--- /dev/null
+++ b/content/html/content/src/HTMLBRElement.cpp
@@ -0,0 +1,110 @@
+/* -*- 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/. */
+
+#include "mozilla/dom/HTMLBRElement.h"
+#include "mozilla/Util.h"
+
+#include "nsAttrValueInlines.h"
+#include "nsGkAtoms.h"
+#include "nsStyleConsts.h"
+#include "nsMappedAttributes.h"
+#include "nsRuleData.h"
+
+
+NS_IMPL_NS_NEW_HTML_ELEMENT(BR)
+
+DOMCI_NODE_DATA(HTMLBRElement, mozilla::dom::HTMLBRElement)
+
+namespace mozilla {
+namespace dom {
+
+HTMLBRElement::HTMLBRElement(already_AddRefed aNodeInfo)
+ : nsGenericHTMLElement(aNodeInfo)
+{
+}
+
+HTMLBRElement::~HTMLBRElement()
+{
+}
+
+NS_IMPL_ADDREF_INHERITED(HTMLBRElement, Element)
+NS_IMPL_RELEASE_INHERITED(HTMLBRElement, Element)
+
+
+// QueryInterface implementation for HTMLBRElement
+NS_INTERFACE_TABLE_HEAD(HTMLBRElement)
+ NS_HTML_CONTENT_INTERFACE_TABLE1(HTMLBRElement, nsIDOMHTMLBRElement)
+ NS_HTML_CONTENT_INTERFACE_TABLE_TO_MAP_SEGUE(HTMLBRElement,
+ nsGenericHTMLElement)
+NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLBRElement)
+
+
+NS_IMPL_ELEMENT_CLONE(HTMLBRElement)
+
+
+NS_IMPL_STRING_ATTR(HTMLBRElement, Clear, clear)
+
+static const nsAttrValue::EnumTable kClearTable[] = {
+ { "left", NS_STYLE_CLEAR_LEFT },
+ { "right", NS_STYLE_CLEAR_RIGHT },
+ { "all", NS_STYLE_CLEAR_LEFT_AND_RIGHT },
+ { "both", NS_STYLE_CLEAR_LEFT_AND_RIGHT },
+ { 0 }
+};
+
+bool
+HTMLBRElement::ParseAttribute(int32_t aNamespaceID,
+ nsIAtom* aAttribute,
+ const nsAString& aValue,
+ nsAttrValue& aResult)
+{
+ if (aAttribute == nsGkAtoms::clear && aNamespaceID == kNameSpaceID_None) {
+ return aResult.ParseEnumValue(aValue, kClearTable, false);
+ }
+
+ return nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue,
+ aResult);
+}
+
+static void
+MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
+ nsRuleData* aData)
+{
+ if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Display)) {
+ nsCSSValue* clear = aData->ValueForClear();
+ if (clear->GetUnit() == eCSSUnit_Null) {
+ const nsAttrValue* value = aAttributes->GetAttr(nsGkAtoms::clear);
+ if (value && value->Type() == nsAttrValue::eEnum)
+ clear->SetIntValue(value->GetEnumValue(), eCSSUnit_Enumerated);
+ }
+ }
+
+ nsGenericHTMLElement::MapCommonAttributesInto(aAttributes, aData);
+}
+
+NS_IMETHODIMP_(bool)
+HTMLBRElement::IsAttributeMapped(const nsIAtom* aAttribute) const
+{
+ static const MappedAttributeEntry attributes[] = {
+ { &nsGkAtoms::clear },
+ { nullptr }
+ };
+
+ static const MappedAttributeEntry* const map[] = {
+ attributes,
+ sCommonAttributeMap,
+ };
+
+ return FindAttributeDependence(aAttribute, map);
+}
+
+nsMapRuleToAttributesFunc
+HTMLBRElement::GetAttributeMappingFunction() const
+{
+ return &MapAttributesIntoRule;
+}
+
+} // namespace dom
+} // namespace mozilla
diff --git a/content/html/content/src/HTMLBRElement.h b/content/html/content/src/HTMLBRElement.h
new file mode 100644
index 00000000000..77eea51edfd
--- /dev/null
+++ b/content/html/content/src/HTMLBRElement.h
@@ -0,0 +1,52 @@
+/* -*- 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/. */
+
+#ifndef mozilla_dom_HTMLBRElement_h
+#define mozilla_dom_HTMLBRElement_h
+
+#include "nsIDOMHTMLBRElement.h"
+#include "nsGenericHTMLElement.h"
+
+namespace mozilla {
+namespace dom {
+
+class HTMLBRElement MOZ_FINAL : public nsGenericHTMLElement,
+ public nsIDOMHTMLBRElement
+{
+public:
+ HTMLBRElement(already_AddRefed aNodeInfo);
+ virtual ~HTMLBRElement();
+
+ // nsISupports
+ NS_DECL_ISUPPORTS_INHERITED
+
+ // nsIDOMNode
+ NS_FORWARD_NSIDOMNODE_TO_NSINODE
+
+ // nsIDOMElement
+ NS_FORWARD_NSIDOMELEMENT_TO_GENERIC
+
+ // nsIDOMHTMLElement
+ NS_FORWARD_NSIDOMHTMLELEMENT_TO_GENERIC
+
+ // nsIDOMHTMLBRElement
+ NS_DECL_NSIDOMHTMLBRELEMENT
+
+ virtual bool ParseAttribute(int32_t aNamespaceID,
+ nsIAtom* aAttribute,
+ const nsAString& aValue,
+ nsAttrValue& aResult);
+ NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const;
+ virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const;
+ virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const;
+ virtual nsXPCClassInfo* GetClassInfo();
+ virtual nsIDOMNode* AsDOMNode() { return this; }
+};
+
+} // namespace dom
+} // namespace mozilla
+
+#endif
+
diff --git a/content/html/content/src/Makefile.in b/content/html/content/src/Makefile.in
index d9af032f895..5bef7dad9c5 100644
--- a/content/html/content/src/Makefile.in
+++ b/content/html/content/src/Makefile.in
@@ -32,6 +32,7 @@ EXPORTS_NAMESPACES = mozilla/dom
EXPORTS_mozilla/dom = \
HTMLAnchorElement.h \
HTMLBodyElement.h \
+ HTMLBRElement.h \
HTMLDataListElement.h \
HTMLDivElement.h \
HTMLFontElement.h \
@@ -69,7 +70,7 @@ CPPSRCS = \
HTMLElement.cpp \
HTMLAnchorElement.cpp \
nsHTMLAreaElement.cpp \
- nsHTMLBRElement.cpp \
+ HTMLBRElement.cpp \
HTMLBodyElement.cpp \
nsHTMLButtonElement.cpp \
HTMLCanvasElement.cpp \
diff --git a/content/html/content/src/nsHTMLBRElement.cpp b/content/html/content/src/nsHTMLBRElement.cpp
deleted file mode 100644
index 4ef11fda48d..00000000000
--- a/content/html/content/src/nsHTMLBRElement.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-/* -*- 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/. */
-
-#include "mozilla/Util.h"
-
-#include "nsIDOMHTMLBRElement.h"
-#include "nsIDOMEventTarget.h"
-#include "nsGenericHTMLElement.h"
-#include "nsAttrValueInlines.h"
-#include "nsGkAtoms.h"
-#include "nsStyleConsts.h"
-#include "nsMappedAttributes.h"
-#include "nsRuleData.h"
-
-using namespace mozilla;
-using namespace mozilla::dom;
-
-class nsHTMLBRElement : public nsGenericHTMLElement,
- public nsIDOMHTMLBRElement
-{
-public:
- nsHTMLBRElement(already_AddRefed aNodeInfo);
- virtual ~nsHTMLBRElement();
-
- // nsISupports
- NS_DECL_ISUPPORTS_INHERITED
-
- // nsIDOMNode
- NS_FORWARD_NSIDOMNODE_TO_NSINODE
-
- // nsIDOMElement
- NS_FORWARD_NSIDOMELEMENT_TO_GENERIC
-
- // nsIDOMHTMLElement
- NS_FORWARD_NSIDOMHTMLELEMENT_TO_GENERIC
-
- // nsIDOMHTMLBRElement
- NS_DECL_NSIDOMHTMLBRELEMENT
-
- virtual bool ParseAttribute(int32_t aNamespaceID,
- nsIAtom* aAttribute,
- const nsAString& aValue,
- nsAttrValue& aResult);
- NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const;
- virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const;
- virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const;
- virtual nsXPCClassInfo* GetClassInfo();
- virtual nsIDOMNode* AsDOMNode() { return this; }
-};
-
-
-NS_IMPL_NS_NEW_HTML_ELEMENT(BR)
-
-
-nsHTMLBRElement::nsHTMLBRElement(already_AddRefed aNodeInfo)
- : nsGenericHTMLElement(aNodeInfo)
-{
-}
-
-nsHTMLBRElement::~nsHTMLBRElement()
-{
-}
-
-NS_IMPL_ADDREF_INHERITED(nsHTMLBRElement, Element)
-NS_IMPL_RELEASE_INHERITED(nsHTMLBRElement, Element)
-
-
-DOMCI_NODE_DATA(HTMLBRElement, nsHTMLBRElement)
-
-// QueryInterface implementation for nsHTMLBRElement
-NS_INTERFACE_TABLE_HEAD(nsHTMLBRElement)
- NS_HTML_CONTENT_INTERFACE_TABLE1(nsHTMLBRElement, nsIDOMHTMLBRElement)
- NS_HTML_CONTENT_INTERFACE_TABLE_TO_MAP_SEGUE(nsHTMLBRElement,
- nsGenericHTMLElement)
-NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLBRElement)
-
-
-NS_IMPL_ELEMENT_CLONE(nsHTMLBRElement)
-
-
-NS_IMPL_STRING_ATTR(nsHTMLBRElement, Clear, clear)
-
-static const nsAttrValue::EnumTable kClearTable[] = {
- { "left", NS_STYLE_CLEAR_LEFT },
- { "right", NS_STYLE_CLEAR_RIGHT },
- { "all", NS_STYLE_CLEAR_LEFT_AND_RIGHT },
- { "both", NS_STYLE_CLEAR_LEFT_AND_RIGHT },
- { 0 }
-};
-
-bool
-nsHTMLBRElement::ParseAttribute(int32_t aNamespaceID,
- nsIAtom* aAttribute,
- const nsAString& aValue,
- nsAttrValue& aResult)
-{
- if (aAttribute == nsGkAtoms::clear && aNamespaceID == kNameSpaceID_None) {
- return aResult.ParseEnumValue(aValue, kClearTable, false);
- }
-
- return nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue,
- aResult);
-}
-
-static void
-MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
- nsRuleData* aData)
-{
- if (aData->mSIDs & NS_STYLE_INHERIT_BIT(Display)) {
- nsCSSValue* clear = aData->ValueForClear();
- if (clear->GetUnit() == eCSSUnit_Null) {
- const nsAttrValue* value = aAttributes->GetAttr(nsGkAtoms::clear);
- if (value && value->Type() == nsAttrValue::eEnum)
- clear->SetIntValue(value->GetEnumValue(), eCSSUnit_Enumerated);
- }
- }
-
- nsGenericHTMLElement::MapCommonAttributesInto(aAttributes, aData);
-}
-
-NS_IMETHODIMP_(bool)
-nsHTMLBRElement::IsAttributeMapped(const nsIAtom* aAttribute) const
-{
- static const MappedAttributeEntry attributes[] = {
- { &nsGkAtoms::clear },
- { nullptr }
- };
-
- static const MappedAttributeEntry* const map[] = {
- attributes,
- sCommonAttributeMap,
- };
-
- return FindAttributeDependence(aAttribute, map);
-}
-
-nsMapRuleToAttributesFunc
-nsHTMLBRElement::GetAttributeMappingFunction() const
-{
- return &MapAttributesIntoRule;
-}