#include "config.h"
#include "DocumentType.h"
#include "Document.h"
#include "NamedNodeMap.h"
namespace WebCore {
DocumentType::DocumentType(Document* document, const String& name, const String& publicId, const String& systemId)
: Node(document, CreateOther)
, m_name(name)
, m_publicId(publicId)
, m_systemId(systemId)
{
}
KURL DocumentType::baseURI() const
{
return KURL();
}
String DocumentType::nodeName() const
{
return name();
}
Node::NodeType DocumentType::nodeType() const
{
return DOCUMENT_TYPE_NODE;
}
PassRefPtr<Node> DocumentType::cloneNode(bool )
{
return create(document(), m_name, m_publicId, m_systemId);
}
Node::InsertionNotificationRequest DocumentType::insertedInto(Node* insertionPoint)
{
Node::insertedInto(insertionPoint);
if (!insertionPoint->inDocument())
return InsertionDone;
ASSERT(parentNode() && parentNode()->isDocumentNode());
if (parentNode() && parentNode()->isDocumentNode()) {
Document* doc = static_cast<Document*>(parentNode());
if (!doc->doctype())
doc->setDocType(this);
}
return InsertionDone;
}
void DocumentType::removedFrom(Node* insertionPoint)
{
if (insertionPoint->inDocument() && document() && document()->doctype() == this)
document()->setDocType(0);
Node::removedFrom(insertionPoint);
}
}