diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/third_party/blink/renderer/core/frame/frame_view.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-c30a6232df03e1efbd9f3b226777b07e087a1122.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/frame/frame_view.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/frame/frame_view.cc | 53 |
1 files changed, 13 insertions, 40 deletions
diff --git a/chromium/third_party/blink/renderer/core/frame/frame_view.cc b/chromium/third_party/blink/renderer/core/frame/frame_view.cc index e52d60795fb..781b93f0039 100644 --- a/chromium/third_party/blink/renderer/core/frame/frame_view.cc +++ b/chromium/third_party/blink/renderer/core/frame/frame_view.cc @@ -42,18 +42,17 @@ bool FrameView::DisplayLockedInParentFrame() { return owner && DisplayLockUtilities::NearestLockedInclusiveAncestor(*owner); } -bool FrameView::UpdateViewportIntersection(unsigned flags, +void FrameView::UpdateViewportIntersection(unsigned flags, bool needs_occlusion_tracking) { - bool can_skip_sticky_frame_tracking = - flags & IntersectionObservation::kCanSkipStickyFrameTracking; - if (!(flags & IntersectionObservation::kImplicitRootObserversNeedUpdate)) - return can_skip_sticky_frame_tracking; + return; + // This should only run in child frames. Frame& frame = GetFrame(); HTMLFrameOwnerElement* owner_element = frame.DeprecatedLocalOwner(); if (!owner_element) - return can_skip_sticky_frame_tracking; + return; + Document& owner_document = owner_element->GetDocument(); IntPoint viewport_offset; IntRect viewport_intersection, mainframe_document_intersection; @@ -64,8 +63,7 @@ bool FrameView::UpdateViewportIntersection(unsigned flags, bool should_compute_occlusion = needs_occlusion_tracking && occlusion_state == FrameOcclusionState::kGuaranteedNotOccluded && - parent_lifecycle_state >= DocumentLifecycle::kPrePaintClean && - RuntimeEnabledFeatures::IntersectionObserverV2Enabled(); + parent_lifecycle_state >= DocumentLifecycle::kPrePaintClean; LayoutEmbeddedContent* owner_layout_object = owner_element->GetLayoutEmbeddedContent(); @@ -81,9 +79,9 @@ bool FrameView::UpdateViewportIntersection(unsigned flags, if (should_compute_occlusion) geometry_flags |= IntersectionGeometry::kShouldComputeVisibility; - IntersectionGeometry geometry(nullptr, *owner_element, {}, + IntersectionGeometry geometry(nullptr, *owner_element, {} /* root_margin */, {IntersectionObserver::kMinimumThreshold}, - geometry_flags); + {} /* target_margin */, geometry_flags); PhysicalRect new_rect_in_parent = geometry.IntersectionRect(); if (new_rect_in_parent.size != rect_in_parent_.size || ((new_rect_in_parent.X() - rect_in_parent_.X()).Abs() + @@ -106,30 +104,12 @@ bool FrameView::UpdateViewportIntersection(unsigned flags, PhysicalOffset content_box_offset = owner_layout_object->PhysicalContentBoxOffset(); - if (NeedsViewportOffset() || !can_skip_sticky_frame_tracking) { + if (NeedsViewportOffset()) { viewport_offset = -RoundedIntPoint( owner_layout_object->AbsoluteToLocalPoint( PhysicalOffset(), kTraverseDocumentBoundaries | kApplyRemoteRootFrameOffset) - content_box_offset); - if (!can_skip_sticky_frame_tracking) { - // If the frame is small, skip tracking this frame and its subframes. - if (frame.GetMainFrameViewportSize().IsEmpty() || - !StickyFrameTracker::IsLarge( - frame.GetMainFrameViewportSize(), - new_rect_in_parent.PixelSnappedSize())) { - can_skip_sticky_frame_tracking = true; - } - // If the frame is a large sticky ad, record a use counter and skip - // tracking its subframes; otherwise continue tracking its subframes. - else if (frame.IsAdSubframe() && - GetStickyFrameTracker()->UpdateStickyStatus( - frame.GetMainFrameScrollOffset(), viewport_offset)) { - UseCounter::Count(owner_element->GetDocument(), - WebFeature::kLargeStickyAd); - can_skip_sticky_frame_tracking = true; - } - } } // Generate matrix to transform from the space of the containing document @@ -180,10 +160,10 @@ bool FrameView::UpdateViewportIntersection(unsigned flags, occlusion_state = FrameOcclusionState::kUnknown; } - SetViewportIntersection( - {viewport_offset, viewport_intersection, mainframe_document_intersection, - WebRect(), occlusion_state, frame.GetMainFrameViewportSize(), - frame.GetMainFrameScrollOffset(), can_skip_sticky_frame_tracking}); + SetViewportIntersection({viewport_offset, viewport_intersection, + mainframe_document_intersection, WebRect(), + occlusion_state, frame.GetMainFrameViewportSize(), + frame.GetMainFrameScrollOffset()}); UpdateFrameVisibility(!viewport_intersection.IsEmpty()); @@ -203,7 +183,6 @@ bool FrameView::UpdateViewportIntersection(unsigned flags, parent_frame->View()->CanThrottleRenderingForPropagation(); } UpdateRenderThrottlingStatus(hidden_for_throttling, subtree_throttled); - return can_skip_sticky_frame_tracking; } void FrameView::UpdateFrameVisibility(bool intersects_viewport) { @@ -259,10 +238,4 @@ bool FrameView::RectInParentIsStable( return parent->RectInParentIsStable(event_timestamp); } -StickyFrameTracker* FrameView::GetStickyFrameTracker() { - if (!sticky_frame_tracker_) - sticky_frame_tracker_ = std::make_unique<StickyFrameTracker>(); - return sticky_frame_tracker_.get(); -} - } // namespace blink |