Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintLayer.cpp

Issue 1642223002: Delete selection gap code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Robert O'Callahan <roc+@cs.cmu.edu> 7 * Robert O'Callahan <roc+@cs.cmu.edu>
8 * David Baron <dbaron@fas.harvard.edu> 8 * David Baron <dbaron@fas.harvard.edu>
9 * Christian Biesinger <cbiesinger@web.de> 9 * Christian Biesinger <cbiesinger@web.de>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 2039 matching lines...) Expand 10 before | Expand all | Expand 10 after
2050 if (isSVGClipPathElement(element) && element->layoutObject()) { 2050 if (isSVGClipPathElement(element) && element->layoutObject()) {
2051 LayoutSVGResourceClipper* clipper = toLayoutSVGResourceClipper(toLay outSVGResourceContainer(element->layoutObject())); 2051 LayoutSVGResourceClipper* clipper = toLayoutSVGResourceClipper(toLay outSVGResourceContainer(element->layoutObject()));
2052 if (!clipper->hitTestClipContent(FloatRect(rootRelativeBounds), Floa tPoint(hitTestLocation.point()))) 2052 if (!clipper->hitTestClipContent(FloatRect(rootRelativeBounds), Floa tPoint(hitTestLocation.point())))
2053 return true; 2053 return true;
2054 } 2054 }
2055 } 2055 }
2056 2056
2057 return false; 2057 return false;
2058 } 2058 }
2059 2059
2060 void PaintLayer::blockSelectionGapsBoundsChanged()
2061 {
2062 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
2063 return;
2064
2065 setNeedsCompositingInputsUpdate();
2066 }
2067
2068 void PaintLayer::addBlockSelectionGapsBounds(const LayoutRect& bounds)
2069 {
2070 if (RuntimeEnabledFeatures::selectionPaintingWithoutSelectionGapsEnabled())
2071 return;
2072 if (!bounds.isEmpty())
2073 ensureRareData().blockSelectionGapsBounds.unite(enclosingIntRect(bounds) );
2074 blockSelectionGapsBoundsChanged();
2075 }
2076
2077 void PaintLayer::clearBlockSelectionGapsBounds()
2078 {
2079 if (RuntimeEnabledFeatures::selectionPaintingWithoutSelectionGapsEnabled())
2080 return;
2081 if (m_rareData)
2082 m_rareData->blockSelectionGapsBounds = IntRect();
2083 for (PaintLayer* child = firstChild(); child; child = child->nextSibling())
2084 child->clearBlockSelectionGapsBounds();
2085 blockSelectionGapsBoundsChanged();
2086 }
2087
2088 void PaintLayer::invalidatePaintForBlockSelectionGaps()
2089 {
2090 if (RuntimeEnabledFeatures::selectionPaintingWithoutSelectionGapsEnabled())
2091 return;
2092
2093 for (PaintLayer* child = firstChild(); child; child = child->nextSibling()) {
2094 // FIXME: We should not allow paint invalidation out of paint invalidati on state. crbug.com/457415
2095 DisablePaintInvalidationStateAsserts disabler;
2096 child->invalidatePaintForBlockSelectionGaps();
2097 }
2098
2099 if (!m_rareData || m_rareData->blockSelectionGapsBounds.isEmpty())
chrishtr 2016/01/28 22:06:22 delete from m_rareData
wkorman 2016/01/28 22:54:32 Already done, see PaintLayer.h.
2100 return;
2101
2102 LayoutRect rect(m_rareData->blockSelectionGapsBounds);
2103 if (layoutObject()->hasOverflowClip()) {
2104 LayoutBox* box = layoutBox();
2105 rect.move(-box->scrolledContentOffset());
2106 if (!scrollableArea()->usesCompositedScrolling())
2107 rect.intersect(box->overflowClipRect(LayoutPoint()));
2108 }
2109 if (layoutObject()->hasClip())
2110 rect.intersect(toLayoutBox(layoutObject())->clipRect(LayoutPoint()));
2111 if (!rect.isEmpty()) {
2112 // FIXME: We should not allow paint invalidation out of paint invalidati on state. crbug.com/457415
2113 DisablePaintInvalidationStateAsserts disabler;
2114 layoutObject()->invalidatePaintRectangle(rect);
2115 }
2116 }
2117
2118 IntRect PaintLayer::blockSelectionGapsBounds() const
2119 {
2120 if (RuntimeEnabledFeatures::selectionPaintingWithoutSelectionGapsEnabled())
2121 return IntRect();
2122
2123 if (!layoutObject()->isLayoutBlockFlow())
2124 return IntRect();
2125
2126 LayoutBlockFlow* layoutBlockFlow = toLayoutBlockFlow(layoutObject());
2127 LayoutRect gapRects = layoutBlockFlow->selectionGapRectsForPaintInvalidation (layoutBlockFlow);
2128
2129 return pixelSnappedIntRect(gapRects);
2130 }
2131
2132 bool PaintLayer::hasBlockSelectionGapBounds() const
2133 {
2134 if (RuntimeEnabledFeatures::selectionPaintingWithoutSelectionGapsEnabled())
2135 return false;
2136
2137 // FIXME: it would be more accurate to return !blockSelectionGapsBounds().is Empty(), but this is impossible
2138 // at the moment because it causes invalid queries to layout-dependent code (crbug.com/372802).
2139 // ASSERT(layoutObject()->document().lifecycle().state() >= DocumentLifecycl e::LayoutClean);
2140
2141 if (!layoutObject()->isLayoutBlock())
2142 return false;
2143
2144 return toLayoutBlock(layoutObject())->shouldPaintSelectionGaps();
2145 }
2146
2147 bool PaintLayer::intersectsDamageRect(const LayoutRect& layerBounds, const Layou tRect& damageRect, const LayoutPoint& offsetFromRoot) const 2060 bool PaintLayer::intersectsDamageRect(const LayoutRect& layerBounds, const Layou tRect& damageRect, const LayoutPoint& offsetFromRoot) const
2148 { 2061 {
2149 // Always examine the canvas and the root. 2062 // Always examine the canvas and the root.
2150 // FIXME: Could eliminate the isDocumentElement() check if we fix background painting so that the LayoutView 2063 // FIXME: Could eliminate the isDocumentElement() check if we fix background painting so that the LayoutView
2151 // paints the root's background. 2064 // paints the root's background.
2152 if (isRootLayer() || layoutObject()->isDocumentElement()) 2065 if (isRootLayer() || layoutObject()->isDocumentElement())
2153 return true; 2066 return true;
2154 2067
2155 // If we aren't an inline flow, and our layer bounds do intersect the damage rect, then we 2068 // If we aren't an inline flow, and our layer bounds do intersect the damage rect, then we
2156 // can go ahead and return true. 2069 // can go ahead and return true.
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
2881 2794
2882 void showLayerTree(const blink::LayoutObject* layoutObject) 2795 void showLayerTree(const blink::LayoutObject* layoutObject)
2883 { 2796 {
2884 if (!layoutObject) { 2797 if (!layoutObject) {
2885 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); 2798 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n");
2886 return; 2799 return;
2887 } 2800 }
2888 showLayerTree(layoutObject->enclosingLayer()); 2801 showLayerTree(layoutObject->enclosingLayer());
2889 } 2802 }
2890 #endif 2803 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698