Bug 884400. Remove the non-WebIDL version of NS_IMPL_NS_NEW_HTML_ELEMENT. r=peterv

This commit is contained in:
Boris Zbarsky 2013-06-26 10:59:46 -04:00
parent 77bebdc268
commit 82d227bc23
2 changed files with 5 additions and 61 deletions

View File

@ -54,12 +54,10 @@ NS_NewHTMLTrackElement(already_AddRefed<nsINodeInfo> aNodeInfo,
mozilla::dom::FromParser aFromParser)
{
if (!mozilla::dom::HTMLTrackElement::IsWebVTTEnabled()) {
return mozilla::dom::NewHTMLElementHelper::Create<nsHTMLUnknownElement,
mozilla::dom::HTMLUnknownElement>(aNodeInfo);
return new mozilla::dom::HTMLUnknownElement(aNodeInfo);
}
return mozilla::dom::NewHTMLElementHelper::Create<nsHTMLTrackElement,
mozilla::dom::HTMLTrackElement>(aNodeInfo);
return new mozilla::dom::HTMLTrackElement(aNodeInfo);
}
namespace mozilla {

View File

@ -1711,7 +1711,6 @@ protected:
* A macro to declare the NS_NewHTMLXXXElement() functions.
*/
#define NS_DECLARE_NS_NEW_HTML_ELEMENT(_elementName) \
class nsHTML##_elementName##Element; \
namespace mozilla { \
namespace dom { \
class HTML##_elementName##Element; \
@ -1729,55 +1728,6 @@ NS_NewHTML##_elementName##Element(already_AddRefed<nsINodeInfo> aNodeInfo, \
return NS_NewHTMLSharedElement(aNodeInfo, aFromParser); \
}
namespace mozilla {
namespace dom {
// A helper struct to automatically detect whether HTMLFooElement is implemented
// as nsHTMLFooElement or as mozilla::dom::HTMLFooElement by using SFINAE to
// look for the InNavQuirksMode function (which lives on nsGenericHTMLElement)
// on both types and using whichever one the substitution succeeds with.
struct NewHTMLElementHelper
{
template<typename V, V> struct SFINAE;
typedef bool (*InNavQuirksMode)(nsIDocument*);
template<typename T, typename U>
static nsGenericHTMLElement*
Create(already_AddRefed<nsINodeInfo> aNodeInfo,
SFINAE<InNavQuirksMode, T::InNavQuirksMode>* dummy=nullptr)
{
return new T(aNodeInfo);
}
template<typename T, typename U>
static nsGenericHTMLElement*
Create(already_AddRefed<nsINodeInfo> aNodeInfo,
SFINAE<InNavQuirksMode, U::InNavQuirksMode>* dummy=nullptr)
{
return new U(aNodeInfo);
}
template<typename T, typename U>
static nsGenericHTMLElement*
Create(already_AddRefed<nsINodeInfo> aNodeInfo,
mozilla::dom::FromParser aFromParser,
SFINAE<InNavQuirksMode, U::InNavQuirksMode>* dummy=nullptr)
{
return new U(aNodeInfo, aFromParser);
}
template<typename T, typename U>
static nsGenericHTMLElement*
Create(already_AddRefed<nsINodeInfo> aNodeInfo,
mozilla::dom::FromParser aFromParser,
SFINAE<InNavQuirksMode, T::InNavQuirksMode>* dummy=nullptr)
{
return new T(aNodeInfo, aFromParser);
}
};
}
}
/**
* A macro to implement the NS_NewHTMLXXXElement() functions.
*/
@ -1786,9 +1736,7 @@ nsGenericHTMLElement* \
NS_NewHTML##_elementName##Element(already_AddRefed<nsINodeInfo> aNodeInfo, \
mozilla::dom::FromParser aFromParser) \
{ \
return mozilla::dom::NewHTMLElementHelper:: \
Create<nsHTML##_elementName##Element, \
mozilla::dom::HTML##_elementName##Element>(aNodeInfo); \
return new mozilla::dom::HTML##_elementName##Element(aNodeInfo); \
}
#define NS_IMPL_NS_NEW_HTML_ELEMENT_CHECK_PARSER(_elementName) \
@ -1796,10 +1744,8 @@ nsGenericHTMLElement* \
NS_NewHTML##_elementName##Element(already_AddRefed<nsINodeInfo> aNodeInfo, \
mozilla::dom::FromParser aFromParser) \
{ \
return mozilla::dom::NewHTMLElementHelper:: \
Create<nsHTML##_elementName##Element, \
mozilla::dom::HTML##_elementName##Element>(aNodeInfo, \
aFromParser); \
return new mozilla::dom::HTML##_elementName##Element(aNodeInfo, \
aFromParser); \
}
// Here, we expand 'NS_DECLARE_NS_NEW_HTML_ELEMENT()' by hand.