Commit 38784019 authored by W. James MacLean's avatar W. James MacLean Committed by Commit Bot

CHECKS to catch incorrect PageScaleFactor for OOPIFs.

Since page scale factor should never be non-1.f for OOPIFs, and since
we're seeing this happen anyways, this CL inserts some diagnostic checks
to try and determine where in the page-scale-factor pathways the non-1.f
values are originating.

Bug: 845097
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I1d87e3a618d2fd71aa14cc5149084b08ddb7bf14
Reviewed-on: https://chromium-review.googlesource.com/1110345
Commit-Queue: James MacLean <wjmaclean@chromium.org>
Reviewed-by: default avatarDavid Bokan <bokan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#569385}
parent cbe29f70
...@@ -1130,6 +1130,13 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor, ...@@ -1130,6 +1130,13 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor,
return; return;
DCHECK_GE(page_scale_factor, min_page_scale_factor); DCHECK_GE(page_scale_factor, min_page_scale_factor);
DCHECK_LE(page_scale_factor, max_page_scale_factor); DCHECK_LE(page_scale_factor, max_page_scale_factor);
// We should never process non-unit page_scale_delta for an OOPIF subframe.
// TODO(wjmaclean): Remove this check as a pre-condition to closing the bug.
// https://crbug.com/845097
CHECK(!settings_.is_layer_tree_for_subframe ||
page_scale_factor == page_scale_factor_)
<< "Setting PSF in oopif subframe: old psf = " << page_scale_factor_
<< ", new psf = " << page_scale_factor;
page_scale_factor_ = page_scale_factor; page_scale_factor_ = page_scale_factor;
min_page_scale_factor_ = min_page_scale_factor; min_page_scale_factor_ = min_page_scale_factor;
...@@ -1292,6 +1299,13 @@ bool LayerTreeHost::LayerNeedsPushPropertiesForTesting(Layer* layer) const { ...@@ -1292,6 +1299,13 @@ bool LayerTreeHost::LayerNeedsPushPropertiesForTesting(Layer* layer) const {
void LayerTreeHost::SetPageScaleFromImplSide(float page_scale) { void LayerTreeHost::SetPageScaleFromImplSide(float page_scale) {
DCHECK(CommitRequested()); DCHECK(CommitRequested());
// We should never process non-unit page_scale_delta for an OOPIF subframe.
// TODO(wjmaclean): Remove this check as a pre-condition to closing the bug.
// https://crbug.com/845097
CHECK(!settings_.is_layer_tree_for_subframe ||
page_scale == page_scale_factor_)
<< "Setting PSF in oopif subframe: old psf = " << page_scale_factor_
<< ", new psf = " << page_scale;
page_scale_factor_ = page_scale; page_scale_factor_ = page_scale;
SetPropertyTreesNeedRebuild(); SetPropertyTreesNeedRebuild();
} }
......
...@@ -563,6 +563,23 @@ void CalculateDrawPropertiesInternal( ...@@ -563,6 +563,23 @@ void CalculateDrawPropertiesInternal(
device_scale_factor_for_page_scale_node = inputs->device_scale_factor; device_scale_factor_for_page_scale_node = inputs->device_scale_factor;
} }
// We should never be setting a non-unit page scale factor on an oopif
// subframe ... if we attempt this log it and fail.
// TODO(wjmaclean): Remove as part of conditions for closing the bug.
// https://crbug.com/845097
if (inputs->page_scale_factor !=
inputs->property_trees->transform_tree.page_scale_factor() &&
!inputs->page_scale_transform_node) {
LOG(ERROR) << "Setting PageScale on subframe: new psf = "
<< inputs->page_scale_factor << ", old psf = "
<< inputs->property_trees->transform_tree.page_scale_factor()
<< ", in_oopif = "
<< inputs->root_layer->layer_tree_impl()
->settings()
.is_layer_tree_for_subframe;
CHECK(false);
}
draw_property_utils::UpdatePageScaleFactor( draw_property_utils::UpdatePageScaleFactor(
inputs->property_trees, inputs->page_scale_transform_node, inputs->property_trees, inputs->page_scale_transform_node,
inputs->page_scale_factor, device_scale_factor_for_page_scale_node, inputs->page_scale_factor, device_scale_factor_for_page_scale_node,
......
...@@ -4564,6 +4564,11 @@ std::unique_ptr<ScrollAndScaleSet> LayerTreeHostImpl::ProcessScrollDeltas() { ...@@ -4564,6 +4564,11 @@ std::unique_ptr<ScrollAndScaleSet> LayerTreeHostImpl::ProcessScrollDeltas() {
CollectScrollbarUpdates(scroll_info.get()); CollectScrollbarUpdates(scroll_info.get());
scroll_info->page_scale_delta = scroll_info->page_scale_delta =
active_tree_->page_scale_factor()->PullDeltaForMainThread(); active_tree_->page_scale_factor()->PullDeltaForMainThread();
// We should never process non-unit page_scale_delta for an OOPIF subframe.
// TODO(wjmaclean): Remove this check as a pre-condition to closing the bug.
// https://crbug.com/845097
CHECK(!settings().is_layer_tree_for_subframe ||
scroll_info->page_scale_delta == 1.f);
scroll_info->top_controls_delta = scroll_info->top_controls_delta =
active_tree()->top_controls_shown_ratio()->PullDeltaForMainThread(); active_tree()->top_controls_shown_ratio()->PullDeltaForMainThread();
scroll_info->elastic_overscroll_delta = scroll_info->elastic_overscroll_delta =
......
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