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

Side by Side Diff: third_party/WebKit/Source/core/frame/FrameView.cpp

Issue 2091603002: Invalidate fixed-pos elements & descendants on scroll w/filters that change pixels. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: none Created 4 years, 5 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) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Dirk Mueller <mueller@kde.org> 5 * 2000 Dirk Mueller <mueller@kde.org>
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com)
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
9 * Copyright (C) 2009 Google Inc. All rights reserved. 9 * Copyright (C) 2009 Google Inc. All rights reserved.
10 * 10 *
(...skipping 1392 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 ASSERT(layoutItem.style()->hasViewportConstrainedPosition()); 1403 ASSERT(layoutItem.style()->hasViewportConstrainedPosition());
1404 ASSERT(layoutItem.hasLayer()); 1404 ASSERT(layoutItem.hasLayer());
1405 PaintLayer* layer = LayoutBoxModel(layoutItem).layer(); 1405 PaintLayer* layer = LayoutBoxModel(layoutItem).layer();
1406 1406
1407 if (layer->isPaintInvalidationContainer()) 1407 if (layer->isPaintInvalidationContainer())
1408 continue; 1408 continue;
1409 1409
1410 if (layer->subtreeIsInvisible()) 1410 if (layer->subtreeIsInvisible())
1411 continue; 1411 continue;
1412 1412
1413 // If the fixed layer has a blur/drop-shadow filter applied on at least one of its parents, we cannot 1413 // invalidate even if there is an ancestor with a filter that moves pixe ls.
1414 // scroll using the fast path, otherwise the outsets of the filter will be moved around the page. 1414 layoutItem.setShouldDoFullPaintInvalidationIncludingNonCompositingDescen dants();
1415 if (layer->hasAncestorWithFilterThatMovesPixels())
1416 return false;
1417 1415
1418 TRACE_EVENT_INSTANT1( 1416 TRACE_EVENT_INSTANT1(
1419 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), 1417 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"),
1420 "ScrollInvalidationTracking", 1418 "ScrollInvalidationTracking",
1421 TRACE_EVENT_SCOPE_THREAD, 1419 TRACE_EVENT_SCOPE_THREAD,
1422 "data", 1420 "data",
1423 InspectorScrollInvalidationTrackingEvent::data(*layoutObject)); 1421 InspectorScrollInvalidationTrackingEvent::data(*layoutObject));
1424 1422
1425 layoutItem.setShouldDoFullPaintInvalidationIncludingNonCompositingDescen dants(); 1423 // If the fixed layer has a blur/drop-shadow filter applied on at least one of its parents, we cannot
1424 // scroll using the fast path, otherwise the outsets of the filter will be moved around the page.
1425 if (layer->hasAncestorWithFilterThatMovesPixels())
1426 return false;
1426 } 1427 }
1427 return true; 1428 return true;
1428 } 1429 }
1429 1430
1430 bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta) 1431 bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta)
1431 { 1432 {
1432 if (!contentsInCompositedLayer()) 1433 if (!contentsInCompositedLayer())
1433 return false; 1434 return false;
1434 1435
1435 invalidateBackgroundAttachmentFixedObjects(); 1436 invalidateBackgroundAttachmentFixedObjects();
(...skipping 2789 matching lines...) Expand 10 before | Expand all | Expand 10 after
4225 return m_subtreeThrottled || (m_hiddenForThrottling && m_crossOriginForThrot tling); 4226 return m_subtreeThrottled || (m_hiddenForThrottling && m_crossOriginForThrot tling);
4226 } 4227 }
4227 4228
4228 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const 4229 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const
4229 { 4230 {
4230 ASSERT(!layoutViewItem().isNull()); 4231 ASSERT(!layoutViewItem().isNull());
4231 return *layoutView(); 4232 return *layoutView();
4232 } 4233 }
4233 4234
4234 } // namespace blink 4235 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/paint/invalidation/filter-on-html-element-with-fixed-position-child-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698