Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: cc/trees/layer_tree_impl.cc

Issue 1675963002: Move MaxScrollOffset to property_trees (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove comment. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host_unittest_scroll.cc ('k') | cc/trees/layer_tree_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_impl.h" 5 #include "cc/trees/layer_tree_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 clip_tree->set_needs_update(true); 285 clip_tree->set_needs_update(true);
286 } 286 }
287 } 287 }
288 } 288 }
289 } 289 }
290 290
291 void LayerTreeImpl::UpdatePropertyTreesForBoundsDelta() { 291 void LayerTreeImpl::UpdatePropertyTreesForBoundsDelta() {
292 DCHECK(IsActiveTree()); 292 DCHECK(IsActiveTree());
293 LayerImpl* inner_container = InnerViewportContainerLayer(); 293 LayerImpl* inner_container = InnerViewportContainerLayer();
294 LayerImpl* outer_container = OuterViewportContainerLayer(); 294 LayerImpl* outer_container = OuterViewportContainerLayer();
295 LayerImpl* inner_scroll = InnerViewportScrollLayer();
295 296
296 UpdateClipTreeForBoundsDeltaOnLayer(inner_container, 297 UpdateClipTreeForBoundsDeltaOnLayer(inner_container,
297 &property_trees_.clip_tree); 298 &property_trees_.clip_tree);
298 UpdateClipTreeForBoundsDeltaOnLayer(InnerViewportScrollLayer(), 299 UpdateClipTreeForBoundsDeltaOnLayer(InnerViewportScrollLayer(),
299 &property_trees_.clip_tree); 300 &property_trees_.clip_tree);
300 UpdateClipTreeForBoundsDeltaOnLayer(outer_container, 301 UpdateClipTreeForBoundsDeltaOnLayer(outer_container,
301 &property_trees_.clip_tree); 302 &property_trees_.clip_tree);
302 303
303 TransformTree& transform_tree = property_trees_.transform_tree;
304 if (inner_container) 304 if (inner_container)
305 transform_tree.SetInnerViewportBoundsDelta(inner_container->bounds_delta()); 305 property_trees_.SetInnerViewportContainerBoundsDelta(
306 inner_container->bounds_delta());
306 if (outer_container) 307 if (outer_container)
307 transform_tree.SetOuterViewportBoundsDelta(outer_container->bounds_delta()); 308 property_trees_.SetOuterViewportContainerBoundsDelta(
309 outer_container->bounds_delta());
310 if (inner_scroll)
311 property_trees_.SetInnerViewportScrollBoundsDelta(
312 inner_scroll->bounds_delta());
308 } 313 }
309 314
310 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { 315 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
311 // The request queue should have been processed and does not require a push. 316 // The request queue should have been processed and does not require a push.
312 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); 317 DCHECK_EQ(ui_resource_request_queue_.size(), 0u);
313 318
314 target_tree->SetPropertyTrees(property_trees_); 319 target_tree->SetPropertyTrees(property_trees_);
315 320
316 if (next_activation_forces_redraw_) { 321 if (next_activation_forces_redraw_) {
317 target_tree->ForceRedrawNextActivation(); 322 target_tree->ForceRedrawNextActivation();
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 return; 485 return;
481 LayerTreeHostCommon::CallFunctionForSubtree( 486 LayerTreeHostCommon::CallFunctionForSubtree(
482 root_layer(), [](LayerImpl* layer) { 487 root_layer(), [](LayerImpl* layer) {
483 layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded(); 488 layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded();
484 }); 489 });
485 } 490 }
486 491
487 void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { 492 void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) {
488 DCHECK(IsActiveTree()); 493 DCHECK(IsActiveTree());
489 if (page_scale_factor()->SetCurrent( 494 if (page_scale_factor()->SetCurrent(
490 ClampPageScaleFactorToLimits(active_page_scale))) 495 ClampPageScaleFactorToLimits(active_page_scale))) {
491 DidUpdatePageScale(); 496 DidUpdatePageScale();
497 if (PageScaleLayer()) {
498 UpdatePageScaleFactorInPropertyTrees(
499 property_trees(), PageScaleLayer(), current_page_scale_factor(),
500 device_scale_factor(), layer_tree_host_impl_->DrawTransform());
501 } else {
502 DCHECK(!root_layer_ || active_page_scale == 1);
503 }
504 }
492 } 505 }
493 506
494 void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, 507 void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor,
495 float min_page_scale_factor, 508 float min_page_scale_factor,
496 float max_page_scale_factor) { 509 float max_page_scale_factor) {
497 PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor, 510 PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor,
498 max_page_scale_factor); 511 max_page_scale_factor);
499 } 512 }
500 513
501 void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, 514 void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor,
502 float min_page_scale_factor, 515 float min_page_scale_factor,
503 float max_page_scale_factor) { 516 float max_page_scale_factor) {
504 DCHECK(page_scale_factor || IsActiveTree()); 517 DCHECK(page_scale_factor || IsActiveTree());
505 bool changed_page_scale = false; 518 bool changed_page_scale = false;
519
520 changed_page_scale |=
521 SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor);
522
506 if (page_scale_factor) { 523 if (page_scale_factor) {
507 DCHECK(!IsActiveTree() || !layer_tree_host_impl_->pending_tree()); 524 DCHECK(!IsActiveTree() || !layer_tree_host_impl_->pending_tree());
508 changed_page_scale |= page_scale_factor_->Delta() != 1.f; 525 changed_page_scale |= page_scale_factor_->Delta() != 1.f;
509 // TODO(enne): Once CDP goes away, ignore this call below. The only time 526 // TODO(enne): Once CDP goes away, ignore this call below. The only time
510 // the property trees will differ is if there's been a page scale on the 527 // the property trees will differ is if there's been a page scale on the
511 // compositor thread after the begin frame, which is the delta check above. 528 // compositor thread after the begin frame, which is the delta check above.
512 changed_page_scale |= 529 changed_page_scale |=
513 page_scale_factor_->PushFromMainThread(*page_scale_factor); 530 page_scale_factor_->PushFromMainThread(*page_scale_factor);
514 } 531 }
532
515 if (IsActiveTree()) { 533 if (IsActiveTree()) {
516 // TODO(enne): Pushing from pending to active should never require 534 // TODO(enne): Pushing from pending to active should never require
517 // DidUpdatePageScale. The values should already be set by the fully 535 // DidUpdatePageScale. The values should already be set by the fully
518 // computed property trees being synced from one tree to another. Remove 536 // computed property trees being synced from one tree to another. Remove
519 // this once CDP goes away. 537 // this once CDP goes away.
520 changed_page_scale |= page_scale_factor_->PushPendingToActive(); 538 changed_page_scale |= page_scale_factor_->PushPendingToActive();
521 } 539 }
522 540
523 changed_page_scale |=
524 SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor);
525
526 if (changed_page_scale) 541 if (changed_page_scale)
527 DidUpdatePageScale(); 542 DidUpdatePageScale();
543
544 if (page_scale_factor) {
545 if (PageScaleLayer()) {
546 UpdatePageScaleFactorInPropertyTrees(
547 property_trees(), PageScaleLayer(), current_page_scale_factor(),
548 device_scale_factor(), layer_tree_host_impl_->DrawTransform());
549 } else {
550 DCHECK(!root_layer_ || *page_scale_factor == 1);
551 }
552 }
528 } 553 }
529 554
530 void LayerTreeImpl::set_top_controls_shrink_blink_size(bool shrink) { 555 void LayerTreeImpl::set_top_controls_shrink_blink_size(bool shrink) {
531 if (top_controls_shrink_blink_size_ == shrink) 556 if (top_controls_shrink_blink_size_ == shrink)
532 return; 557 return;
533 558
534 top_controls_shrink_blink_size_ = shrink; 559 top_controls_shrink_blink_size_ = shrink;
535 if (IsActiveTree()) 560 if (IsActiveTree())
536 layer_tree_host_impl_->UpdateViewportContainerSizes(); 561 layer_tree_host_impl_->UpdateViewportContainerSizes();
537 } 562 }
(...skipping 1512 matching lines...) Expand 10 before | Expand all | Expand 10 after
2050 const gfx::BoxF& box, 2075 const gfx::BoxF& box,
2051 gfx::BoxF* bounds) const { 2076 gfx::BoxF* bounds) const {
2052 *bounds = gfx::BoxF(); 2077 *bounds = gfx::BoxF();
2053 return layer_tree_host_impl_->animation_host() 2078 return layer_tree_host_impl_->animation_host()
2054 ? layer_tree_host_impl_->animation_host() 2079 ? layer_tree_host_impl_->animation_host()
2055 ->TransformAnimationBoundsForBox(layer->id(), box, bounds) 2080 ->TransformAnimationBoundsForBox(layer->id(), box, bounds)
2056 : true; 2081 : true;
2057 } 2082 }
2058 2083
2059 } // namespace cc 2084 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest_scroll.cc ('k') | cc/trees/layer_tree_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698