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

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

Issue 2493523003: cc: Remove unused proto conversion code. (Closed)
Patch Set: test Created 4 years, 1 month 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.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/layers/layer_proto_converter.h"
14 #include "cc/proto/gfx_conversions.h" 13 #include "cc/proto/gfx_conversions.h"
15 #include "cc/proto/layer_tree.pb.h" 14 #include "cc/proto/layer_tree.pb.h"
16 #include "cc/trees/layer_tree_host.h" 15 #include "cc/trees/layer_tree_host.h"
17 #include "cc/trees/layer_tree_host_common.h" 16 #include "cc/trees/layer_tree_host_common.h"
18 #include "cc/trees/layer_tree_impl.h" 17 #include "cc/trees/layer_tree_impl.h"
19 #include "cc/trees/mutator_host.h" 18 #include "cc/trees/mutator_host.h"
20 #include "cc/trees/property_tree_builder.h" 19 #include "cc/trees/property_tree_builder.h"
21 20
22 namespace cc { 21 namespace cc {
23 22
24 namespace {
25
26 Layer* UpdateAndGetLayer(Layer* current_layer,
27 int layer_id,
28 LayerTree* layer_tree) {
29 if (layer_id == Layer::INVALID_ID) {
30 if (current_layer)
31 current_layer->SetLayerTreeHost(nullptr);
32
33 return nullptr;
34 }
35 Layer* layer = layer_tree->LayerById(layer_id);
36 DCHECK(layer);
37 if (current_layer && current_layer != layer)
38 current_layer->SetLayerTreeHost(nullptr);
39
40 return layer;
41 }
42
43 } // namespace
44
45 LayerTree::Inputs::Inputs() 23 LayerTree::Inputs::Inputs()
46 : top_controls_height(0.f), 24 : top_controls_height(0.f),
47 top_controls_shown_ratio(0.f), 25 top_controls_shown_ratio(0.f),
48 browser_controls_shrink_blink_size(false), 26 browser_controls_shrink_blink_size(false),
49 bottom_controls_height(0.f), 27 bottom_controls_height(0.f),
50 device_scale_factor(1.f), 28 device_scale_factor(1.f),
51 painted_device_scale_factor(1.f), 29 painted_device_scale_factor(1.f),
52 page_scale_factor(1.f), 30 page_scale_factor(1.f),
53 min_page_scale_factor(1.f), 31 min_page_scale_factor(1.f),
54 max_page_scale_factor(1.f), 32 max_page_scale_factor(1.f),
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 if (inputs_.pending_page_scale_animation) { 400 if (inputs_.pending_page_scale_animation) {
423 tree_impl->SetPendingPageScaleAnimation( 401 tree_impl->SetPendingPageScaleAnimation(
424 std::move(inputs_.pending_page_scale_animation)); 402 std::move(inputs_.pending_page_scale_animation));
425 } 403 }
426 404
427 DCHECK(!tree_impl->ViewportSizeInvalid()); 405 DCHECK(!tree_impl->ViewportSizeInvalid());
428 406
429 tree_impl->set_has_ever_been_drawn(false); 407 tree_impl->set_has_ever_been_drawn(false);
430 } 408 }
431 409
432 void LayerTree::ToProtobuf(proto::LayerTree* proto, bool inputs_only) { 410 void LayerTree::ToProtobuf(proto::LayerTree* proto) {
433 TRACE_EVENT0("cc.remote", "LayerProtoConverter::SerializeLayerHierarchy"); 411 TRACE_EVENT0("cc.remote", "LayerProtoConverter::SerializeLayerHierarchy");
434 412
435 // LayerTree::Inputs Serialization -----------------------------------------
436
437 // TODO(khushalsagar): Why walk the tree twice? Why not serialize properties 413 // TODO(khushalsagar): Why walk the tree twice? Why not serialize properties
438 // for dirty layers as you serialize the hierarchy? 414 // for dirty layers as you serialize the hierarchy?
439 if (inputs_.root_layer) 415 if (inputs_.root_layer)
440 inputs_.root_layer->ToLayerNodeProto(proto->mutable_root_layer()); 416 inputs_.root_layer->ToLayerNodeProto(proto->mutable_root_layer());
441 417
442 // Viewport layers. 418 // Viewport layers.
443 proto->set_overscroll_elasticity_layer_id( 419 proto->set_overscroll_elasticity_layer_id(
444 inputs_.overscroll_elasticity_layer 420 inputs_.overscroll_elasticity_layer
445 ? inputs_.overscroll_elasticity_layer->id() 421 ? inputs_.overscroll_elasticity_layer->id()
446 : Layer::INVALID_ID); 422 : Layer::INVALID_ID);
(...skipping 27 matching lines...) Expand all
474 450
475 proto->set_have_scroll_event_handlers(inputs_.have_scroll_event_handlers); 451 proto->set_have_scroll_event_handlers(inputs_.have_scroll_event_handlers);
476 proto->set_wheel_event_listener_properties(static_cast<uint32_t>( 452 proto->set_wheel_event_listener_properties(static_cast<uint32_t>(
477 event_listener_properties(EventListenerClass::kMouseWheel))); 453 event_listener_properties(EventListenerClass::kMouseWheel)));
478 proto->set_touch_start_or_move_event_listener_properties( 454 proto->set_touch_start_or_move_event_listener_properties(
479 static_cast<uint32_t>( 455 static_cast<uint32_t>(
480 event_listener_properties(EventListenerClass::kTouchStartOrMove))); 456 event_listener_properties(EventListenerClass::kTouchStartOrMove)));
481 proto->set_touch_end_or_cancel_event_listener_properties( 457 proto->set_touch_end_or_cancel_event_listener_properties(
482 static_cast<uint32_t>( 458 static_cast<uint32_t>(
483 event_listener_properties(EventListenerClass::kTouchEndOrCancel))); 459 event_listener_properties(EventListenerClass::kTouchEndOrCancel)));
484
485 if (inputs_only)
486 return;
487 // ----------------------------------------------------------------------
488
489 for (auto* layer : layers_that_should_push_properties_) {
490 proto->add_layers_that_should_push_properties(layer->id());
491 }
492 proto->set_in_paint_layer_contents(in_paint_layer_contents());
493
494 proto->set_needs_full_tree_sync(needs_full_tree_sync_);
495 proto->set_needs_meta_info_recomputation(needs_meta_info_recomputation_);
496 proto->set_hud_layer_id(hud_layer_ ? hud_layer_->id() : Layer::INVALID_ID);
497
498 property_trees_.ToProtobuf(proto->mutable_property_trees());
499 Vector2dFToProto(elastic_overscroll_, proto->mutable_elastic_overscroll());
500 }
501
502 void LayerTree::FromProtobuf(const proto::LayerTree& proto) {
503 // Layer hierarchy.
504 scoped_refptr<Layer> new_root_layer;
505 if (proto.has_root_layer())
506 new_root_layer = LayerProtoConverter::DeserializeLayerHierarchy(
507 inputs_.root_layer, proto.root_layer(), layer_tree_host_);
508 if (inputs_.root_layer != new_root_layer) {
509 inputs_.root_layer = new_root_layer;
510 }
511
512 for (auto layer_id : proto.layers_that_should_push_properties()) {
513 AddLayerShouldPushProperties(layer_id_map_[layer_id]);
514 }
515 in_paint_layer_contents_ = proto.in_paint_layer_contents();
516
517 needs_full_tree_sync_ = proto.needs_full_tree_sync();
518 needs_meta_info_recomputation_ = proto.needs_meta_info_recomputation();
519
520 inputs_.overscroll_elasticity_layer =
521 UpdateAndGetLayer(inputs_.overscroll_elasticity_layer.get(),
522 proto.overscroll_elasticity_layer_id(), this);
523 inputs_.page_scale_layer = UpdateAndGetLayer(
524 inputs_.page_scale_layer.get(), proto.page_scale_layer_id(), this);
525 inputs_.inner_viewport_scroll_layer =
526 UpdateAndGetLayer(inputs_.inner_viewport_scroll_layer.get(),
527 proto.inner_viewport_scroll_layer_id(), this);
528 inputs_.outer_viewport_scroll_layer =
529 UpdateAndGetLayer(inputs_.outer_viewport_scroll_layer.get(),
530 proto.outer_viewport_scroll_layer_id(), this);
531
532 inputs_.device_viewport_size = ProtoToSize(proto.device_viewport_size());
533 inputs_.device_scale_factor = proto.device_scale_factor();
534 inputs_.painted_device_scale_factor = proto.painted_device_scale_factor();
535 inputs_.page_scale_factor = proto.page_scale_factor();
536 inputs_.min_page_scale_factor = proto.min_page_scale_factor();
537 inputs_.max_page_scale_factor = proto.max_page_scale_factor();
538 inputs_.background_color = proto.background_color();
539 inputs_.has_transparent_background = proto.has_transparent_background();
540 inputs_.have_scroll_event_handlers = proto.have_scroll_event_handlers();
541 inputs_.event_listener_properties[static_cast<size_t>(
542 EventListenerClass::kMouseWheel)] =
543 static_cast<EventListenerProperties>(
544 proto.wheel_event_listener_properties());
545 inputs_.event_listener_properties[static_cast<size_t>(
546 EventListenerClass::kTouchStartOrMove)] =
547 static_cast<EventListenerProperties>(
548 proto.touch_start_or_move_event_listener_properties());
549 inputs_.event_listener_properties[static_cast<size_t>(
550 EventListenerClass::kTouchEndOrCancel)] =
551 static_cast<EventListenerProperties>(
552 proto.touch_end_or_cancel_event_listener_properties());
553
554 hud_layer_ = static_cast<HeadsUpDisplayLayer*>(
555 UpdateAndGetLayer(hud_layer_.get(), proto.hud_layer_id(), this));
556
557 LayerSelectionFromProtobuf(&inputs_.selection, proto.selection());
558 elastic_overscroll_ = ProtoToVector2dF(proto.elastic_overscroll());
559
560 // It is required to create new PropertyTrees before deserializing it.
561 property_trees_ = PropertyTrees();
562 property_trees_.FromProtobuf(proto.property_trees());
563
564 // Forcefully override the sequence number of all layers in the tree to have
565 // a valid sequence number. Changing the sequence number for a layer does not
566 // need a commit, so the value will become out of date for layers that are not
567 // updated for other reasons. All layers that at this point are part of the
568 // layer tree are valid, so it is OK that they have a valid sequence number.
569 int seq_num = property_trees_.sequence_number;
570 LayerTreeHostCommon::CallFunctionForEveryLayer(this, [seq_num](Layer* layer) {
571 layer->set_property_tree_sequence_number(seq_num);
572 });
573 } 460 }
574 461
575 Layer* LayerTree::LayerByElementId(ElementId element_id) const { 462 Layer* LayerTree::LayerByElementId(ElementId element_id) const {
576 ElementLayersMap::const_iterator iter = element_layers_map_.find(element_id); 463 ElementLayersMap::const_iterator iter = element_layers_map_.find(element_id);
577 return iter != element_layers_map_.end() ? iter->second : nullptr; 464 return iter != element_layers_map_.end() ? iter->second : nullptr;
578 } 465 }
579 466
580 void LayerTree::RegisterElement(ElementId element_id, 467 void LayerTree::RegisterElement(ElementId element_id,
581 ElementListType list_type, 468 ElementListType list_type,
582 Layer* layer) { 469 Layer* layer) {
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 LayerListReverseIterator<Layer> LayerTree::rend() { 579 LayerListReverseIterator<Layer> LayerTree::rend() {
693 return LayerListReverseIterator<Layer>(nullptr); 580 return LayerListReverseIterator<Layer>(nullptr);
694 } 581 }
695 582
696 void LayerTree::SetNeedsDisplayOnAllLayers() { 583 void LayerTree::SetNeedsDisplayOnAllLayers() {
697 for (auto* layer : *this) 584 for (auto* layer : *this)
698 layer->SetNeedsDisplay(); 585 layer->SetNeedsDisplay();
699 } 586 }
700 587
701 } // namespace cc 588 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698