Title: [93199] trunk/Source/WebCore
Revision
93199
Author
[email protected]
Date
2011-08-17 03:52:01 -0700 (Wed, 17 Aug 2011)

Log Message

Get rid of calls to deprecatedNode and deprecatedEditingOffset in
AccessibilityRenderObject.cpp and InsertTextCommand.cpp
https://bugs.webkit.org/show_bug.cgi?id=66014

Reviewed by Hajime Morita.

Removed calls to deprecatedNode and deprecatedEditingOffsets in the following files.

* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::indexForVisiblePosition): Calls Position::rootEditableElement
and Range::setEnd(const Position&, ExceptionCode) instead of manually pulling deprecatedNode
and deprecatedEditingOffset.
(WebCore::AccessibilityRenderObject::index): Abstracted the logic to loop through render objects
from deprecatedNodes' renderer to m_renderer as renderObjectContainsPosition.
* dom/Position.h:
(WebCore::Position::rootEditableElement): Added.
* dom/Range.cpp:
(WebCore::Range::setStart): Added.
(WebCore::Range::setEnd): Added.
* dom/Range.h:
* editing/InsertTextCommand.cpp:
(WebCore::InsertTextCommand::insertTab):
* editing/RenderedPosition.cpp:
(WebCore::renderObjectContainsPosition): Extracted from AccessibilityRenderObject::index.
* editing/RenderedPosition.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (93198 => 93199)


--- trunk/Source/WebCore/ChangeLog	2011-08-17 10:49:25 UTC (rev 93198)
+++ trunk/Source/WebCore/ChangeLog	2011-08-17 10:52:01 UTC (rev 93199)
@@ -1,3 +1,31 @@
+2011-08-17  Ryosuke Niwa  <[email protected]>
+
+        Get rid of calls to deprecatedNode and deprecatedEditingOffset in
+        AccessibilityRenderObject.cpp and InsertTextCommand.cpp
+        https://bugs.webkit.org/show_bug.cgi?id=66014
+
+        Reviewed by Hajime Morita.
+
+        Removed calls to deprecatedNode and deprecatedEditingOffsets in the following files.
+
+        * accessibility/AccessibilityRenderObject.cpp:
+        (WebCore::AccessibilityRenderObject::indexForVisiblePosition): Calls Position::rootEditableElement
+        and Range::setEnd(const Position&, ExceptionCode) instead of manually pulling deprecatedNode
+        and deprecatedEditingOffset.
+        (WebCore::AccessibilityRenderObject::index): Abstracted the logic to loop through render objects
+        from deprecatedNodes' renderer to m_renderer as renderObjectContainsPosition.
+        * dom/Position.h:
+        (WebCore::Position::rootEditableElement): Added.
+        * dom/Range.cpp:
+        (WebCore::Range::setStart): Added.
+        (WebCore::Range::setEnd): Added.
+        * dom/Range.h:
+        * editing/InsertTextCommand.cpp:
+        (WebCore::InsertTextCommand::insertTab):
+        * editing/RenderedPosition.cpp:
+        (WebCore::renderObjectContainsPosition): Extracted from AccessibilityRenderObject::index.
+        * editing/RenderedPosition.h:
+
 2011-08-17  Sailesh Agrawal  <[email protected]>
 
         Chromium Mac: Fix issue where scrollbar wouldn't be drawn until page finished loading

Modified: trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp (93198 => 93199)


--- trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp	2011-08-17 10:49:25 UTC (rev 93198)
+++ trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp	2011-08-17 10:52:01 UTC (rev 93199)
@@ -73,6 +73,7 @@
 #include "RenderTheme.h"
 #include "RenderView.h"
 #include "RenderWidget.h"
+#include "RenderedPosition.h"
 #include "SelectElement.h"
 #include "Text.h"
 #include "TextIterator.h"
@@ -2517,13 +2518,13 @@
         return 0;
     
     Position indexPosition = pos.deepEquivalent();
-    if (!indexPosition.anchorNode() || indexPosition.anchorNode()->rootEditableElement() != node)
+    if (indexPosition.isNull() || pos.rootEditableElement() != node)
         return 0;
     
     ExceptionCode ec = 0;
     RefPtr<Range> range = Range::create(m_renderer->document());
     range->setStart(node, 0, ec);
-    range->setEnd(indexPosition.anchorNode(), indexPosition.deprecatedEditingOffset(), ec);
+    range->setEnd(indexPosition, ec);
 
 #if PLATFORM(GTK)
     // We need to consider replaced elements for GTK, as they will be
@@ -2672,16 +2673,10 @@
 {
     if (!isTextControl())
         return -1;
+
+    if (renderObjectContainsPosition(m_renderer, position.deepEquivalent()))
+        return indexForVisiblePosition(position);
     
-    Node* node = position.deepEquivalent().deprecatedNode();
-    if (!node)
-        return -1;
-    
-    for (RenderObject* renderer = node->renderer(); renderer && renderer->node(); renderer = renderer->parent()) {
-        if (renderer == m_renderer)
-            return indexForVisiblePosition(position);
-    }
-    
     return -1;
 }
 

