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

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

Issue 2098063002: Invalidate fixed-pos elements & descendants on scroll w/filters that change pixels. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2743
Patch Set: 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 1379 matching lines...) Expand 10 before | Expand all | Expand 10 after
1390 ASSERT(layoutItem.style()->hasViewportConstrainedPosition()); 1390 ASSERT(layoutItem.style()->hasViewportConstrainedPosition());
1391 ASSERT(layoutItem.hasLayer()); 1391 ASSERT(layoutItem.hasLayer());
1392 PaintLayer* layer = LayoutBoxModel(layoutItem).layer(); 1392 PaintLayer* layer = LayoutBoxModel(layoutItem).layer();
1393 1393
1394 if (layer->isPaintInvalidationContainer()) 1394 if (layer->isPaintInvalidationContainer())
1395 continue; 1395 continue;
1396 1396
1397 if (layer->subtreeIsInvisible()) 1397 if (layer->subtreeIsInvisible())
1398 continue; 1398 continue;
1399 1399
1400 // If the fixed layer has a blur/drop-shadow filter applied on at least one of its parents, we cannot 1400 // invalidate even if there is an ancestor with a filter that moves pixe ls.
1401 // scroll using the fast path, otherwise the outsets of the filter will be moved around the page. 1401 layoutItem.setShouldDoFullPaintInvalidationIncludingNonCompositingDescen dants();
1402 if (layer->hasAncestorWithFilterThatMovesPixels())
1403 return false;
1404 1402
1405 TRACE_EVENT_INSTANT1( 1403 TRACE_EVENT_INSTANT1(
1406 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), 1404 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"),
1407 "ScrollInvalidationTracking", 1405 "ScrollInvalidationTracking",
1408 TRACE_EVENT_SCOPE_THREAD, 1406 TRACE_EVENT_SCOPE_THREAD,
1409 "data", 1407 "data",
1410 InspectorScrollInvalidationTrackingEvent::data(*layoutObject)); 1408 InspectorScrollInvalidationTrackingEvent::data(*layoutObject));
1411 1409
1412 layoutItem.setShouldDoFullPaintInvalidationIncludingNonCompositingDescen dants(); 1410 // If the fixed layer has a blur/drop-shadow filter applied on at least one of its parents, we cannot
1411 // scroll using the fast path, otherwise the outsets of the filter will be moved around the page.
1412 if (layer->hasAncestorWithFilterThatMovesPixels())
1413 return false;
1413 } 1414 }
1414 return true; 1415 return true;
1415 } 1416 }
1416 1417
1417 bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta) 1418 bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta)
1418 { 1419 {
1419 if (!contentsInCompositedLayer()) 1420 if (!contentsInCompositedLayer())
1420 return false; 1421 return false;
1421 1422
1422 invalidateBackgroundAttachmentFixedObjects(); 1423 invalidateBackgroundAttachmentFixedObjects();
(...skipping 2698 matching lines...) Expand 10 before | Expand all | Expand 10 after
4121 return m_subtreeThrottled || (m_hiddenForThrottling && m_crossOriginForThrot tling); 4122 return m_subtreeThrottled || (m_hiddenForThrottling && m_crossOriginForThrot tling);
4122 } 4123 }
4123 4124
4124 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const 4125 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const
4125 { 4126 {
4126 ASSERT(layoutView()); 4127 ASSERT(layoutView());
4127 return *layoutView(); 4128 return *layoutView();
4128 } 4129 }
4129 4130
4130 } // namespace blink 4131 } // 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