18a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen/* 28a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * Copyright (C) 2012 Google Inc. All rights reserved. 38a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * 48a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * Redistribution and use in source and binary forms, with or without 58a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * modification, are permitted provided that the following conditions are 68a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * met: 78a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * 88a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * * Redistributions of source code must retain the above copyright 98a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * notice, this list of conditions and the following disclaimer. 108a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * * Redistributions in binary form must reproduce the above 118a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * copyright notice, this list of conditions and the following disclaimer 128a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * in the documentation and/or other materials provided with the 138a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * distribution. 148a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * * Neither the name of Google Inc. nor the names of its 158a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * contributors may be used to endorse or promote products derived from 168a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * this software without specific prior written permission. 178a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * 188a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 198a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 208a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 218a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 228a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 238a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 248a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 258a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 268a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 278a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 288a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 298a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen */ 308a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 318a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#ifndef DOMEditor_h 328a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#define DOMEditor_h 338a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 348a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#include "platform/heap/Handle.h" 358a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#include "wtf/text/WTFString.h" 368a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 378a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chennamespace blink { 388a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 398a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenclass Element; 408a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenclass ExceptionState; 418a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenclass InspectorHistory; 428a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenclass Node; 438a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenclass Text; 448a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 458a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chentypedef String ErrorString; 468a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 478a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenclass DOMEditor FINAL : public NoBaseWillBeGarbageCollected<DOMEditor> { 488a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen WTF_MAKE_NONCOPYABLE(DOMEditor); 498a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; 508a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenpublic: 518a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen explicit DOMEditor(InspectorHistory*); 528a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 538a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen void trace(Visitor*); 548a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 558a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool insertBefore(Node* parentNode, PassRefPtrWillBeRawPtr<Node>, Node* anchorNode, ExceptionState&); 568a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool removeChild(Node* parentNode, Node*, ExceptionState&); 578a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool setAttribute(Element*, const String& name, const String& value, ExceptionState&); 588a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool removeAttribute(Element*, const String& name, ExceptionState&); 598a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool setOuterHTML(Node*, const String& html, Node** newNode, ExceptionState&); 608a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool replaceWholeText(Text*, const String& text, ExceptionState&); 618a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool replaceChild(Node* parentNode, PassRefPtrWillBeRawPtr<Node> newNode, Node* oldNode, ExceptionState&); 628a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool setNodeValue(Node* parentNode, const String& value, ExceptionState&); 638a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 648a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool insertBefore(Node* parentNode, PassRefPtrWillBeRawPtr<Node>, Node* anchorNode, ErrorString*); 658a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool removeChild(Node* parentNode, Node*, ErrorString*); 668a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool setAttribute(Element*, const String& name, const String& value, ErrorString*); 678a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool removeAttribute(Element*, const String& name, ErrorString*); 688a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool setOuterHTML(Node*, const String& html, Node** newNode, ErrorString*); 698a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen bool replaceWholeText(Text*, const String& text, ErrorString*); 708a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 718a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chenprivate: 728a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen class DOMAction; 738a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen class RemoveChildAction; 748a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen class InsertBeforeAction; 758a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen class RemoveAttributeAction; 768a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen class SetAttributeAction; 778a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen class SetOuterHTMLAction; 788a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen class ReplaceWholeTextAction; 798a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen class ReplaceChildNodeAction; 808a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen class SetNodeValueAction; 818a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 828a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen RawPtrWillBeMember<InspectorHistory> m_history; 838a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen}; 848a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 858a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 868a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen} // namespace blink 878a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen 888a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen#endif // !defined(DOMEditor_h) 898a3c0430323c28c1fbe8ceecd2cd8e58b64a9295Johnny Chen