Modified: trunk/Source/WebCore/dom/Position.h (93198 => 93199)


--- trunk/Source/WebCore/dom/Position.h	2011-08-17 10:49:25 UTC (rev 93198)
+++ trunk/Source/WebCore/dom/Position.h	2011-08-17 10:52:01 UTC (rev 93199)
@@ -128,6 +128,11 @@
     Node* deprecatedNode() const { return m_anchorNode.get(); }
 
     Document* document() const { return m_anchorNode ? m_anchorNode->document() : 0; }
+    Element* rootEditableElement() const
+    {
+        Node* container = containerNode();
+        return container ? container->rootEditableElement() : 0;
+    }
 
     // These should only be used for PositionIsOffsetInAnchor positions, unless
     // the position is a legacy editing position.

Modified: trunk/Source/WebCore/dom/Range.cpp (93198 => 93199)


--- trunk/Source/WebCore/dom/Range.cpp	2011-08-17 10:49:25 UTC (rev 93198)
+++ trunk/Source/WebCore/dom/Range.cpp	2011-08-17 10:52:01 UTC (rev 93199)
@@ -274,6 +274,18 @@
     }
 }
 
+void Range::setStart(const Position& start, ExceptionCode& ec)
+{
+    Position parentAnchored = start.parentAnchoredEquivalent();
+    setStart(parentAnchored.containerNode(), parentAnchored.offsetInContainerNode(), ec);
+}
+
+void Range::setEnd(const Position& end, ExceptionCode& ec)
+{
+    Position parentAnchored = end.parentAnchoredEquivalent();
+    setStart(parentAnchored.containerNode(), parentAnchored.offsetInContainerNode(), ec);
+}
+
 void Range::collapse(bool toStart, ExceptionCode& ec)
 {
     if (!m_start.container()) {

Modified: trunk/Source/WebCore/dom/Range.h (93198 => 93199)


--- trunk/Source/WebCore/dom/Range.h	2011-08-17 10:49:25 UTC (rev 93198)
+++ trunk/Source/WebCore/dom/Range.h	2011-08-17 10:52:01 UTC (rev 93199)
@@ -103,6 +103,8 @@
 
     const Position startPosition() const { return m_start.toPosition(); }
     const Position endPosition() const { return m_end.toPosition(); }
+    void setStart(const Position&, ExceptionCode&);
+    void setEnd(const Position&, ExceptionCode&);
 
     Node* firstNode() const;
     Node* pastLastNode() const;

Modified: trunk/Source/WebCore/editing/InsertTextCommand.cpp (93198 => 93199)


--- trunk/Source/WebCore/editing/InsertTextCommand.cpp	2011-08-17 10:49:25 UTC (rev 93198)
+++ trunk/Source/WebCore/editing/InsertTextCommand.cpp	2011-08-17 10:52:01 UTC (rev 93199)
@@ -198,10 +198,10 @@
 Position InsertTextCommand::insertTab(const Position& pos)
 {
     Position insertPos = VisiblePosition(pos, DOWNSTREAM).deepEquivalent();
-        
-    Node* node = insertPos.deprecatedNode();
-    unsigned int offset = insertPos.deprecatedEditingOffset();
 
+    Node* node = insertPos.containerNode();
+    unsigned int offset = node->isTextNode() ? insertPos.offsetInContainerNode() : 0;
+
     // keep tabs coalesced in tab span
     if (isTabSpanTextNode(node)) {
         RefPtr<Text> textNode = static_cast<Text*>(node);

Modified: trunk/Source/WebCore/editing/RenderedPosition.cpp (93198 => 93199)


--- trunk/Source/WebCore/editing/RenderedPosition.cpp	2011-08-17 10:49:25 UTC (rev 93198)
+++ trunk/Source/WebCore/editing/RenderedPosition.cpp	2011-08-17 10:52:01 UTC (rev 93199)
@@ -101,4 +101,13 @@
     return localRect == LayoutRect() ? LayoutRect() : m_renderer->localToAbsoluteQuad(FloatRect(localRect)).enclosingBoundingBox();
 }
 
+bool renderObjectContainsPosition(RenderObject* target, const Position& position)
+{
+    for (RenderObject* renderer = rendererFromPosition(position); renderer && renderer->node(); renderer = renderer->parent()) {
+        if (renderer == target)
+            return true;
+    }
+    return false;
+}
+
 };

Modified: trunk/Source/WebCore/editing/RenderedPosition.h (93198 => 93199)


--- trunk/Source/WebCore/editing/RenderedPosition.h	2011-08-17 10:49:25 UTC (rev 93198)
+++ trunk/Source/WebCore/editing/RenderedPosition.h	2011-08-17 10:52:01 UTC (rev 93199)
@@ -68,6 +68,8 @@
 {
 }
 
+bool renderObjectContainsPosition(RenderObject*, const Position&);
+
 };
 
 #endif // RenderedPosition_h
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to