JSXMLSerializer.cpp [plain text]
#include "config.h"
#include "JSXMLSerializer.h"
#include "JSXMLSerializer.lut.h"
#include "DeprecatedString.h"
#include "PlatformString.h"
#include "kjs_dom.h"
#include "markup.h"
using namespace KJS;
namespace WebCore {
KJS_DEFINE_PROTOTYPE(JSXMLSerializerProto)
KJS_IMPLEMENT_PROTOFUNC(JSXMLSerializerProtoFunc)
KJS_IMPLEMENT_PROTOTYPE("XMLSerializer", JSXMLSerializerProto, JSXMLSerializerProtoFunc)
JSXMLSerializerConstructorImp::JSXMLSerializerConstructorImp(ExecState* exec)
{
setPrototype(exec->lexicalInterpreter()->builtinObjectPrototype());
putDirect(prototypePropertyName, JSXMLSerializerProto::self(exec), None);
}
bool JSXMLSerializerConstructorImp::implementsConstruct() const
{
return true;
}
JSObject* JSXMLSerializerConstructorImp::construct(ExecState* exec, const List&)
{
return new JSXMLSerializer(exec);
}
const ClassInfo JSXMLSerializer::info = { "XMLSerializer", 0, &JSXMLSerializerTable, 0 };
JSXMLSerializer::JSXMLSerializer(ExecState* exec)
{
setPrototype(JSXMLSerializerProto::self(exec));
}
JSValue* JSXMLSerializerProtoFunc::callAsFunction(ExecState* exec, JSObject* thisObj, const List& args)
{
if (!thisObj->inherits(&JSXMLSerializer::info))
return throwError(exec, TypeError);
if (id == JSXMLSerializer::SerializeToString) {
if (args.size() != 1)
return jsUndefined();
if (!args[0]->toObject(exec)->inherits(&DOMNode::info))
return jsUndefined();
Node* node = static_cast<Node*>(static_cast<DOMNode*>(args[0]->toObject(exec))->impl());
return jsStringOrNull(createMarkup(node));
}
return jsUndefined();
}
}