summaryrefslogtreecommitdiffstats
path: root/chromium/cc/trees/layer_tree_host.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/trees/layer_tree_host.cc')
-rw-r--r--chromium/cc/trees/layer_tree_host.cc52
1 files changed, 33 insertions, 19 deletions
diff --git a/chromium/cc/trees/layer_tree_host.cc b/chromium/cc/trees/layer_tree_host.cc
index 4988a714475..313f92f57e7 100644
--- a/chromium/cc/trees/layer_tree_host.cc
+++ b/chromium/cc/trees/layer_tree_host.cc
@@ -663,10 +663,6 @@ bool LayerTreeHost::IsVisible() const {
return visible_;
}
-void LayerTreeHost::NotifyInputThrottledUntilCommit() {
- proxy_->NotifyInputThrottledUntilCommit();
-}
-
void LayerTreeHost::LayoutAndUpdateLayers() {
DCHECK(IsSingleThreaded());
// This function is only valid when not using the scheduler.
@@ -680,9 +676,7 @@ void LayerTreeHost::Composite(base::TimeTicks frame_begin_time, bool raster) {
// This function is only valid when not using the scheduler.
DCHECK(!settings_.single_thread_proxy_scheduler);
SingleThreadProxy* proxy = static_cast<SingleThreadProxy*>(proxy_.get());
-
- proxy->CompositeImmediately(frame_begin_time,
- raster || next_commit_forces_redraw_);
+ proxy->CompositeImmediately(frame_begin_time, raster);
}
bool LayerTreeHost::UpdateLayers() {
@@ -694,6 +688,7 @@ bool LayerTreeHost::UpdateLayers() {
DCHECK(!root_layer()->parent());
base::ElapsedTimer timer;
+ client_->WillUpdateLayers();
bool result = DoUpdateLayers();
client_->DidUpdateLayers();
micro_benchmark_controller_.DidUpdateLayers();
@@ -886,9 +881,11 @@ void LayerTreeHost::ApplyViewportChanges(const ScrollAndScaleSet& info) {
if (inner_viewport_scroll_delta.IsZero() && info.page_scale_delta == 1.f &&
info.elastic_overscroll_delta.IsZero() && !info.top_controls_delta &&
!info.browser_controls_constraint_changed &&
- !info.scroll_gesture_did_end) {
+ !info.scroll_gesture_did_end &&
+ info.is_pinch_gesture_active == is_pinch_gesture_active_from_impl_) {
return;
}
+ is_pinch_gesture_active_from_impl_ = info.is_pinch_gesture_active;
// Preemptively apply the scroll offset and scale delta here before sending
// it to the client. If the client comes back and sets it to the same
@@ -906,8 +903,9 @@ void LayerTreeHost::ApplyViewportChanges(const ScrollAndScaleSet& info) {
// may be translated appropriately.
client_->ApplyViewportChanges(
{inner_viewport_scroll_delta, info.elastic_overscroll_delta,
- info.page_scale_delta, info.top_controls_delta,
- info.browser_controls_constraint, info.scroll_gesture_did_end});
+ info.page_scale_delta, info.is_pinch_gesture_active,
+ info.top_controls_delta, info.browser_controls_constraint,
+ info.scroll_gesture_did_end});
SetNeedsUpdateLayers();
}
@@ -1284,10 +1282,10 @@ void LayerTreeHost::SetPageScaleFactorAndLimits(float page_scale_factor,
DCHECK_GE(page_scale_factor, min_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.
+ // TODO(wjmaclean): Remove this dcheck 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_)
+ DCHECK(!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;
@@ -1328,11 +1326,16 @@ void LayerTreeHost::SetRasterColorSpace(
this, [](Layer* layer) { layer->SetNeedsDisplay(); });
}
-void LayerTreeHost::SetExternalPageScaleFactor(float page_scale_factor) {
- if (external_page_scale_factor_ == page_scale_factor)
+void LayerTreeHost::SetExternalPageScaleFactor(
+ float page_scale_factor,
+ bool is_external_pinch_gesture_active) {
+ if (external_page_scale_factor_ == page_scale_factor &&
+ is_external_pinch_gesture_active_ == is_external_pinch_gesture_active) {
return;
+ }
external_page_scale_factor_ = page_scale_factor;
+ is_external_pinch_gesture_active_ = is_external_pinch_gesture_active;
SetNeedsCommit();
}
@@ -1588,8 +1591,8 @@ void LayerTreeHost::PushLayerTreePropertiesTo(LayerTreeImpl* tree_impl) {
if (viewport_layers_.outer_viewport_scroll)
ids.outer_viewport_scroll = viewport_layers_.outer_viewport_scroll->id();
tree_impl->SetViewportLayersFromIds(ids);
- DCHECK(viewport_layers_.inner_viewport_scroll
- ->IsContainerForFixedPositionLayers());
+ DCHECK(IsUsingLayerLists() || viewport_layers_.inner_viewport_scroll
+ ->IsContainerForFixedPositionLayers());
} else {
tree_impl->ClearViewportLayers();
}
@@ -1653,6 +1656,8 @@ void LayerTreeHost::PushLayerTreeHostPropertiesTo(
host_impl->SetHasGpuRasterizationTrigger(has_gpu_rasterization_trigger_);
host_impl->SetContentHasSlowPaths(content_has_slow_paths_);
host_impl->SetContentHasNonAAPaint(content_has_non_aa_paint_);
+ host_impl->set_external_pinch_gesture_active(
+ is_external_pinch_gesture_active_);
RecordGpuRasterizationHistogram(host_impl);
host_impl->SetDebugState(debug_state_);
@@ -1828,8 +1833,17 @@ void LayerTreeHost::ElementIsAnimatingChanged(
const PropertyAnimationState& mask,
const PropertyAnimationState& state) {
DCHECK_EQ(ElementListType::ACTIVE, list_type);
- property_trees()->ElementIsAnimatingChanged(mutator_host(), element_id_map,
- list_type, mask, state, true);
+ property_trees()->ElementIsAnimatingChanged(element_id_map, mask, state,
+ true);
+}
+
+void LayerTreeHost::AnimationScalesChanged(ElementId element_id,
+ ElementListType list_type,
+ float maximum_scale,
+ float starting_scale) {
+ DCHECK_EQ(ElementListType::ACTIVE, list_type);
+ property_trees()->AnimationScalesChanged(element_id, maximum_scale,
+ starting_scale);
}
gfx::ScrollOffset LayerTreeHost::GetScrollOffsetForAnimation(