Diff
Modified: trunk/Source/WebCore/ChangeLog (222676 => 222677)
--- trunk/Source/WebCore/ChangeLog 2017-09-30 02:11:20 UTC (rev 222676)
+++ trunk/Source/WebCore/ChangeLog 2017-09-30 04:31:29 UTC (rev 222677)
@@ -1,3 +1,28 @@
+2017-09-29 Zalan Bujtas <[email protected]>
+
+ Remove redundant RenderObject::selectionRoot and dependencies
+ https://bugs.webkit.org/show_bug.cgi?id=177696
+
+ Reviewed by Ryosuke Niwa.
+
+ There's only one selection root (RenderView).
+
+ * rendering/InlineTextBox.cpp:
+ (WebCore::InlineTextBox::selectionState):
+ (WebCore::InlineTextBox::selectionStartEnd const):
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::selectionRoot const): Deleted.
+ (WebCore::RenderObject::selectionStartEnd const): Deleted.
+ * rendering/RenderObject.h:
+ * rendering/RenderReplaced.cpp:
+ (WebCore::RenderReplaced::isSelected const):
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::collectSelectionRectsForLineBoxes):
+ * rendering/RenderTextLineBoxes.cpp:
+ (WebCore::RenderTextLineBoxes::setSelectionState):
+ * rendering/RenderView.h:
+ * rendering/SelectionSubtreeRoot.h:
+
2017-09-29 Chris Dumez <[email protected]>
http/tests/preconnect/link-rel-preconnect-https.html is flaky
Modified: trunk/Source/WebCore/rendering/InlineTextBox.cpp (222676 => 222677)
--- trunk/Source/WebCore/rendering/InlineTextBox.cpp 2017-09-30 02:11:20 UTC (rev 222676)
+++ trunk/Source/WebCore/rendering/InlineTextBox.cpp 2017-09-30 04:31:29 UTC (rev 222677)
@@ -145,7 +145,7 @@
RenderObject::SelectionState state = renderer().selectionState();
if (state == RenderObject::SelectionStart || state == RenderObject::SelectionEnd || state == RenderObject::SelectionBoth) {
unsigned startPos, endPos;
- renderer().selectionStartEnd(startPos, endPos);
+ renderer().view().getSelectionStartEnd(startPos, endPos);
// The position after a hard line break is considered to be past its end.
ASSERT(start() + len() >= (isLineBreak() ? 1 : 0));
unsigned lastSelectable = start() + len() - (isLineBreak() ? 1 : 0);
@@ -641,7 +641,7 @@
unsigned start;
unsigned end;
- renderer().selectionStartEnd(start, end);
+ renderer().view().getSelectionStartEnd(start, end);
if (selectionState == RenderObject::SelectionStart)
end = renderer().textLength();
else if (selectionState == RenderObject::SelectionEnd)
Modified: trunk/Source/WebCore/rendering/RenderObject.cpp (222676 => 222677)
--- trunk/Source/WebCore/rendering/RenderObject.cpp 2017-09-30 02:11:20 UTC (rev 222676)
+++ trunk/Source/WebCore/rendering/RenderObject.cpp 2017-09-30 04:31:29 UTC (rev 222677)
@@ -1202,26 +1202,6 @@
#endif // NDEBUG
-SelectionSubtreeRoot& RenderObject::selectionRoot() const
-{
- RenderFragmentedFlow* fragmentedFlow = enclosingFragmentedFlow();
- if (!fragmentedFlow)
- return view();
-
- if (is<RenderMultiColumnFlow>(*fragmentedFlow)) {
- if (!fragmentedFlow->containingBlock())
- return view();
- return fragmentedFlow->containingBlock()->selectionRoot();
- }
- ASSERT_NOT_REACHED();
- return view();
-}
-
-void RenderObject::selectionStartEnd(unsigned& spos, unsigned& epos) const
-{
- selectionRoot().selectionData().selectionStartEndPositions(spos, epos);
-}
-
FloatPoint RenderObject::localToAbsolute(const FloatPoint& localPoint, MapCoordinatesFlags mode, bool* wasFixed) const
{
TransformState transformState(TransformState::ApplyTransformDirection, localPoint);
Modified: trunk/Source/WebCore/rendering/RenderObject.h (222676 => 222677)
--- trunk/Source/WebCore/rendering/RenderObject.h 2017-09-30 02:11:20 UTC (rev 222676)
+++ trunk/Source/WebCore/rendering/RenderObject.h 2017-09-30 04:31:29 UTC (rev 222677)
@@ -752,9 +752,6 @@
void imageChanged(CachedImage*, const IntRect* = nullptr) override;
virtual void imageChanged(WrappedImagePtr, const IntRect* = nullptr) { }
- SelectionSubtreeRoot& selectionRoot() const;
- void selectionStartEnd(unsigned& spos, unsigned& epos) const;
-
void removeFromParent();
CSSAnimationController& animation() const;
Modified: trunk/Source/WebCore/rendering/RenderReplaced.cpp (222676 => 222677)
--- trunk/Source/WebCore/rendering/RenderReplaced.cpp 2017-09-30 02:11:20 UTC (rev 222676)
+++ trunk/Source/WebCore/rendering/RenderReplaced.cpp 2017-09-30 04:31:29 UTC (rev 222677)
@@ -651,7 +651,7 @@
return true;
unsigned selectionStart, selectionEnd;
- selectionStartEnd(selectionStart, selectionEnd);
+ view().getSelectionStartEnd(selectionStart, selectionEnd);
if (s == SelectionStart)
return selectionStart == 0;
Modified: trunk/Source/WebCore/rendering/RenderText.cpp (222676 => 222677)
--- trunk/Source/WebCore/rendering/RenderText.cpp 2017-09-30 02:11:20 UTC (rev 222676)
+++ trunk/Source/WebCore/rendering/RenderText.cpp 2017-09-30 04:31:29 UTC (rev 222677)
@@ -1447,7 +1447,7 @@
startPos = 0;
endPos = textLength();
} else {
- selectionStartEnd(startPos, endPos);
+ view().getSelectionStartEnd(startPos, endPos);
if (selectionState() == SelectionStart)
endPos = textLength();
else if (selectionState() == SelectionEnd)
Modified: trunk/Source/WebCore/rendering/RenderTextLineBoxes.cpp (222676 => 222677)
--- trunk/Source/WebCore/rendering/RenderTextLineBoxes.cpp 2017-09-30 02:11:20 UTC (rev 222676)
+++ trunk/Source/WebCore/rendering/RenderTextLineBoxes.cpp 2017-09-30 04:31:29 UTC (rev 222677)
@@ -30,6 +30,7 @@
#include "InlineTextBox.h"
#include "RenderBlock.h"
#include "RenderStyle.h"
+#include "RenderView.h"
#include "RootInlineBox.h"
namespace WebCore {
@@ -446,7 +447,7 @@
}
unsigned start, end;
- renderer.selectionStartEnd(start, end);
+ renderer.view().getSelectionStartEnd(start, end);
if (state == RenderObject::SelectionStart) {
end = renderer.textLength();
Modified: trunk/Source/WebCore/rendering/RenderView.h (222676 => 222677)
--- trunk/Source/WebCore/rendering/RenderView.h 2017-09-30 02:11:20 UTC (rev 222676)
+++ trunk/Source/WebCore/rendering/RenderView.h 2017-09-30 04:31:29 UTC (rev 222677)
@@ -93,6 +93,7 @@
RenderObject* selectionUnsplitEnd() const { return m_selectionUnsplitEnd; }
IntRect selectionBounds(bool clipToVisibleContent = true) const;
void repaintSelection() const;
+ void getSelectionStartEnd(unsigned& start, unsigned& end) const { selectionData().selectionStartEndPositions(start, end); }
bool printing() const;