OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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.h" | 5 #include "cc/trees/layer_tree.h" |
6 | 6 |
7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
9 #include "cc/animation/animation_host.h" | 9 #include "cc/animation/animation_host.h" |
10 #include "cc/input/page_scale_animation.h" | 10 #include "cc/input/page_scale_animation.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 } // namespace | 43 } // namespace |
44 | 44 |
45 LayerTree::Inputs::Inputs() | 45 LayerTree::Inputs::Inputs() |
46 : top_controls_height(0.f), | 46 : top_controls_height(0.f), |
47 top_controls_shown_ratio(0.f), | 47 top_controls_shown_ratio(0.f), |
48 browser_controls_shrink_blink_size(false), | 48 browser_controls_shrink_blink_size(false), |
49 bottom_controls_height(0.f), | 49 bottom_controls_height(0.f), |
50 device_scale_factor(1.f), | 50 device_scale_factor(1.f), |
51 painted_device_scale_factor(1.f), | 51 painted_device_scale_factor(1.f), |
52 page_scale_factor(1.f), | 52 page_scale_factor(1.f), |
| 53 subframe_page_scale_factor(1.f), |
53 min_page_scale_factor(1.f), | 54 min_page_scale_factor(1.f), |
54 max_page_scale_factor(1.f), | 55 max_page_scale_factor(1.f), |
55 background_color(SK_ColorWHITE), | 56 background_color(SK_ColorWHITE), |
56 has_transparent_background(false), | 57 has_transparent_background(false), |
57 have_scroll_event_handlers(false), | 58 have_scroll_event_handlers(false), |
58 event_listener_properties() {} | 59 event_listener_properties() {} |
59 | 60 |
60 LayerTree::Inputs::~Inputs() = default; | 61 LayerTree::Inputs::~Inputs() = default; |
61 | 62 |
62 LayerTree::LayerTree(std::unique_ptr<AnimationHost> animation_host, | 63 LayerTree::LayerTree(std::unique_ptr<AnimationHost> animation_host, |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 inputs_.max_page_scale_factor == max_page_scale_factor) | 193 inputs_.max_page_scale_factor == max_page_scale_factor) |
193 return; | 194 return; |
194 | 195 |
195 inputs_.page_scale_factor = page_scale_factor; | 196 inputs_.page_scale_factor = page_scale_factor; |
196 inputs_.min_page_scale_factor = min_page_scale_factor; | 197 inputs_.min_page_scale_factor = min_page_scale_factor; |
197 inputs_.max_page_scale_factor = max_page_scale_factor; | 198 inputs_.max_page_scale_factor = max_page_scale_factor; |
198 SetPropertyTreesNeedRebuild(); | 199 SetPropertyTreesNeedRebuild(); |
199 SetNeedsCommit(); | 200 SetNeedsCommit(); |
200 } | 201 } |
201 | 202 |
| 203 void LayerTree::SetSubframePageScaleFactor(float subframe_page_scale_factor) { |
| 204 if (inputs_.subframe_page_scale_factor == subframe_page_scale_factor) |
| 205 return; |
| 206 |
| 207 inputs_.subframe_page_scale_factor = subframe_page_scale_factor; |
| 208 SetNeedsDisplayOnAllLayers(); |
| 209 } |
| 210 |
202 void LayerTree::StartPageScaleAnimation(const gfx::Vector2d& target_offset, | 211 void LayerTree::StartPageScaleAnimation(const gfx::Vector2d& target_offset, |
203 bool use_anchor, | 212 bool use_anchor, |
204 float scale, | 213 float scale, |
205 base::TimeDelta duration) { | 214 base::TimeDelta duration) { |
206 inputs_.pending_page_scale_animation.reset(new PendingPageScaleAnimation( | 215 inputs_.pending_page_scale_animation.reset(new PendingPageScaleAnimation( |
207 target_offset, use_anchor, scale, duration)); | 216 target_offset, use_anchor, scale, duration)); |
208 | 217 |
209 SetNeedsCommit(); | 218 SetNeedsCommit(); |
210 } | 219 } |
211 | 220 |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 if (inputs_.root_layer && property_trees_changed_on_active_tree) { | 402 if (inputs_.root_layer && property_trees_changed_on_active_tree) { |
394 if (property_trees_.sequence_number == | 403 if (property_trees_.sequence_number == |
395 tree_impl->property_trees()->sequence_number) | 404 tree_impl->property_trees()->sequence_number) |
396 tree_impl->property_trees()->PushChangeTrackingTo(&property_trees_); | 405 tree_impl->property_trees()->PushChangeTrackingTo(&property_trees_); |
397 else | 406 else |
398 tree_impl->MoveChangeTrackingToLayers(); | 407 tree_impl->MoveChangeTrackingToLayers(); |
399 } | 408 } |
400 // Setting property trees must happen before pushing the page scale. | 409 // Setting property trees must happen before pushing the page scale. |
401 tree_impl->SetPropertyTrees(&property_trees_); | 410 tree_impl->SetPropertyTrees(&property_trees_); |
402 | 411 |
403 tree_impl->PushPageScaleFromMainThread(inputs_.page_scale_factor, | 412 tree_impl->PushPageScaleFromMainThread( |
404 inputs_.min_page_scale_factor, | 413 inputs_.page_scale_factor, inputs_.subframe_page_scale_factor, |
405 inputs_.max_page_scale_factor); | 414 inputs_.min_page_scale_factor, inputs_.max_page_scale_factor); |
406 | 415 |
407 tree_impl->set_browser_controls_shrink_blink_size( | 416 tree_impl->set_browser_controls_shrink_blink_size( |
408 inputs_.browser_controls_shrink_blink_size); | 417 inputs_.browser_controls_shrink_blink_size); |
409 tree_impl->set_top_controls_height(inputs_.top_controls_height); | 418 tree_impl->set_top_controls_height(inputs_.top_controls_height); |
410 tree_impl->set_bottom_controls_height(inputs_.bottom_controls_height); | 419 tree_impl->set_bottom_controls_height(inputs_.bottom_controls_height); |
411 tree_impl->PushBrowserControlsFromMainThread( | 420 tree_impl->PushBrowserControlsFromMainThread( |
412 inputs_.top_controls_shown_ratio); | 421 inputs_.top_controls_shown_ratio); |
413 tree_impl->elastic_overscroll()->PushFromMainThread(elastic_overscroll_); | 422 tree_impl->elastic_overscroll()->PushFromMainThread(elastic_overscroll_); |
414 if (tree_impl->IsActiveTree()) | 423 if (tree_impl->IsActiveTree()) |
415 tree_impl->elastic_overscroll()->PushPendingToActive(); | 424 tree_impl->elastic_overscroll()->PushPendingToActive(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 inputs_.outer_viewport_scroll_layer | 464 inputs_.outer_viewport_scroll_layer |
456 ? inputs_.outer_viewport_scroll_layer->id() | 465 ? inputs_.outer_viewport_scroll_layer->id() |
457 : Layer::INVALID_ID); | 466 : Layer::INVALID_ID); |
458 | 467 |
459 // Browser Controls ignored. They are not supported. | 468 // Browser Controls ignored. They are not supported. |
460 DCHECK(!inputs_.browser_controls_shrink_blink_size); | 469 DCHECK(!inputs_.browser_controls_shrink_blink_size); |
461 | 470 |
462 proto->set_device_scale_factor(inputs_.device_scale_factor); | 471 proto->set_device_scale_factor(inputs_.device_scale_factor); |
463 proto->set_painted_device_scale_factor(inputs_.painted_device_scale_factor); | 472 proto->set_painted_device_scale_factor(inputs_.painted_device_scale_factor); |
464 proto->set_page_scale_factor(inputs_.page_scale_factor); | 473 proto->set_page_scale_factor(inputs_.page_scale_factor); |
| 474 proto->set_subframe_page_scale_factor(inputs_.subframe_page_scale_factor); |
465 proto->set_min_page_scale_factor(inputs_.min_page_scale_factor); | 475 proto->set_min_page_scale_factor(inputs_.min_page_scale_factor); |
466 proto->set_max_page_scale_factor(inputs_.max_page_scale_factor); | 476 proto->set_max_page_scale_factor(inputs_.max_page_scale_factor); |
467 | 477 |
468 proto->set_background_color(inputs_.background_color); | 478 proto->set_background_color(inputs_.background_color); |
469 proto->set_has_transparent_background(inputs_.has_transparent_background); | 479 proto->set_has_transparent_background(inputs_.has_transparent_background); |
470 | 480 |
471 LayerSelectionToProtobuf(inputs_.selection, proto->mutable_selection()); | 481 LayerSelectionToProtobuf(inputs_.selection, proto->mutable_selection()); |
472 SizeToProto(inputs_.device_viewport_size, | 482 SizeToProto(inputs_.device_viewport_size, |
473 proto->mutable_device_viewport_size()); | 483 proto->mutable_device_viewport_size()); |
474 | 484 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 UpdateAndGetLayer(inputs_.inner_viewport_scroll_layer.get(), | 536 UpdateAndGetLayer(inputs_.inner_viewport_scroll_layer.get(), |
527 proto.inner_viewport_scroll_layer_id(), this); | 537 proto.inner_viewport_scroll_layer_id(), this); |
528 inputs_.outer_viewport_scroll_layer = | 538 inputs_.outer_viewport_scroll_layer = |
529 UpdateAndGetLayer(inputs_.outer_viewport_scroll_layer.get(), | 539 UpdateAndGetLayer(inputs_.outer_viewport_scroll_layer.get(), |
530 proto.outer_viewport_scroll_layer_id(), this); | 540 proto.outer_viewport_scroll_layer_id(), this); |
531 | 541 |
532 inputs_.device_viewport_size = ProtoToSize(proto.device_viewport_size()); | 542 inputs_.device_viewport_size = ProtoToSize(proto.device_viewport_size()); |
533 inputs_.device_scale_factor = proto.device_scale_factor(); | 543 inputs_.device_scale_factor = proto.device_scale_factor(); |
534 inputs_.painted_device_scale_factor = proto.painted_device_scale_factor(); | 544 inputs_.painted_device_scale_factor = proto.painted_device_scale_factor(); |
535 inputs_.page_scale_factor = proto.page_scale_factor(); | 545 inputs_.page_scale_factor = proto.page_scale_factor(); |
| 546 inputs_.subframe_page_scale_factor = proto.subframe_page_scale_factor(); |
536 inputs_.min_page_scale_factor = proto.min_page_scale_factor(); | 547 inputs_.min_page_scale_factor = proto.min_page_scale_factor(); |
537 inputs_.max_page_scale_factor = proto.max_page_scale_factor(); | 548 inputs_.max_page_scale_factor = proto.max_page_scale_factor(); |
538 inputs_.background_color = proto.background_color(); | 549 inputs_.background_color = proto.background_color(); |
539 inputs_.has_transparent_background = proto.has_transparent_background(); | 550 inputs_.has_transparent_background = proto.has_transparent_background(); |
540 inputs_.have_scroll_event_handlers = proto.have_scroll_event_handlers(); | 551 inputs_.have_scroll_event_handlers = proto.have_scroll_event_handlers(); |
541 inputs_.event_listener_properties[static_cast<size_t>( | 552 inputs_.event_listener_properties[static_cast<size_t>( |
542 EventListenerClass::kMouseWheel)] = | 553 EventListenerClass::kMouseWheel)] = |
543 static_cast<EventListenerProperties>( | 554 static_cast<EventListenerProperties>( |
544 proto.wheel_event_listener_properties()); | 555 proto.wheel_event_listener_properties()); |
545 inputs_.event_listener_properties[static_cast<size_t>( | 556 inputs_.event_listener_properties[static_cast<size_t>( |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 LayerListReverseIterator<Layer> LayerTree::rend() { | 703 LayerListReverseIterator<Layer> LayerTree::rend() { |
693 return LayerListReverseIterator<Layer>(nullptr); | 704 return LayerListReverseIterator<Layer>(nullptr); |
694 } | 705 } |
695 | 706 |
696 void LayerTree::SetNeedsDisplayOnAllLayers() { | 707 void LayerTree::SetNeedsDisplayOnAllLayers() { |
697 for (auto* layer : *this) | 708 for (auto* layer : *this) |
698 layer->SetNeedsDisplay(); | 709 layer->SetNeedsDisplay(); |
699 } | 710 } |
700 | 711 |
701 } // namespace cc | 712 } // namespace cc |
OLD | NEW |