Commit ffff10c5 authored by David Bokan's avatar David Bokan Committed by Commit Bot

Add CHECKs to debug crash

It looks like this crashes because of a null outer viewport scroll node.
That should never happen here because we have an inner viewport scroll
node.

There's a few ways this could be going wrong:

- A ScrollNode is marked as the inner scroll node even though it wasn't
  registered as one in viewport_property_ids_
- The ScrollNode doesn't exist in the property tree even though it was
  registered.
- We're getting this bad combination from Blink.

I've turned a few DCHECKs into release CHECKs to narrow down which of
these it might be.

Bug: 1037759
Change-Id: I972582da6e18725557859063da0889d465063c77
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1981268
Commit-Queue: David Bokan <bokan@chromium.org>
Auto-Submit: David Bokan <bokan@chromium.org>
Reviewed-by: default avatarXianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#728220}
parent 19f63a03
...@@ -1077,9 +1077,13 @@ void LayerTreeHost::RegisterViewportPropertyIds( ...@@ -1077,9 +1077,13 @@ void LayerTreeHost::RegisterViewportPropertyIds(
DCHECK(IsUsingLayerLists()); DCHECK(IsUsingLayerLists());
viewport_property_ids_ = ids; viewport_property_ids_ = ids;
// Outer viewport properties exist only if inner viewport property exists. // Outer viewport properties exist only if inner viewport property exists.
DCHECK(ids.inner_scroll != ScrollTree::kInvalidNodeId || // TODO(bokan): Temporarily make this a CHECK to debug crbug.com/1037759.
(ids.outer_scroll == ScrollTree::kInvalidNodeId && if (ids.inner_scroll == ScrollTree::kInvalidNodeId) {
ids.outer_clip == ClipTree::kInvalidNodeId)); CHECK_EQ(ids.outer_scroll, ScrollTree::kInvalidNodeId);
CHECK_EQ(ids.outer_clip, ClipTree::kInvalidNodeId);
} else {
CHECK_NE(ids.outer_scroll, ScrollTree::kInvalidNodeId);
}
} }
Layer* LayerTreeHost::InnerViewportScrollLayerForTesting() const { Layer* LayerTreeHost::InnerViewportScrollLayerForTesting() const {
......
...@@ -259,9 +259,13 @@ void LayerTreeImpl::UpdateScrollbarGeometries() { ...@@ -259,9 +259,13 @@ void LayerTreeImpl::UpdateScrollbarGeometries() {
if (is_viewport_scrollbar) { if (is_viewport_scrollbar) {
gfx::SizeF viewport_bounds(bounds_size); gfx::SizeF viewport_bounds(bounds_size);
if (scroll_node->scrolls_inner_viewport) { if (scroll_node->scrolls_inner_viewport) {
DCHECK_EQ(scroll_node, InnerViewportScrollNode()); // TODO(bokan): Temporarily make these CHECKs to debug
// crbug.com/1037759.
CHECK_EQ(scroll_node, InnerViewportScrollNode());
auto* outer_scroll_node = OuterViewportScrollNode(); auto* outer_scroll_node = OuterViewportScrollNode();
DCHECK(outer_scroll_node); CHECK_NE(viewport_property_ids_.outer_scroll,
ScrollTree::kInvalidNodeId);
CHECK(outer_scroll_node);
// Add offset and bounds contribution of outer viewport. // Add offset and bounds contribution of outer viewport.
current_offset += current_offset +=
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment