summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/frame/frame_view.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/third_party/blink/renderer/core/frame/frame_view.cc
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-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.cc53
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