Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / rendering / RenderSelectionInfo.h
index f0deb6b..66467c0 100644 (file)
@@ -35,14 +35,14 @@ class RenderSelectionInfoBase : public NoBaseWillBeGarbageCollected<RenderSelect
 public:
     RenderSelectionInfoBase()
         : m_object(nullptr)
-        , m_repaintContainer(nullptr)
+        , m_paintInvalidationContainer(nullptr)
         , m_state(RenderObject::SelectionNone)
     {
     }
 
     RenderSelectionInfoBase(RenderObject* o)
         : m_object(o)
-        , m_repaintContainer(o->containerForPaintInvalidation())
+        , m_paintInvalidationContainer(o->isRooted() ? o->containerForPaintInvalidation() : nullptr)
         , m_state(o->selectionState())
     {
     }
@@ -50,75 +50,74 @@ public:
     void trace(Visitor* visitor)
     {
         visitor->trace(m_object);
-        visitor->trace(m_repaintContainer);
+        visitor->trace(m_paintInvalidationContainer);
     }
 
     RenderObject* object() const { return m_object; }
-    const RenderLayerModelObject* repaintContainer() const { return m_repaintContainer; }
+    const RenderLayerModelObject* paintInvalidationContainer() const { return m_paintInvalidationContainer; }
     RenderObject::SelectionState state() const { return m_state; }
 
 protected:
     RawPtrWillBeMember<RenderObject> m_object;
-    RawPtrWillBeMember<const RenderLayerModelObject> m_repaintContainer;
+    RawPtrWillBeMember<const RenderLayerModelObject> m_paintInvalidationContainer;
     RenderObject::SelectionState m_state;
 };
 
 // This struct is used when the selection changes to cache the old and new state of the selection for each RenderObject.
 class RenderSelectionInfo FINAL : public RenderSelectionInfoBase {
 public:
-    RenderSelectionInfo(RenderObject* o, bool clipToVisibleContent)
+    RenderSelectionInfo(RenderObject* o)
         : RenderSelectionInfoBase(o)
     {
-        if (o->canUpdateSelectionOnRootLineBoxes()) {
-            m_rect = o->selectionRectForPaintInvalidation(m_repaintContainer, clipToVisibleContent);
+        if (m_paintInvalidationContainer && o->canUpdateSelectionOnRootLineBoxes()) {
+            m_rect = o->selectionRectForPaintInvalidation(m_paintInvalidationContainer);
             // FIXME: groupedMapping() leaks the squashing abstraction. See RenderBlockSelectionInfo for more details.
-            if (m_repaintContainer && m_repaintContainer->layer()->groupedMapping())
-                RenderLayer::mapRectToPaintInvalidationBacking(m_repaintContainer, m_repaintContainer, m_rect);
+            if (m_paintInvalidationContainer->layer()->groupedMapping())
+                RenderLayer::mapRectToPaintBackingCoordinates(m_paintInvalidationContainer, m_rect);
         } else {
             m_rect = LayoutRect();
         }
     }
 
-    void repaint()
+    void invalidatePaint()
     {
-        m_object->invalidatePaintUsingContainer(m_repaintContainer, enclosingIntRect(m_rect), InvalidationSelection);
+        m_object->invalidatePaintUsingContainer(m_paintInvalidationContainer, enclosingIntRect(m_rect), InvalidationSelection);
     }
 
     LayoutRect rect() const { return m_rect; }
 
 private:
-    LayoutRect m_rect; // relative to repaint container
+    LayoutRect m_rect; // relative to paint invalidation container
 };
 
-
 // This struct is used when the selection changes to cache the old and new state of the selection for each RenderBlock.
 class RenderBlockSelectionInfo FINAL : public RenderSelectionInfoBase {
 public:
     RenderBlockSelectionInfo(RenderBlock* b)
         : RenderSelectionInfoBase(b)
     {
-        if (b->canUpdateSelectionOnRootLineBoxes())
-            m_rects = block()->selectionGapRectsForRepaint(m_repaintContainer);
+        if (m_paintInvalidationContainer && b->canUpdateSelectionOnRootLineBoxes())
+            m_rects = block()->selectionGapRectsForPaintInvalidation(m_paintInvalidationContainer);
         else
             m_rects = GapRects();
     }
 
-    void repaint()
+    void invalidatePaint()
     {
-        LayoutRect repaintRect = m_rects;
+        LayoutRect paintInvalidationRect = m_rects;
         // FIXME: this is leaking the squashing abstraction. However, removing the groupedMapping() condiitional causes
         // RenderBox::mapRectToPaintInvalidationBacking to get called, which makes rect adjustments even if you pass the same
-        // repaintContainer as the render object. Find out why it does that and fix.
-        if (m_repaintContainer && m_repaintContainer->layer()->groupedMapping())
-            RenderLayer::mapRectToPaintInvalidationBacking(m_repaintContainer, m_repaintContainer, repaintRect);
-        m_object->invalidatePaintUsingContainer(m_repaintContainer, enclosingIntRect(repaintRect), InvalidationSelection);
+        // paintInvalidationContainer as the render object. Find out why it does that and fix.
+        if (m_paintInvalidationContainer && m_paintInvalidationContainer->layer()->groupedMapping())
+            RenderLayer::mapRectToPaintBackingCoordinates(m_paintInvalidationContainer, paintInvalidationRect);
+        m_object->invalidatePaintUsingContainer(m_paintInvalidationContainer, enclosingIntRect(paintInvalidationRect), InvalidationSelection);
     }
 
     RenderBlock* block() const { return toRenderBlock(m_object); }
     GapRects rects() const { return m_rects; }
 
 private:
-    GapRects m_rects; // relative to repaint container
+    GapRects m_rects; // relative to paint invalidation container
 };
 
 } // namespace blink