Text bounding box computation for simple line layout is wrong
[WebKit-https.git] / Source / WebCore / rendering / RenderTextLineBoxes.h
index 5ba801f..d87c6b1 100644 (file)
@@ -50,13 +50,19 @@ public:
     void remove(InlineTextBox&);
 
     void removeAllFromParent(RenderText&);
-    void deleteAll(RenderText&);
+    void deleteAll();
+
+    void dirtyAll();
+    bool dirtyRange(RenderText&, unsigned start, unsigned end, int lengthDelta);
 
     InlineTextBox* findNext(int offset, int& position) const;
 
     bool hasRenderedText() const;
     int caretMinOffset() const;
     int caretMaxOffset(const RenderText&) const;
+    enum OffsetType { CaretOffset, CharacterOffset };
+    bool containsOffset(const RenderText&, unsigned, OffsetType) const;
+    unsigned countCharacterOffsetsUntil(unsigned) const;
 
     VisiblePosition positionForPoint(const RenderText&, const LayoutPoint&) const;
 
@@ -64,6 +70,7 @@ public:
     LayoutRect selectionRectForRange(unsigned start, unsigned end);
 
     IntRect boundingBox(const RenderText&) const;
+    IntPoint firstRunLocation() const;
     LayoutRect visualOverflowBoundingBox(const RenderText&) const;
 
     Vector<IntRect> absoluteRects(const LayoutPoint& accumulatedOffset) const;
@@ -72,13 +79,14 @@ public:
     Vector<FloatQuad> absoluteQuads(const RenderText&, bool* wasFixed, ClippingOption) const;
     Vector<FloatQuad> absoluteQuadsForRange(const RenderText&, unsigned start, unsigned end, bool useSelectionHeight, bool* wasFixed) const;
 
-    void dirtyAll();
-    bool dirtyRange(RenderText&, unsigned start, unsigned end, int lengthDelta);
-
 #if !ASSERT_DISABLED
     ~RenderTextLineBoxes();
 #endif
 
+#if !ASSERT_WITH_SECURITY_IMPLICATION_DISABLED
+    void invalidateParentChildLists();
+#endif
+
 private:
     void checkConsistency() const;