Diff
Modified: trunk/Source/WebCore/ChangeLog (89439 => 89440)
--- trunk/Source/WebCore/ChangeLog 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/ChangeLog 2011-06-22 16:45:47 UTC (rev 89440)
@@ -1,3 +1,57 @@
+2011-06-22 Ryosuke Niwa <[email protected]>
+
+ Reviewed by Darin Adler.
+
+ Make instantiation of legacy editing position more explicit
+ https://bugs.webkit.org/show_bug.cgi?id=63037
+
+ Replaced the constructor of Position class that used to instantiate a legacy editing position
+ by a function called createLegacyEditingPosition.
+
+ * WebCore.exp.in: Removed the constructor from the list.
+ * accessibility/AXObjectCache.cpp:
+ (WebCore::AXObjectCache::visiblePositionForTextMarkerData): Calls createLegacyEditingPosition.
+ * accessibility/gtk/AXObjectCacheAtk.cpp:
+ (WebCore::AXObjectCache::nodeTextChangePlatformNotification): No longer uses Positions to instantiate a range.
+ * dom/Position.cpp:
+ (WebCore::Position::Position): New constructor takes LegacyEditingOffset, which can only be instantiated
+ by createLegacyEditingPosition.
+ (WebCore::Position::previous): Calls createLegacyEditingPosition.
+ (WebCore::Position::next): Ditto.
+ (WebCore::Position::upstream): Ditto.
+ (WebCore::Position::downstream): Ditto.
+ * dom/Position.h: Added new Position::LegacyEditingOffset class to hide the legacy constructor from the world.
+ (WebCore::Position::LegacyEditingOffset::value): Added.
+ (WebCore::Position::LegacyEditingOffset::LegacyEditingOffset): Added.
+ (WebCore::createLegacyEditingPosition): Added.
+ * dom/PositionIterator.cpp:
+ (WebCore::PositionIterator::operator Position): Calls createLegacyEditingPosition.
+ * dom/RangeBoundaryPoint.h:
+ (WebCore::RangeBoundaryPoint::toPosition): Ditto.
+ * editing/InsertTextCommand.cpp:
+ (WebCore::InsertTextCommand::performTrivialReplace): Instantiates new Position instead of old one; this is always
+ safe since the anchor node is always a text node.
+ * editing/VisiblePosition.cpp:
+ (WebCore::VisiblePosition::leftVisuallyDistinctCandidate): Calls createLegacyEditingPosition.
+ (WebCore::VisiblePosition::rightVisuallyDistinctCandidate): Ditto.
+ * editing/markup.cpp:
+ (WebCore::StyledMarkupAccumulator::renderedText): Ditto.
+ * editing/visible_units.cpp:
+ (WebCore::previousBoundary): Ditto.
+ (WebCore::previousLinePosition): Ditto.
+ (WebCore::nextLinePosition): Ditto.
+ * page/DOMSelection.cpp:
+ (WebCore::DOMSelection::collapse): Ditto.
+ (WebCore::DOMSelection::setBaseAndExtent): Ditto.
+ (WebCore::DOMSelection::setPosition): Ditto.
+ (WebCore::DOMSelection::extend): Ditto.
+ * rendering/RenderBlock.cpp:
+ (WebCore::RenderBlock::positionForBox): Ditto.
+ * rendering/RenderBox.cpp:
+ (WebCore::RenderBox::positionForPoint): Calls Position() instead of Position(0, 0).
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::createVisiblePosition): Calls createLegacyEditingPosition.s
+
2011-06-22 Pavel Feldman <[email protected]>
Reviewed by Yury Semikhatsky.
Modified: trunk/Source/WebCore/WebCore.exp.in (89439 => 89440)
--- trunk/Source/WebCore/WebCore.exp.in 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/WebCore.exp.in 2011-06-22 16:45:47 UTC (rev 89440)
@@ -849,7 +849,6 @@
__ZN7WebCore8Gradient12addColorStopEfRKNS_5ColorE
__ZN7WebCore8GradientC1ERKNS_10FloatPointES3_
__ZN7WebCore8IntPointC1ERK8_NSPoint
-__ZN7WebCore8PositionC1EN3WTF10PassRefPtrINS_4NodeEEEi
__ZN7WebCore8PositionC1EN3WTF10PassRefPtrINS_4NodeEEEiNS0_10AnchorTypeE
__ZN7WebCore8Settings14setJavaEnabledEb
__ZN7WebCore8Settings15setWebGLEnabledEb
Modified: trunk/Source/WebCore/accessibility/AXObjectCache.cpp (89439 => 89440)
--- trunk/Source/WebCore/accessibility/AXObjectCache.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/accessibility/AXObjectCache.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -581,7 +581,7 @@
return VisiblePosition();
// FIXME: Accessability should make it clear these are DOM-compliant offsets or store Position objects.
- VisiblePosition visiblePos = VisiblePosition(Position(textMarkerData.node, textMarkerData.offset), textMarkerData.affinity);
+ VisiblePosition visiblePos = VisiblePosition(createLegacyEditingPosition(textMarkerData.node, textMarkerData.offset), textMarkerData.affinity);
Position deepPos = visiblePos.deepEquivalent();
if (deepPos.isNull())
return VisiblePosition();
Modified: trunk/Source/WebCore/accessibility/gtk/AXObjectCacheAtk.cpp (89439 => 89440)
--- trunk/Source/WebCore/accessibility/gtk/AXObjectCacheAtk.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/accessibility/gtk/AXObjectCacheAtk.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -187,7 +187,7 @@
return;
Node* node = object->node();
- RefPtr<Range> range = Range::create(node->document(), Position(node->parentNode(), 0), Position(node, 0));
+ RefPtr<Range> range = Range::create(node->document(), node->parentNode(), 0, node, 0);
emitTextChanged(object, textChange, offset + TextIterator::rangeLength(range.get()), count);
}
Modified: trunk/Source/WebCore/dom/Position.cpp (89439 => 89440)
--- trunk/Source/WebCore/dom/Position.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/dom/Position.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -74,9 +74,9 @@
return 0;
}
-Position::Position(PassRefPtr<Node> anchorNode, int offset)
+Position::Position(PassRefPtr<Node> anchorNode, LegacyEditingOffset offset)
: m_anchorNode(anchorNode)
- , m_offset(offset)
+ , m_offset(offset.value())
, m_anchorType(anchorTypeForLegacyEditingPosition(m_anchorNode.get(), m_offset))
, m_isLegacyEditingPosition(true)
{
@@ -265,11 +265,11 @@
// Going from 1 to 0 is correct.
switch (moveType) {
case CodePoint:
- return Position(n, o - 1);
+ return createLegacyEditingPosition(n, o - 1);
case Character:
- return Position(n, uncheckedPreviousOffset(n, o));
+ return createLegacyEditingPosition(n, uncheckedPreviousOffset(n, o));
case BackwardDeletion:
- return Position(n, uncheckedPreviousOffsetForBackwardDeletion(n, o));
+ return createLegacyEditingPosition(n, uncheckedPreviousOffsetForBackwardDeletion(n, o));
}
}
@@ -277,7 +277,7 @@
if (!parent)
return *this;
- return Position(parent, n->nodeIndex());
+ return createLegacyEditingPosition(parent, n->nodeIndex());
}
Position Position::next(PositionMoveType moveType) const
@@ -302,14 +302,14 @@
// Going forward one character at a time is correct.
// 2) The new offset is a bogus offset like (<br>, 1), and there is no child.
// Going from 0 to 1 is correct.
- return Position(n, (moveType == Character) ? uncheckedNextOffset(n, o) : o + 1);
+ return createLegacyEditingPosition(n, (moveType == Character) ? uncheckedNextOffset(n, o) : o + 1);
}
ContainerNode* parent = n->nonShadowBoundaryParentNode();
if (!parent)
return *this;
- return Position(parent, n->nodeIndex() + 1);
+ return createLegacyEditingPosition(parent, n->nodeIndex() + 1);
}
int Position::uncheckedPreviousOffset(const Node* n, int current)
@@ -529,7 +529,7 @@
// iterate backward from there, looking for a qualified position
Node* boundary = enclosingVisualBoundary(startNode);
// FIXME: PositionIterator should respect Before and After positions.
- PositionIterator lastVisible = m_anchorType == PositionIsAfterAnchor ? Position(m_anchorNode, caretMaxOffset(m_anchorNode.get())) : *this;
+ PositionIterator lastVisible = m_anchorType == PositionIsAfterAnchor ? createLegacyEditingPosition(m_anchorNode.get(), caretMaxOffset(m_anchorNode.get())) : *this;
PositionIterator currentPos = lastVisible;
bool startEditable = startNode->rendererIsEditable();
Node* lastNode = startNode;
@@ -589,7 +589,7 @@
// render tree which can have a different length due to case transformation.
// Until we resolve that, disable this so we can run the layout tests!
//ASSERT(currentOffset >= renderer->caretMaxOffset());
- return Position(currentNode, renderer->caretMaxOffset());
+ return createLegacyEditingPosition(currentNode, renderer->caretMaxOffset());
}
unsigned textOffset = currentPos.offsetInLeafNode();
@@ -651,7 +651,7 @@
// iterate forward from there, looking for a qualified position
Node* boundary = enclosingVisualBoundary(startNode);
// FIXME: PositionIterator should respect Before and After positions.
- PositionIterator lastVisible = m_anchorType == PositionIsAfterAnchor ? Position(m_anchorNode, caretMaxOffset(m_anchorNode.get())) : *this;
+ PositionIterator lastVisible = m_anchorType == PositionIsAfterAnchor ? createLegacyEditingPosition(m_anchorNode.get(), caretMaxOffset(m_anchorNode.get())) : *this;
PositionIterator currentPos = lastVisible;
bool startEditable = startNode->rendererIsEditable();
Node* lastNode = startNode;
@@ -704,7 +704,7 @@
// Return position before tables and nodes which have content that can be ignored.
if (editingIgnoresContent(currentNode) || isTableElement(currentNode)) {
if (currentPos.offsetInLeafNode() <= renderer->caretMinOffset())
- return Position(currentNode, renderer->caretMinOffset());
+ return createLegacyEditingPosition(currentNode, renderer->caretMinOffset());
continue;
}
@@ -712,7 +712,7 @@
if (renderer->isText() && toRenderText(renderer)->firstTextBox()) {
if (currentNode != startNode) {
ASSERT(currentPos.atStartOfNode());
- return Position(currentNode, renderer->caretMinOffset());
+ return createLegacyEditingPosition(currentNode, renderer->caretMinOffset());
}
unsigned textOffset = currentPos.offsetInLeafNode();
Modified: trunk/Source/WebCore/dom/Position.h (89439 => 89440)
--- trunk/Source/WebCore/dom/Position.h 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/dom/Position.h 2011-06-22 16:45:47 UTC (rev 89440)
@@ -65,8 +65,19 @@
}
// For creating legacy editing positions: (Anchor type will be determined from editingIgnoresContent(node))
- Position(PassRefPtr<Node> anchorNode, int offset);
+ class LegacyEditingOffset {
+ public:
+ int value() const { return m_offset; }
+ private:
+ explicit LegacyEditingOffset(int offset) : m_offset(offset) { }
+
+ friend Position createLegacyEditingPosition(PassRefPtr<Node>, int offset);
+
+ int m_offset;
+ };
+ Position(PassRefPtr<Node> anchorNode, LegacyEditingOffset);
+
// For creating before/after positions:
Position(PassRefPtr<Node> anchorNode, AnchorType);
// For creating offset positions:
@@ -193,6 +204,11 @@
bool m_isLegacyEditingPosition : 1;
};
+inline Position createLegacyEditingPosition(PassRefPtr<Node> node, int offset)
+{
+ return Position(node, Position::LegacyEditingOffset(offset));
+}
+
inline bool operator==(const Position& a, const Position& b)
{
// FIXME: In <div><img></div> [div, 0] != [img, 0] even though most of the
Modified: trunk/Source/WebCore/dom/PositionIterator.cpp (89439 => 89440)
--- trunk/Source/WebCore/dom/PositionIterator.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/dom/PositionIterator.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -46,7 +46,7 @@
}
if (m_anchorNode->hasChildNodes())
return lastPositionInOrAfterNode(m_anchorNode);
- return Position(m_anchorNode, m_offsetInAnchor);
+ return createLegacyEditingPosition(m_anchorNode, m_offsetInAnchor);
}
void PositionIterator::increment()
Modified: trunk/Source/WebCore/dom/RangeBoundaryPoint.h (89439 => 89440)
--- trunk/Source/WebCore/dom/RangeBoundaryPoint.h 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/dom/RangeBoundaryPoint.h 2011-06-22 16:45:47 UTC (rev 89440)
@@ -92,7 +92,7 @@
inline const Position RangeBoundaryPoint::toPosition() const
{
ensureOffsetIsValid();
- return Position(m_containerNode.get(), m_offsetInContainer);
+ return createLegacyEditingPosition(m_containerNode.get(), m_offsetInContainer);
}
inline int RangeBoundaryPoint::offset() const
Modified: trunk/Source/WebCore/editing/InsertTextCommand.cpp (89439 => 89440)
--- trunk/Source/WebCore/editing/InsertTextCommand.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/editing/InsertTextCommand.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -87,7 +87,7 @@
replaceTextInNode(static_cast<Text*>(start.containerNode()), start.offsetInContainerNode(), end.offsetInContainerNode() - start.offsetInContainerNode(), text);
- Position endPosition(start.containerNode(), start.offsetInContainerNode() + text.length());
+ Position endPosition(start.containerNode(), start.offsetInContainerNode() + text.length(), Position::PositionIsOffsetInAnchor);
// We could have inserted a part of composed character sequence,
// so we are basically treating ending selection as a range to avoid validation.
Modified: trunk/Source/WebCore/editing/VisiblePosition.cpp (89439 => 89440)
--- trunk/Source/WebCore/editing/VisiblePosition.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/editing/VisiblePosition.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -230,7 +230,7 @@
break;
}
- p = Position(renderer->node(), offset);
+ p = createLegacyEditingPosition(renderer->node(), offset);
if ((p.isCandidate() && p.downstream() != downstreamStart) || p.atStartOfTree() || p.atEndOfTree())
return p;
@@ -382,7 +382,7 @@
break;
}
- p = Position(renderer->node(), offset);
+ p = createLegacyEditingPosition(renderer->node(), offset);
if ((p.isCandidate() && p.downstream() != downstreamStart) || p.atStartOfTree() || p.atEndOfTree())
return p;
Modified: trunk/Source/WebCore/editing/markup.cpp (89439 => 89440)
--- trunk/Source/WebCore/editing/markup.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/editing/markup.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -219,8 +219,8 @@
if (range && node == range->endContainer(ec))
endOffset = range->endOffset(ec);
- Position start(const_cast<Node*>(node), startOffset);
- Position end(const_cast<Node*>(node), endOffset);
+ Position start = createLegacyEditingPosition(const_cast<Node*>(node), startOffset);
+ Position end = createLegacyEditingPosition(const_cast<Node*>(node), endOffset);
return plainText(Range::create(node->document(), start, end).get());
}
Modified: trunk/Source/WebCore/editing/visible_units.cpp (89439 => 89440)
--- trunk/Source/WebCore/editing/visible_units.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/editing/visible_units.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -59,7 +59,7 @@
return VisiblePosition();
Document* d = boundary->document();
- Position start = Position(boundary, 0).parentAnchoredEquivalent();
+ Position start = createLegacyEditingPosition(boundary, 0).parentAnchoredEquivalent();
Position end = pos.parentAnchoredEquivalent();
RefPtr<Range> searchRange = Range::create(d);
@@ -123,7 +123,7 @@
Node* node = it.range()->startContainer(ec);
if ((node->isTextNode() && static_cast<int>(next) <= node->maxCharacterOffset()) || (node->renderer() && node->renderer()->isBR() && !next))
// The next variable contains a usable index into a text node
- return VisiblePosition(Position(node, next), DOWNSTREAM);
+ return VisiblePosition(createLegacyEditingPosition(node, next), DOWNSTREAM);
// Use the character iterator to translate the next value into a DOM position.
BackwardsCharacterIterator charIt(searchRange.get());
@@ -555,12 +555,12 @@
while (n) {
if (highestEditableRoot(firstPositionInOrBeforeNode(n)) != highestRoot)
break;
- Position pos(n, caretMinOffset(n));
+ Position pos = createLegacyEditingPosition(n, caretMinOffset(n));
if (pos.isCandidate()) {
RenderObject* o = n->renderer();
ASSERT(o);
if (canHaveCursor(o)) {
- Position maxPos(n, caretMaxOffset(n));
+ Position maxPos = createLegacyEditingPosition(n, caretMaxOffset(n));
maxPos.getInlineBoxAndOffset(DOWNSTREAM, box, ignoredCaretOffset);
if (box) {
// previous root line box found
@@ -660,7 +660,7 @@
while (n) {
if (highestEditableRoot(firstPositionInOrBeforeNode(n)) != highestRoot)
break;
- Position pos(n, caretMinOffset(n));
+ Position pos = createLegacyEditingPosition(n, caretMinOffset(n));
if (pos.isCandidate()) {
ASSERT(n->renderer());
pos.getInlineBoxAndOffset(DOWNSTREAM, box, ignoredCaretOffset);
Modified: trunk/Source/WebCore/page/DOMSelection.cpp (89439 => 89440)
--- trunk/Source/WebCore/page/DOMSelection.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/page/DOMSelection.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -213,7 +213,7 @@
return;
// FIXME: Eliminate legacy editing positions
- m_frame->selection()->moveTo(VisiblePosition(Position(node, offset), DOWNSTREAM));
+ m_frame->selection()->moveTo(VisiblePosition(createLegacyEditingPosition(node, offset), DOWNSTREAM));
}
void DOMSelection::collapseToEnd(ExceptionCode& ec)
@@ -267,8 +267,8 @@
return;
// FIXME: Eliminate legacy editing positions
- VisiblePosition visibleBase = VisiblePosition(Position(baseNode, baseOffset), DOWNSTREAM);
- VisiblePosition visibleExtent = VisiblePosition(Position(extentNode, extentOffset), DOWNSTREAM);
+ VisiblePosition visibleBase = VisiblePosition(createLegacyEditingPosition(baseNode, baseOffset), DOWNSTREAM);
+ VisiblePosition visibleExtent = VisiblePosition(createLegacyEditingPosition(extentNode, extentOffset), DOWNSTREAM);
m_frame->selection()->moveTo(visibleBase, visibleExtent);
}
@@ -286,7 +286,7 @@
return;
// FIXME: Eliminate legacy editing positions
- m_frame->selection()->moveTo(VisiblePosition(Position(node, offset), DOWNSTREAM));
+ m_frame->selection()->moveTo(VisiblePosition(createLegacyEditingPosition(node, offset), DOWNSTREAM));
}
void DOMSelection::modify(const String& alterString, const String& directionString, const String& granularityString)
@@ -360,7 +360,7 @@
return;
// FIXME: Eliminate legacy editing positions
- m_frame->selection()->setExtent(VisiblePosition(Position(node, offset), DOWNSTREAM));
+ m_frame->selection()->setExtent(VisiblePosition(createLegacyEditingPosition(node, offset), DOWNSTREAM));
}
PassRefPtr<Range> DOMSelection::getRangeAt(int index, ExceptionCode& ec)
Modified: trunk/Source/WebCore/rendering/RenderBlock.cpp (89439 => 89440)
--- trunk/Source/WebCore/rendering/RenderBlock.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/rendering/RenderBlock.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -4090,13 +4090,13 @@
return Position();
if (!box->renderer()->node())
- return Position(node(), start ? caretMinOffset() : caretMaxOffset());
+ return createLegacyEditingPosition(node(), start ? caretMinOffset() : caretMaxOffset());
if (!box->isInlineTextBox())
- return Position(box->renderer()->node(), start ? box->renderer()->caretMinOffset() : box->renderer()->caretMaxOffset());
+ return createLegacyEditingPosition(box->renderer()->node(), start ? box->renderer()->caretMinOffset() : box->renderer()->caretMaxOffset());
InlineTextBox *textBox = static_cast<InlineTextBox *>(box);
- return Position(box->renderer()->node(), start ? textBox->start() : textBox->start() + textBox->len());
+ return createLegacyEditingPosition(box->renderer()->node(), start ? textBox->start() : textBox->start() + textBox->len());
}
// FIXME: This function should go on RenderObject as an instance method. Then
Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (89439 => 89440)
--- trunk/Source/WebCore/rendering/RenderBox.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -3097,7 +3097,7 @@
{
// no children...return this render object's element, if there is one, and offset 0
if (!firstChild())
- return createVisiblePosition(node() ? firstPositionInOrBeforeNode(node()) : Position(0, 0));
+ return createVisiblePosition(node() ? firstPositionInOrBeforeNode(node()) : Position());
int xPos = point.x();
int yPos = point.y();
Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (89439 => 89440)
--- trunk/Source/WebCore/rendering/RenderObject.cpp 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp 2011-06-22 16:45:47 UTC (rev 89440)
@@ -2520,7 +2520,7 @@
if (Node* node = this->node()) {
if (!node->rendererIsEditable()) {
// If it can be found, we prefer a visually equivalent position that is editable.
- Position position(node, offset);
+ Position position = createLegacyEditingPosition(node, offset);
Position candidate = position.downstream(CanCrossEditingBoundary);
if (candidate.deprecatedNode()->rendererIsEditable())
return VisiblePosition(candidate, affinity);
@@ -2529,7 +2529,7 @@
return VisiblePosition(candidate, affinity);
}
// FIXME: Eliminate legacy editing positions
- return VisiblePosition(Position(node, offset), affinity);
+ return VisiblePosition(createLegacyEditingPosition(node, offset), affinity);
}
// We don't want to cross the boundary between editable and non-editable
Modified: trunk/Source/WebKit/mac/ChangeLog (89439 => 89440)
--- trunk/Source/WebKit/mac/ChangeLog 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebKit/mac/ChangeLog 2011-06-22 16:45:47 UTC (rev 89440)
@@ -1,3 +1,16 @@
+2011-06-22 Ryosuke Niwa <[email protected]>
+
+ Reviewed by Darin Adler.
+
+ Make instantiation of legacy editing position more explicit
+ https://bugs.webkit.org/show_bug.cgi?id=63037
+
+ Create new positions since we can't create a legacy editing position outside of WebCore anymore.
+
+ * WebView/WebFrame.mm:
+ (-[WebFrame _smartDeleteRangeForProposedRange:]): Calls createLegacyEditingPosition.
+ (-[WebFrame _smartInsertForString:replacingRange:beforeString:afterString:]): Ditto.
+
2011-06-20 Dimitri Glazkov <[email protected]>
Reviewed by Kent Tamura.
Modified: trunk/Source/WebKit/mac/WebView/WebFrame.mm (89439 => 89440)
--- trunk/Source/WebKit/mac/WebView/WebFrame.mm 2011-06-22 16:24:52 UTC (rev 89439)
+++ trunk/Source/WebKit/mac/WebView/WebFrame.mm 2011-06-22 16:45:47 UTC (rev 89440)
@@ -740,8 +740,8 @@
_private->coreFrame->document()->updateLayoutIgnorePendingStylesheets();
- Position start(startContainer, [proposedRange startOffset]);
- Position end(endContainer, [proposedRange endOffset]);
+ Position start = Position(startContainer, [proposedRange startOffset], Position::PositionIsOffsetInAnchor);
+ Position end = Position(endContainer, [proposedRange endOffset], Position::PositionIsOffsetInAnchor);
Position newStart = start.upstream().leadingWhitespacePosition(DOWNSTREAM, true);
if (newStart.isNull())
newStart = start;
@@ -1104,8 +1104,8 @@
Node *startContainer = core([rangeToReplace startContainer]);
Node *endContainer = core([rangeToReplace endContainer]);
- Position startPos(startContainer, [rangeToReplace startOffset]);
- Position endPos(endContainer, [rangeToReplace endOffset]);
+ Position startPos(startContainer, [rangeToReplace startOffset], Position::PositionIsOffsetInAnchor);
+ Position endPos(endContainer, [rangeToReplace endOffset], Position::PositionIsOffsetInAnchor);
VisiblePosition startVisiblePos = VisiblePosition(startPos, VP_DEFAULT_AFFINITY);
VisiblePosition endVisiblePos = VisiblePosition(endPos, VP_DEFAULT_AFFINITY);