#pragma once
#include "ExceptionOr.h"
namespace WebCore {
class Element;
class InspectorHistory;
class Node;
class Text;
typedef String ErrorString;
class DOMEditor {
WTF_MAKE_NONCOPYABLE(DOMEditor); WTF_MAKE_FAST_ALLOCATED;
public:
explicit DOMEditor(InspectorHistory&);
~DOMEditor();
ExceptionOr<void> insertBefore(Node& parentNode, Ref<Node>&&, Node* anchorNode);
ExceptionOr<void> removeChild(Node& parentNode, Node&);
ExceptionOr<void> setAttribute(Element&, const String& name, const String& value);
ExceptionOr<void> removeAttribute(Element&, const String& name);
ExceptionOr<void> setOuterHTML(Node&, const String& html, Node*& newNode);
ExceptionOr<void> replaceWholeText(Text&, const String& text);
ExceptionOr<void> replaceChild(Node& parentNode, Ref<Node>&& newNode, Node& oldNode);
ExceptionOr<void> setNodeValue(Node& parentNode, const String& value);
bool insertBefore(Node& parentNode, Ref<Node>&&, Node* anchorNode, ErrorString&);
bool removeChild(Node& parentNode, Node&, ErrorString&);
bool setAttribute(Element&, const String& name, const String& value, ErrorString&);
bool removeAttribute(Element&, const String& name, ErrorString&);
bool setOuterHTML(Node&, const String& html, Node*& newNode, ErrorString&);
bool replaceWholeText(Text&, const String& text, ErrorString&);
private:
class DOMAction;
class InsertBeforeAction;
class RemoveAttributeAction;
class RemoveChildAction;
class ReplaceChildNodeAction;
class ReplaceWholeTextAction;
class SetAttributeAction;
class SetNodeValueAction;
class SetOuterHTMLAction;
InspectorHistory& m_history;
};
}