Renaming isTableElement() to isRenderedTable() as per the FIXME comment.
Since isTableElement() anyway verifies against the node's renderer, this
seems to be a more applicable name.
Also, instead of checking against the renderer's display style property (whether
it is of type TABLE or INLINE_TABLE), we can simply call on the isTable()
method which returns true for all table renderers.
No existing tests should fail with this change.
Review URL: https://codereview.chromium.org/66383003
git-svn-id: svn://svn.chromium.org/blink/trunk@161669 bbb929c8-8fbe-4397-9dbb-9b2b20218538
diff --git a/Source/core/dom/Position.cpp b/Source/core/dom/Position.cpp
index 4ceb136..405a064 100644
--- a/Source/core/dom/Position.cpp
+++ b/Source/core/dom/Position.cpp
@@ -211,13 +211,13 @@
// FIXME: This should only be necessary for legacy positions, but is also needed for positions before and after Tables
if (m_offset <= 0 && (m_anchorType != PositionIsAfterAnchor && m_anchorType != PositionIsAfterChildren)) {
- if (m_anchorNode->parentNode() && (editingIgnoresContent(m_anchorNode.get()) || isTableElement(m_anchorNode.get())))
+ if (m_anchorNode->parentNode() && (editingIgnoresContent(m_anchorNode.get()) || isRenderedTable(m_anchorNode.get())))
return positionInParentBeforeNode(m_anchorNode.get());
return Position(m_anchorNode.get(), 0, PositionIsOffsetInAnchor);
}
if (!m_anchorNode->offsetInCharacters()
&& (m_anchorType == PositionIsAfterAnchor || m_anchorType == PositionIsAfterChildren || static_cast<unsigned>(m_offset) == m_anchorNode->childNodeCount())
- && (editingIgnoresContent(m_anchorNode.get()) || isTableElement(m_anchorNode.get()))
+ && (editingIgnoresContent(m_anchorNode.get()) || isRenderedTable(m_anchorNode.get()))
&& containerNode()) {
return positionInParentAfterNode(m_anchorNode.get());
}
@@ -635,7 +635,7 @@
return lastVisible;
// Return position after tables and nodes which have content that can be ignored.
- if (editingIgnoresContent(currentNode) || isTableElement(currentNode)) {
+ if (editingIgnoresContent(currentNode) || isRenderedTable(currentNode)) {
if (currentPos.atEndOfNode())
return positionAfterNode(currentNode);
continue;
@@ -763,7 +763,7 @@
lastVisible = currentPos;
// Return position before tables and nodes which have content that can be ignored.
- if (editingIgnoresContent(currentNode) || isTableElement(currentNode)) {
+ if (editingIgnoresContent(currentNode) || isRenderedTable(currentNode)) {
if (currentPos.offsetInLeafNode() <= renderer->caretMinOffset())
return createLegacyEditingPosition(currentNode, renderer->caretMinOffset());
continue;
@@ -889,7 +889,7 @@
if (renderer->isText())
return !nodeIsUserSelectNone(deprecatedNode()) && inRenderedText();
- if (isTableElement(deprecatedNode()) || editingIgnoresContent(deprecatedNode()))
+ if (isRenderedTable(deprecatedNode()) || editingIgnoresContent(deprecatedNode()))
return (atFirstEditingPositionForNode() || atLastEditingPositionForNode()) && !nodeIsUserSelectNone(deprecatedNode()->parentNode());
if (isHTMLHtmlElement(m_anchorNode.get()))
diff --git a/Source/core/dom/PositionIterator.cpp b/Source/core/dom/PositionIterator.cpp
index 5cc76b1..1b5dcdd 100644
--- a/Source/core/dom/PositionIterator.cpp
+++ b/Source/core/dom/PositionIterator.cpp
@@ -157,7 +157,7 @@
if (renderer->isText())
return !Position::nodeIsUserSelectNone(m_anchorNode) && Position(*this).inRenderedText();
- if (isTableElement(m_anchorNode) || editingIgnoresContent(m_anchorNode))
+ if (isRenderedTable(m_anchorNode) || editingIgnoresContent(m_anchorNode))
return (atStartOfNode() || atEndOfNode()) && !Position::nodeIsUserSelectNone(m_anchorNode->parentNode());
if (!isHTMLHtmlElement(m_anchorNode) && renderer->isRenderBlockFlow()) {
diff --git a/Source/core/editing/Caret.cpp b/Source/core/editing/Caret.cpp
index cc7b0df..4501cc8 100644
--- a/Source/core/editing/Caret.cpp
+++ b/Source/core/editing/Caret.cpp
@@ -107,7 +107,7 @@
static inline bool caretRendersInsideNode(Node* node)
{
- return node && !isTableElement(node) && !editingIgnoresContent(node);
+ return node && !isRenderedTable(node) && !editingIgnoresContent(node);
}
RenderObject* CaretBase::caretRenderer(Node* node)
diff --git a/Source/core/editing/CompositeEditCommand.cpp b/Source/core/editing/CompositeEditCommand.cpp
index d72e31c..88f3049 100644
--- a/Source/core/editing/CompositeEditCommand.cpp
+++ b/Source/core/editing/CompositeEditCommand.cpp
@@ -977,7 +977,7 @@
if (outerNode->isRootEditableElement()) {
lastNode = blockElement;
} else {
- lastNode = outerNode->cloneNode(isTableElement(outerNode.get()));
+ lastNode = outerNode->cloneNode(isRenderedTable(outerNode.get()));
appendNode(lastNode, blockElement);
}
@@ -992,7 +992,7 @@
for (size_t i = ancestors.size(); i != 0; --i) {
Node* item = ancestors[i - 1].get();
- RefPtr<Node> child = item->cloneNode(isTableElement(item));
+ RefPtr<Node> child = item->cloneNode(isRenderedTable(item));
appendNode(child, toElement(lastNode));
lastNode = child.release();
}
@@ -1122,7 +1122,7 @@
beforeParagraph = VisiblePosition(beforeParagraph.deepEquivalent());
afterParagraph = VisiblePosition(afterParagraph.deepEquivalent());
- if (beforeParagraph.isNotNull() && !isTableElement(beforeParagraph.deepEquivalent().deprecatedNode())
+ if (beforeParagraph.isNotNull() && !isRenderedTable(beforeParagraph.deepEquivalent().deprecatedNode())
&& ((!isEndOfParagraph(beforeParagraph) && !isStartOfParagraph(beforeParagraph)) || beforeParagraph == afterParagraph)) {
// FIXME: Trim text between beforeParagraph and afterParagraph if they aren't equal.
insertNodeAt(createBreakElement(document()), beforeParagraph.deepEquivalent());
diff --git a/Source/core/editing/VisibleUnits.cpp b/Source/core/editing/VisibleUnits.cpp
index 6041d27..4361a146 100644
--- a/Source/core/editing/VisibleUnits.cpp
+++ b/Source/core/editing/VisibleUnits.cpp
@@ -1150,7 +1150,7 @@
node = n;
offset = 0;
n = NodeTraversal::previousPostOrder(n, startBlock);
- } else if (editingIgnoresContent(n) || isTableElement(n)) {
+ } else if (editingIgnoresContent(n) || isRenderedTable(n)) {
node = n;
type = Position::PositionIsBeforeAnchor;
n = n->previousSibling() ? n->previousSibling() : NodeTraversal::previousPostOrder(n, startBlock);
@@ -1226,7 +1226,7 @@
node = n;
offset = r->caretMaxOffset();
n = NodeTraversal::next(n, stayInsideBlock);
- } else if (editingIgnoresContent(n) || isTableElement(n)) {
+ } else if (editingIgnoresContent(n) || isRenderedTable(n)) {
node = n;
type = Position::PositionIsAfterAnchor;
n = NodeTraversal::nextSkippingChildren(n, stayInsideBlock);
diff --git a/Source/core/editing/htmlediting.cpp b/Source/core/editing/htmlediting.cpp
index bd615dd..0ded336 100644
--- a/Source/core/editing/htmlediting.cpp
+++ b/Source/core/editing/htmlediting.cpp
@@ -434,7 +434,7 @@
if (isSpecialElement(n)) {
VisiblePosition vPos = VisiblePosition(pos, DOWNSTREAM);
VisiblePosition firstInElement = VisiblePosition(firstPositionInOrBeforeNode(n), DOWNSTREAM);
- if (isTableElement(n) && vPos == firstInElement.next())
+ if (isRenderedTable(n) && vPos == firstInElement.next())
return n;
if (vPos == firstInElement)
return n;
@@ -449,7 +449,7 @@
if (isSpecialElement(n)) {
VisiblePosition vPos = VisiblePosition(pos, DOWNSTREAM);
VisiblePosition lastInElement = VisiblePosition(lastPositionInOrAfterNode(n), DOWNSTREAM);
- if (isTableElement(n) && vPos == lastInElement.previous())
+ if (isRenderedTable(n) && vPos == lastInElement.previous())
return n;
if (vPos == lastInElement)
return n;
@@ -752,14 +752,13 @@
// Make sure there is no visible content between this li and the previous list
}
-// FIXME: do not require renderer, so that this can be used within fragments, or rename to isRenderedTable()
-bool isTableElement(Node* n)
+bool isRenderedTable(const Node* n)
{
if (!n || !n->isElementNode())
return false;
RenderObject* renderer = n->renderer();
- return (renderer && (renderer->style()->display() == TABLE || renderer->style()->display() == INLINE_TABLE));
+ return (renderer && renderer->isTable());
}
bool isTableCell(const Node* node)
diff --git a/Source/core/editing/htmlediting.h b/Source/core/editing/htmlediting.h
index fa03d45..9d11251 100644
--- a/Source/core/editing/htmlediting.h
+++ b/Source/core/editing/htmlediting.h
@@ -101,7 +101,7 @@
bool isTabSpanNode(const Node*);
bool isTabSpanTextNode(const Node*);
bool isMailBlockquote(const Node*);
-bool isTableElement(Node*);
+bool isRenderedTable(const Node*);
bool isTableCell(const Node*);
bool isEmptyTableCell(const Node*);
bool isTableStructureNode(const Node*);
diff --git a/Source/core/rendering/RenderBox.cpp b/Source/core/rendering/RenderBox.cpp
index 109929a..54b0ed5 100644
--- a/Source/core/rendering/RenderBox.cpp
+++ b/Source/core/rendering/RenderBox.cpp
@@ -4327,7 +4327,7 @@
// FIXME: Border/padding should be added for all elements but this workaround
// is needed because we use offsets inside an "atomic" element to represent
// positions before and after the element in deprecated editing offsets.
- if (node() && !(editingIgnoresContent(node()) || isTableElement(node()))) {
+ if (node() && !(editingIgnoresContent(node()) || isRenderedTable(node()))) {
rect.setX(rect.x() + borderLeft() + paddingLeft());
rect.setY(rect.y() + paddingTop() + borderTop());
}