2011-02-10 Sheriff Bot <webkit.review.bot@gmail.com>
authorphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Feb 2011 17:13:32 +0000 (17:13 +0000)
committerphiln@webkit.org <philn@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Feb 2011 17:13:32 +0000 (17:13 +0000)
        Unreviewed, rolling out r78219.
        http://trac.webkit.org/changeset/78219
        https://bugs.webkit.org/show_bug.cgi?id=54215

        breaks editing/style/iframe-onload-crash.html on GTK 64-bit
        Debug (Requested by philn-tp on #webkit).

        * dom/Document.h:
        * dom/DocumentFragment.h:
        * dom/Element.h:
        * dom/Node.h:
        * dom/Text.h:
        * editing/htmlediting.cpp:
        (WebCore::editingIgnoresContent):
        (WebCore::canHaveChildrenForEditing):
        * editing/htmlediting.h:
        * html/HTMLBRElement.h:
        * html/HTMLButtonElement.h:
        * html/HTMLDataGridElement.h:
        * html/HTMLFormControlElement.h:
        * html/HTMLFrameElementBase.h:
        * html/HTMLHRElement.h:
        * html/HTMLImageElement.h:
        * html/HTMLMeterElement.h:
        * html/HTMLOutputElement.h:
        * html/HTMLPlugInElement.h:
        * html/HTMLProgressElement.h:
        * wml/WMLBRElement.h:
        * wml/WMLDoElement.h:
        * wml/WMLImageElement.h:
        * wml/WMLInputElement.h:
        * wml/WMLSelectElement.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@78232 268f45cc-cd09-0410-ab3c-d52691b4dbfc

24 files changed:
Source/WebCore/ChangeLog
Source/WebCore/dom/Document.h
Source/WebCore/dom/DocumentFragment.h
Source/WebCore/dom/Element.h
Source/WebCore/dom/Node.h
Source/WebCore/dom/Text.h
Source/WebCore/editing/htmlediting.cpp
Source/WebCore/editing/htmlediting.h
Source/WebCore/html/HTMLBRElement.h
Source/WebCore/html/HTMLButtonElement.h
Source/WebCore/html/HTMLDataGridElement.h
Source/WebCore/html/HTMLFormControlElement.h
Source/WebCore/html/HTMLFrameElementBase.h
Source/WebCore/html/HTMLHRElement.h
Source/WebCore/html/HTMLImageElement.h
Source/WebCore/html/HTMLMeterElement.h
Source/WebCore/html/HTMLOutputElement.h
Source/WebCore/html/HTMLPlugInElement.h
Source/WebCore/html/HTMLProgressElement.h
Source/WebCore/wml/WMLBRElement.h
Source/WebCore/wml/WMLDoElement.h
Source/WebCore/wml/WMLImageElement.h
Source/WebCore/wml/WMLInputElement.h
Source/WebCore/wml/WMLSelectElement.h

index 78db148..c3b078a 100644 (file)
@@ -1,3 +1,38 @@
+2011-02-10  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r78219.
+        http://trac.webkit.org/changeset/78219
+        https://bugs.webkit.org/show_bug.cgi?id=54215
+
+        breaks editing/style/iframe-onload-crash.html on GTK 64-bit
+        Debug (Requested by philn-tp on #webkit).
+
+        * dom/Document.h:
+        * dom/DocumentFragment.h:
+        * dom/Element.h:
+        * dom/Node.h:
+        * dom/Text.h:
+        * editing/htmlediting.cpp:
+        (WebCore::editingIgnoresContent):
+        (WebCore::canHaveChildrenForEditing):
+        * editing/htmlediting.h:
+        * html/HTMLBRElement.h:
+        * html/HTMLButtonElement.h:
+        * html/HTMLDataGridElement.h:
+        * html/HTMLFormControlElement.h:
+        * html/HTMLFrameElementBase.h:
+        * html/HTMLHRElement.h:
+        * html/HTMLImageElement.h:
+        * html/HTMLMeterElement.h:
+        * html/HTMLOutputElement.h:
+        * html/HTMLPlugInElement.h:
+        * html/HTMLProgressElement.h:
+        * wml/WMLBRElement.h:
+        * wml/WMLDoElement.h:
+        * wml/WMLImageElement.h:
+        * wml/WMLInputElement.h:
+        * wml/WMLSelectElement.h:
+
 2011-02-10  Andras Becsi  <abecsi@webkit.org>
 
         Rubber-stamped by Csaba Osztrogon√°c.
index 5ce9050..eaa3a23 100644 (file)
@@ -438,8 +438,6 @@ public:
         return m_styleSelector.get();
     }
 
-    virtual bool canContainRangeEndPoint() const { return true; }
-
     Element* getElementByAccessKey(const String& key) const;
     
     /**
index bf5d3b3..d588b4e 100644 (file)
@@ -35,8 +35,6 @@ public:
 
     void parseHTML(const String&, Element* contextElement, FragmentScriptingPermission = FragmentScriptingAllowed);
     bool parseXML(const String&, Element* contextElement, FragmentScriptingPermission = FragmentScriptingAllowed);
-    
-    virtual bool canContainRangeEndPoint() const { return true; }
 
 private:
     DocumentFragment(Document*);
index e85d8dc..de42a5f 100644 (file)
@@ -313,8 +313,6 @@ public:
     virtual bool isInRange() const { return false; }
     virtual bool isOutOfRange() const { return false; }
 
-    virtual bool canContainRangeEndPoint() const { return true; }
-
     virtual bool formControlValueMatchesRenderer() const { return false; }
     virtual void setFormControlValueMatchesRenderer(bool) { }
 
index 9124efd..74e1cc4 100644 (file)
@@ -230,8 +230,6 @@ 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;
index e9e02e0..45678ef 100644 (file)
@@ -42,8 +42,6 @@ public:
     PassRefPtr<Text> replaceWholeText(const String&, ExceptionCode&);
 
     virtual void attach();
-    
-    virtual bool canContainRangeEndPoint() const { return true; }
 
 protected:
     Text(Document* document, const String& data)
index b25da3c..cb157d2 100644 (file)
@@ -64,6 +64,33 @@ bool isAtomicNode(const Node *node)
     return node && (!node->hasChildNodes() || editingIgnoresContent(node));
 }
 
+// Returns true for nodes that either have no content, or have content that is ignored (skipped 
+// over) while editing.  There are no VisiblePositions inside these nodes.
+bool editingIgnoresContent(const Node* node)
+{
+    return !canHaveChildrenForEditing(node) && !node->isTextNode();
+}
+
+bool canHaveChildrenForEditing(const Node* node)
+{
+    return !node->hasTagName(hrTag) &&
+           !node->hasTagName(brTag) &&
+           !node->hasTagName(imgTag) &&
+           !node->hasTagName(buttonTag) &&
+           !node->hasTagName(inputTag) &&
+           !node->hasTagName(textareaTag) &&
+           !node->hasTagName(objectTag) &&
+           !node->hasTagName(iframeTag) &&
+           !node->hasTagName(embedTag) &&
+           !node->hasTagName(appletTag) &&
+           !node->hasTagName(selectTag) &&
+           !node->hasTagName(datagridTag) &&
+#if ENABLE(WML)
+           !node->hasTagName(WMLNames::doTag) &&
+#endif
+           !node->isTextNode();
+}
+
 // Compare two positions, taking into account the possibility that one or both
 // could be inside a shadow tree. Only works for non-null values.
 int comparePositions(const Position& a, const Position& b)
index 2f07d78..b71e879 100644 (file)
@@ -77,21 +77,8 @@ int caretMaxOffset(const Node*);
 
 // boolean functions on Node
 
-// FIXME: editingIgnoresContent, canHaveChildrenForEditing, and isAtomicNode
-// should be renamed to reflect its usage.
-
-// Returns true for nodes that either have no content, or have content that is ignored (skipped 
-// over) while editing.  There are no VisiblePositions inside these nodes.
-inline bool editingIgnoresContent(const Node* node)
-{
-    return !node->canContainRangeEndPoint();
-}
-
-inline bool canHaveChildrenForEditing(const Node* node)
-{
-    return !node->isTextNode() && node->canContainRangeEndPoint();
-}
-
+bool editingIgnoresContent(const Node*);
+bool canHaveChildrenForEditing(const Node*);
 bool isAtomicNode(const Node*);
 bool isBlock(const Node*);
 bool isSpecialElement(const Node*);
index 3857a9b..05df8f6 100644 (file)
@@ -33,8 +33,6 @@ public:
     static PassRefPtr<HTMLBRElement> create(Document*);
     static PassRefPtr<HTMLBRElement> create(const QualifiedName&, Document*);
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 private:
     HTMLBRElement(const QualifiedName&, Document*);
 
index 9828df5..0d64f06 100644 (file)
@@ -34,8 +34,6 @@ public:
 
     String value() const;
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 private:
     HTMLButtonElement(const QualifiedName& tagName, Document*, HTMLFormElement*);
 
index 0d4752b..c594623 100644 (file)
@@ -53,8 +53,6 @@ public:
 
     DataGridColumnList* columns() const { return m_columns.get(); }
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 private:
     HTMLDataGridElement(const QualifiedName&, Document*);
 
index ecd3dd3..368dcfa 100644 (file)
@@ -168,8 +168,6 @@ class HTMLFormControlElementWithState : public HTMLFormControlElement {
 public:
     virtual ~HTMLFormControlElementWithState();
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 protected:
     HTMLFormControlElementWithState(const QualifiedName& tagName, Document*, HTMLFormElement*);
 
index 5a16ef9..e5f9c46 100644 (file)
@@ -44,8 +44,6 @@ public:
 
     void setRemainsAliveOnRemovalFromTree(bool);
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 protected:
     HTMLFrameElementBase(const QualifiedName&, Document*);
 
index 357ac8f..e86bb56 100644 (file)
@@ -32,8 +32,6 @@ public:
     static PassRefPtr<HTMLHRElement> create(Document*);
     static PassRefPtr<HTMLHRElement> create(const QualifiedName&, Document*);
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 private:
     HTMLHRElement(const QualifiedName&, Document*);
     
index 51f26a6..7f38216 100644 (file)
@@ -74,8 +74,6 @@ public:
 
     bool haveFiredLoadEvent() const { return m_imageLoader.haveFiredLoadEvent(); }
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 protected:
     HTMLImageElement(const QualifiedName&, Document*, HTMLFormElement* = 0);
 
index 8b19099..d5038e0 100644 (file)
@@ -55,9 +55,6 @@ public:
     void setOptimum(double, ExceptionCode&);
 
     GaugeRegion gaugeRegion() const;
-
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 private:
     HTMLMeterElement(const QualifiedName&, Document*, HTMLFormElement*);
 
index 20ffcd3..4c5c684 100644 (file)
@@ -49,8 +49,6 @@ public:
     void setDefaultValue(const String&);
     void setFor(const String&);
     DOMSettableTokenList* htmlFor() const;
-    
-    virtual bool canContainRangeEndPoint() const { return false; }
 
 private:
     HTMLOutputElement(const QualifiedName&, Document*, HTMLFormElement*);
index 9012d1f..5a4221c 100644 (file)
@@ -51,8 +51,6 @@ public:
     bool isCapturingMouseEvents() const { return m_isCapturingMouseEvents; }
     void setIsCapturingMouseEvents(bool capturing) { m_isCapturingMouseEvents = capturing; }
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 protected:
     HTMLPlugInElement(const QualifiedName& tagName, Document*);
 
index 3611aaa..a0db966 100644 (file)
@@ -38,8 +38,6 @@ public:
 
     double position() const;
 
-    virtual bool canContainPosition() const { return false; }
-
 private:
     HTMLProgressElement(const QualifiedName&, Document*, HTMLFormElement*);
 
index ed9160b..fb12688 100644 (file)
@@ -40,8 +40,6 @@ public:
     virtual void parseMappedAttribute(Attribute*);
 
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
-
-    virtual bool canContainRangeEndPoint() const { return false; }
 };
 
 }
index 7cd669b..2ba6d9e 100644 (file)
@@ -53,8 +53,6 @@ public:
     void setActive(bool active) { m_isActive = active; }
     void setNoop(bool noop) { m_isNoop = noop;}
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 private:
     WMLTaskElement* m_task;
     bool m_isActive;
index a81cc17..6421f6e 100644 (file)
@@ -49,8 +49,6 @@ public:
     bool useFallbackAttribute() { return m_useFallbackAttribute; }
     void setUseFallbackAttribute(bool value) { m_useFallbackAttribute = value; }
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 private:
     WMLImageLoader m_imageLoader;
     bool m_useFallbackAttribute;
index 268e368..6c66410 100644 (file)
@@ -97,8 +97,6 @@ public:
     virtual InputElementData data() const { return m_data; }
 #endif
 
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 private:
     friend class WMLCardElement;
     void initialize();
index 13a7bc1..3d8c726 100644 (file)
@@ -90,9 +90,6 @@ public:
     bool initialized() const { return m_initialized; }
     
     virtual void listBoxSelectItem(int listIndex, bool allowMultiplySelections, bool shift, bool fireOnChangeNow = true);
-    
-    virtual bool canContainRangeEndPoint() const { return false; }
-
 private:
     virtual void insertedIntoTree(bool);