2011-05-23 Sheriff Bot <webkit.review.bot@gmail.com>
[WebKit-https.git] / Source / WebCore / dom / Node.h
index daf1c00..31fa8bf 100644 (file)
@@ -237,6 +237,8 @@ public:
     void setPreviousSibling(Node* previous) { m_previous = previous; }
     void setNextSibling(Node* next) { m_next = next; }
 
+    virtual bool canContainRangeEndPoint() const { return false; }
+
     // FIXME: These two functions belong in editing -- "atomic node" is an editing concept.
     Node* previousNodeConsideringAtomicNodes() const;
     Node* nextNodeConsideringAtomicNodes() const;
@@ -444,6 +446,8 @@ public:
     // the node's rendering object from the rendering tree and delete it.
     virtual void detach();
 
+    void forceReattach();
+
     virtual void willRemove();
     void createRendererIfNeeded();
     PassRefPtr<RenderStyle> styleForRenderer();
@@ -627,6 +631,11 @@ protected:
     };
     Node(Document*, ConstructionType);
 
+    // Do not use this method to change the document of a node until after the node has been
+    // removed from its previous document.
+    void setDocument(Document*);
+    void setDocumentRecursively(Document*);
+
     virtual void willMoveToNewOwnerDocument();
     virtual void didMoveToNewOwnerDocument();
     
@@ -640,11 +649,6 @@ protected:
     NodeRareData* ensureRareData();
 
 private:
-    // Do not use this method to change the document of a node until after the node has been
-    // removed from its previous document.
-    void setDocumentRecursively(Document*);
-    void setDocument(Document*);
-
     enum EditableLevel { Editable, RichlyEditable };
     bool rendererIsEditable(EditableLevel) const;
 
@@ -730,6 +734,14 @@ inline ContainerNode* Node::parentNodeGuaranteedHostFree() const
     return parentOrHostNode();
 }
 
+inline void Node::forceReattach()
+{
+    if (!attached())
+        return;
+    detach();
+    attach();
+}
+
 } //namespace
 
 #ifndef NDEBUG