| 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/input/page_scale_animation.h" | 9 #include "cc/input/page_scale_animation.h" |
| 10 #include "cc/layers/heads_up_display_layer.h" | 10 #include "cc/layers/heads_up_display_layer.h" |
| 11 #include "cc/layers/heads_up_display_layer_impl.h" | 11 #include "cc/layers/heads_up_display_layer_impl.h" |
| 12 #include "cc/layers/layer.h" | 12 #include "cc/layers/layer.h" |
| 13 #include "cc/proto/gfx_conversions.h" | |
| 14 #include "cc/proto/layer_tree.pb.h" | |
| 15 #include "cc/trees/layer_tree_host.h" | 13 #include "cc/trees/layer_tree_host.h" |
| 16 #include "cc/trees/layer_tree_host_common.h" | 14 #include "cc/trees/layer_tree_host_common.h" |
| 17 #include "cc/trees/layer_tree_impl.h" | 15 #include "cc/trees/layer_tree_impl.h" |
| 18 #include "cc/trees/mutator_host.h" | 16 #include "cc/trees/mutator_host.h" |
| 19 #include "cc/trees/property_tree_builder.h" | 17 #include "cc/trees/property_tree_builder.h" |
| 20 | 18 |
| 21 namespace cc { | 19 namespace cc { |
| 22 | 20 |
| 23 LayerTree::Inputs::Inputs() | 21 LayerTree::Inputs::Inputs() |
| 24 : top_controls_height(0.f), | 22 : top_controls_height(0.f), |
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 if (inputs_.pending_page_scale_animation) { | 402 if (inputs_.pending_page_scale_animation) { |
| 405 tree_impl->SetPendingPageScaleAnimation( | 403 tree_impl->SetPendingPageScaleAnimation( |
| 406 std::move(inputs_.pending_page_scale_animation)); | 404 std::move(inputs_.pending_page_scale_animation)); |
| 407 } | 405 } |
| 408 | 406 |
| 409 DCHECK(!tree_impl->ViewportSizeInvalid()); | 407 DCHECK(!tree_impl->ViewportSizeInvalid()); |
| 410 | 408 |
| 411 tree_impl->set_has_ever_been_drawn(false); | 409 tree_impl->set_has_ever_been_drawn(false); |
| 412 } | 410 } |
| 413 | 411 |
| 414 void LayerTree::ToProtobuf(proto::LayerTree* proto) { | |
| 415 TRACE_EVENT0("cc.remote", "LayerProtoConverter::SerializeLayerHierarchy"); | |
| 416 | |
| 417 // TODO(khushalsagar): Why walk the tree twice? Why not serialize properties | |
| 418 // for dirty layers as you serialize the hierarchy? | |
| 419 if (inputs_.root_layer) | |
| 420 inputs_.root_layer->ToLayerNodeProto(proto->mutable_root_layer()); | |
| 421 | |
| 422 // Viewport layers. | |
| 423 proto->set_overscroll_elasticity_layer_id( | |
| 424 inputs_.overscroll_elasticity_layer | |
| 425 ? inputs_.overscroll_elasticity_layer->id() | |
| 426 : Layer::INVALID_ID); | |
| 427 proto->set_page_scale_layer_id(inputs_.page_scale_layer | |
| 428 ? inputs_.page_scale_layer->id() | |
| 429 : Layer::INVALID_ID); | |
| 430 proto->set_inner_viewport_scroll_layer_id( | |
| 431 inputs_.inner_viewport_scroll_layer | |
| 432 ? inputs_.inner_viewport_scroll_layer->id() | |
| 433 : Layer::INVALID_ID); | |
| 434 proto->set_outer_viewport_scroll_layer_id( | |
| 435 inputs_.outer_viewport_scroll_layer | |
| 436 ? inputs_.outer_viewport_scroll_layer->id() | |
| 437 : Layer::INVALID_ID); | |
| 438 | |
| 439 // Browser Controls ignored. They are not supported. | |
| 440 DCHECK(!inputs_.browser_controls_shrink_blink_size); | |
| 441 | |
| 442 proto->set_device_scale_factor(inputs_.device_scale_factor); | |
| 443 proto->set_painted_device_scale_factor(inputs_.painted_device_scale_factor); | |
| 444 proto->set_page_scale_factor(inputs_.page_scale_factor); | |
| 445 proto->set_min_page_scale_factor(inputs_.min_page_scale_factor); | |
| 446 proto->set_max_page_scale_factor(inputs_.max_page_scale_factor); | |
| 447 | |
| 448 proto->set_background_color(inputs_.background_color); | |
| 449 proto->set_has_transparent_background(inputs_.has_transparent_background); | |
| 450 | |
| 451 LayerSelectionToProtobuf(inputs_.selection, proto->mutable_selection()); | |
| 452 SizeToProto(inputs_.device_viewport_size, | |
| 453 proto->mutable_device_viewport_size()); | |
| 454 | |
| 455 proto->set_have_scroll_event_handlers(inputs_.have_scroll_event_handlers); | |
| 456 proto->set_wheel_event_listener_properties(static_cast<uint32_t>( | |
| 457 event_listener_properties(EventListenerClass::kMouseWheel))); | |
| 458 proto->set_touch_start_or_move_event_listener_properties( | |
| 459 static_cast<uint32_t>( | |
| 460 event_listener_properties(EventListenerClass::kTouchStartOrMove))); | |
| 461 proto->set_touch_end_or_cancel_event_listener_properties( | |
| 462 static_cast<uint32_t>( | |
| 463 event_listener_properties(EventListenerClass::kTouchEndOrCancel))); | |
| 464 } | |
| 465 | |
| 466 Layer* LayerTree::LayerByElementId(ElementId element_id) const { | 412 Layer* LayerTree::LayerByElementId(ElementId element_id) const { |
| 467 ElementLayersMap::const_iterator iter = element_layers_map_.find(element_id); | 413 ElementLayersMap::const_iterator iter = element_layers_map_.find(element_id); |
| 468 return iter != element_layers_map_.end() ? iter->second : nullptr; | 414 return iter != element_layers_map_.end() ? iter->second : nullptr; |
| 469 } | 415 } |
| 470 | 416 |
| 471 void LayerTree::RegisterElement(ElementId element_id, | 417 void LayerTree::RegisterElement(ElementId element_id, |
| 472 ElementListType list_type, | 418 ElementListType list_type, |
| 473 Layer* layer) { | 419 Layer* layer) { |
| 474 if (layer->element_id()) { | 420 if (layer->element_id()) { |
| 475 element_layers_map_[layer->element_id()] = layer; | 421 element_layers_map_[layer->element_id()] = layer; |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 LayerListReverseIterator<Layer> LayerTree::rend() { | 529 LayerListReverseIterator<Layer> LayerTree::rend() { |
| 584 return LayerListReverseIterator<Layer>(nullptr); | 530 return LayerListReverseIterator<Layer>(nullptr); |
| 585 } | 531 } |
| 586 | 532 |
| 587 void LayerTree::SetNeedsDisplayOnAllLayers() { | 533 void LayerTree::SetNeedsDisplayOnAllLayers() { |
| 588 for (auto* layer : *this) | 534 for (auto* layer : *this) |
| 589 layer->SetNeedsDisplay(); | 535 layer->SetNeedsDisplay(); |
| 590 } | 536 } |
| 591 | 537 |
| 592 } // namespace cc | 538 } // namespace cc |
| OLD | NEW |