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 |