зеркало из https://github.com/mozilla/gecko-dev.git
Bug 804649. Create a CommentNode header. r=peterv
--HG-- rename : content/base/src/nsCommentNode.cpp => content/base/src/Comment.cpp rename : content/base/src/nsCommentNode.cpp => content/base/src/Comment.h
This commit is contained in:
Родитель
f74ea18279
Коммит
60766a1277
|
@ -0,0 +1,103 @@
|
||||||
|
/* -*- 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/. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implementations of DOM Core's nsIDOMComment node.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsCOMPtr.h"
|
||||||
|
#include "nsGenericElement.h" // DOMCI_NODE_DATA
|
||||||
|
#include "Comment.h"
|
||||||
|
|
||||||
|
using namespace mozilla;
|
||||||
|
using namespace dom;
|
||||||
|
|
||||||
|
// DOMCI_NODE_DATA needs to be outside our namespaces
|
||||||
|
DOMCI_NODE_DATA(Comment, Comment)
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
NS_NewCommentNode(nsIContent** aInstancePtrResult,
|
||||||
|
nsNodeInfoManager *aNodeInfoManager)
|
||||||
|
{
|
||||||
|
NS_PRECONDITION(aNodeInfoManager, "Missing nodeinfo manager");
|
||||||
|
|
||||||
|
*aInstancePtrResult = nullptr;
|
||||||
|
|
||||||
|
nsCOMPtr<nsINodeInfo> ni = aNodeInfoManager->GetCommentNodeInfo();
|
||||||
|
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
|
||||||
|
|
||||||
|
Comment *instance = new Comment(ni.forget());
|
||||||
|
if (!instance) {
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_ADDREF(*aInstancePtrResult = instance);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
namespace dom {
|
||||||
|
|
||||||
|
Comment::Comment(already_AddRefed<nsINodeInfo> aNodeInfo)
|
||||||
|
: nsGenericDOMDataNode(aNodeInfo)
|
||||||
|
{
|
||||||
|
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::COMMENT_NODE,
|
||||||
|
"Bad NodeType in aNodeInfo");
|
||||||
|
}
|
||||||
|
|
||||||
|
Comment::~Comment()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryInterface implementation for Comment
|
||||||
|
NS_INTERFACE_TABLE_HEAD(Comment)
|
||||||
|
NS_NODE_INTERFACE_TABLE3(Comment, nsIDOMNode, nsIDOMCharacterData,
|
||||||
|
nsIDOMComment)
|
||||||
|
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(Comment)
|
||||||
|
NS_INTERFACE_MAP_END_INHERITING(nsGenericDOMDataNode)
|
||||||
|
|
||||||
|
|
||||||
|
NS_IMPL_ADDREF_INHERITED(Comment, nsGenericDOMDataNode)
|
||||||
|
NS_IMPL_RELEASE_INHERITED(Comment, nsGenericDOMDataNode)
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
Comment::IsNodeOfType(uint32_t aFlags) const
|
||||||
|
{
|
||||||
|
return !(aFlags & ~(eCONTENT | eCOMMENT | eDATA_NODE));
|
||||||
|
}
|
||||||
|
|
||||||
|
nsGenericDOMDataNode*
|
||||||
|
Comment::CloneDataNode(nsINodeInfo *aNodeInfo, bool aCloneText) const
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsINodeInfo> ni = aNodeInfo;
|
||||||
|
Comment *it = new Comment(ni.forget());
|
||||||
|
if (it && aCloneText) {
|
||||||
|
it->mText = mText;
|
||||||
|
}
|
||||||
|
|
||||||
|
return it;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
void
|
||||||
|
Comment::List(FILE* out, int32_t aIndent) const
|
||||||
|
{
|
||||||
|
int32_t indx;
|
||||||
|
for (indx = aIndent; --indx >= 0; ) fputs(" ", out);
|
||||||
|
|
||||||
|
fprintf(out, "Comment@%p refcount=%d<!--", (void*)this, mRefCnt.get());
|
||||||
|
|
||||||
|
nsAutoString tmp;
|
||||||
|
ToCString(tmp, 0, mText.GetLength());
|
||||||
|
fputs(NS_LossyConvertUTF16toASCII(tmp).get(), out);
|
||||||
|
|
||||||
|
fputs("-->\n", out);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
} // namespace dom
|
||||||
|
} // namespace mozilla
|
|
@ -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/. */
|
||||||
|
|
||||||
|
#include "nsIDOMComment.h"
|
||||||
|
#include "nsGenericDOMDataNode.h"
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
namespace dom {
|
||||||
|
|
||||||
|
class Comment : public nsGenericDOMDataNode,
|
||||||
|
public nsIDOMComment
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Comment(already_AddRefed<nsINodeInfo> aNodeInfo);
|
||||||
|
virtual ~Comment();
|
||||||
|
|
||||||
|
// nsISupports
|
||||||
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
|
|
||||||
|
// nsIDOMNode
|
||||||
|
NS_FORWARD_NSIDOMNODE_TO_NSINODE
|
||||||
|
|
||||||
|
// nsIDOMCharacterData
|
||||||
|
NS_FORWARD_NSIDOMCHARACTERDATA(nsGenericDOMDataNode::)
|
||||||
|
|
||||||
|
// nsIDOMComment
|
||||||
|
// Empty interface
|
||||||
|
|
||||||
|
// nsINode
|
||||||
|
virtual bool IsNodeOfType(uint32_t aFlags) const;
|
||||||
|
|
||||||
|
virtual nsGenericDOMDataNode* CloneDataNode(nsINodeInfo *aNodeInfo,
|
||||||
|
bool aCloneText) const;
|
||||||
|
|
||||||
|
virtual nsXPCClassInfo* GetClassInfo();
|
||||||
|
|
||||||
|
virtual nsIDOMNode* AsDOMNode() { return this; }
|
||||||
|
#ifdef DEBUG
|
||||||
|
virtual void List(FILE* out, int32_t aIndent) const;
|
||||||
|
virtual void DumpContent(FILE* out = stdout, int32_t aIndent = 0,
|
||||||
|
bool aDumpAll = true) const
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dom
|
||||||
|
} // namespace mozilla
|
||||||
|
|
|
@ -46,11 +46,13 @@ EXPORTS = \
|
||||||
EXPORTS_NAMESPACES = mozilla/dom
|
EXPORTS_NAMESPACES = mozilla/dom
|
||||||
|
|
||||||
EXPORTS_mozilla/dom = \
|
EXPORTS_mozilla/dom = \
|
||||||
|
Comment.h \
|
||||||
DOMImplementation.h \
|
DOMImplementation.h \
|
||||||
Link.h \
|
Link.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
CPPSRCS = \
|
CPPSRCS = \
|
||||||
|
Comment.cpp \
|
||||||
DirectionalityUtils.cpp \
|
DirectionalityUtils.cpp \
|
||||||
DOMImplementation.cpp \
|
DOMImplementation.cpp \
|
||||||
nsAtomListUtils.cpp \
|
nsAtomListUtils.cpp \
|
||||||
|
@ -59,7 +61,6 @@ CPPSRCS = \
|
||||||
nsAttrValueOrString.cpp \
|
nsAttrValueOrString.cpp \
|
||||||
nsCCUncollectableMarker.cpp \
|
nsCCUncollectableMarker.cpp \
|
||||||
nsChannelPolicy.cpp \
|
nsChannelPolicy.cpp \
|
||||||
nsCommentNode.cpp \
|
|
||||||
nsContentAreaDragDrop.cpp \
|
nsContentAreaDragDrop.cpp \
|
||||||
nsContentIterator.cpp \
|
nsContentIterator.cpp \
|
||||||
nsContentList.cpp \
|
nsContentList.cpp \
|
||||||
|
|
|
@ -1,133 +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/. */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Implementations of DOM Core's nsIDOMComment node.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "nsIDOMComment.h"
|
|
||||||
#include "nsGenericDOMDataNode.h"
|
|
||||||
|
|
||||||
#include "nsCOMPtr.h"
|
|
||||||
#include "nsGenericElement.h" // DOMCI_NODE_DATA
|
|
||||||
|
|
||||||
class nsCommentNode : public nsGenericDOMDataNode,
|
|
||||||
public nsIDOMComment
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nsCommentNode(already_AddRefed<nsINodeInfo> aNodeInfo);
|
|
||||||
virtual ~nsCommentNode();
|
|
||||||
|
|
||||||
// nsISupports
|
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
|
||||||
|
|
||||||
// nsIDOMNode
|
|
||||||
NS_FORWARD_NSIDOMNODE_TO_NSINODE
|
|
||||||
|
|
||||||
// nsIDOMCharacterData
|
|
||||||
NS_FORWARD_NSIDOMCHARACTERDATA(nsGenericDOMDataNode::)
|
|
||||||
|
|
||||||
// nsIDOMComment
|
|
||||||
// Empty interface
|
|
||||||
|
|
||||||
// nsINode
|
|
||||||
virtual bool IsNodeOfType(uint32_t aFlags) const;
|
|
||||||
|
|
||||||
virtual nsGenericDOMDataNode* CloneDataNode(nsINodeInfo *aNodeInfo,
|
|
||||||
bool aCloneText) const;
|
|
||||||
|
|
||||||
virtual nsXPCClassInfo* GetClassInfo();
|
|
||||||
|
|
||||||
virtual nsIDOMNode* AsDOMNode() { return this; }
|
|
||||||
#ifdef DEBUG
|
|
||||||
virtual void List(FILE* out, int32_t aIndent) const;
|
|
||||||
virtual void DumpContent(FILE* out = stdout, int32_t aIndent = 0,
|
|
||||||
bool aDumpAll = true) const
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
NS_NewCommentNode(nsIContent** aInstancePtrResult,
|
|
||||||
nsNodeInfoManager *aNodeInfoManager)
|
|
||||||
{
|
|
||||||
NS_PRECONDITION(aNodeInfoManager, "Missing nodeinfo manager");
|
|
||||||
|
|
||||||
*aInstancePtrResult = nullptr;
|
|
||||||
|
|
||||||
nsCOMPtr<nsINodeInfo> ni = aNodeInfoManager->GetCommentNodeInfo();
|
|
||||||
NS_ENSURE_TRUE(ni, NS_ERROR_OUT_OF_MEMORY);
|
|
||||||
|
|
||||||
nsCommentNode *instance = new nsCommentNode(ni.forget());
|
|
||||||
if (!instance) {
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_ADDREF(*aInstancePtrResult = instance);
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsCommentNode::nsCommentNode(already_AddRefed<nsINodeInfo> aNodeInfo)
|
|
||||||
: nsGenericDOMDataNode(aNodeInfo)
|
|
||||||
{
|
|
||||||
NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::COMMENT_NODE,
|
|
||||||
"Bad NodeType in aNodeInfo");
|
|
||||||
}
|
|
||||||
|
|
||||||
nsCommentNode::~nsCommentNode()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
DOMCI_NODE_DATA(Comment, nsCommentNode)
|
|
||||||
|
|
||||||
// QueryInterface implementation for nsCommentNode
|
|
||||||
NS_INTERFACE_TABLE_HEAD(nsCommentNode)
|
|
||||||
NS_NODE_INTERFACE_TABLE3(nsCommentNode, nsIDOMNode, nsIDOMCharacterData,
|
|
||||||
nsIDOMComment)
|
|
||||||
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(Comment)
|
|
||||||
NS_INTERFACE_MAP_END_INHERITING(nsGenericDOMDataNode)
|
|
||||||
|
|
||||||
|
|
||||||
NS_IMPL_ADDREF_INHERITED(nsCommentNode, nsGenericDOMDataNode)
|
|
||||||
NS_IMPL_RELEASE_INHERITED(nsCommentNode, nsGenericDOMDataNode)
|
|
||||||
|
|
||||||
|
|
||||||
bool
|
|
||||||
nsCommentNode::IsNodeOfType(uint32_t aFlags) const
|
|
||||||
{
|
|
||||||
return !(aFlags & ~(eCONTENT | eCOMMENT | eDATA_NODE));
|
|
||||||
}
|
|
||||||
|
|
||||||
nsGenericDOMDataNode*
|
|
||||||
nsCommentNode::CloneDataNode(nsINodeInfo *aNodeInfo, bool aCloneText) const
|
|
||||||
{
|
|
||||||
nsCOMPtr<nsINodeInfo> ni = aNodeInfo;
|
|
||||||
nsCommentNode *it = new nsCommentNode(ni.forget());
|
|
||||||
if (it && aCloneText) {
|
|
||||||
it->mText = mText;
|
|
||||||
}
|
|
||||||
|
|
||||||
return it;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
void
|
|
||||||
nsCommentNode::List(FILE* out, int32_t aIndent) const
|
|
||||||
{
|
|
||||||
int32_t indx;
|
|
||||||
for (indx = aIndent; --indx >= 0; ) fputs(" ", out);
|
|
||||||
|
|
||||||
fprintf(out, "Comment@%p refcount=%d<!--", (void*)this, mRefCnt.get());
|
|
||||||
|
|
||||||
nsAutoString tmp;
|
|
||||||
ToCString(tmp, 0, mText.GetLength());
|
|
||||||
fputs(NS_LossyConvertUTF16toASCII(tmp).get(), out);
|
|
||||||
|
|
||||||
fputs("-->\n", out);
|
|
||||||
}
|
|
||||||
#endif
|
|
Загрузка…
Ссылка в новой задаче