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

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

Issue 2375363002: cc/blimp: Set up the framework for state serialization. (Closed)
Patch Set: test update Created 4 years, 2 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.h ('k') | cc/trees/layer_tree_host_in_process.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 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 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 if (inputs_.pending_page_scale_animation) { 421 if (inputs_.pending_page_scale_animation) {
422 tree_impl->SetPendingPageScaleAnimation( 422 tree_impl->SetPendingPageScaleAnimation(
423 std::move(inputs_.pending_page_scale_animation)); 423 std::move(inputs_.pending_page_scale_animation));
424 } 424 }
425 425
426 DCHECK(!tree_impl->ViewportSizeInvalid()); 426 DCHECK(!tree_impl->ViewportSizeInvalid());
427 427
428 tree_impl->set_has_ever_been_drawn(false); 428 tree_impl->set_has_ever_been_drawn(false);
429 } 429 }
430 430
431 void LayerTree::ToProtobuf(proto::LayerTree* proto) { 431 void LayerTree::ToProtobuf(proto::LayerTree* proto, bool inputs_only) {
432 LayerProtoConverter::SerializeLayerHierarchy(inputs_.root_layer, 432 TRACE_EVENT0("cc.remote", "LayerProtoConverter::SerializeLayerHierarchy");
433 proto->mutable_root_layer());
434 433
435 for (auto* layer : layers_that_should_push_properties_) { 434 // LayerTree::Inputs Serialization -----------------------------------------
436 proto->add_layers_that_should_push_properties(layer->id());
437 }
438 proto->set_in_paint_layer_contents(in_paint_layer_contents());
439 435
440 proto->set_needs_full_tree_sync(needs_full_tree_sync_); 436 // TODO(khushalsagar): Why walk the tree twice? Why not serialize properties
441 proto->set_needs_meta_info_recomputation(needs_meta_info_recomputation_); 437 // for dirty layers as you serialize the hierarchy?
442 proto->set_hud_layer_id(hud_layer_ ? hud_layer_->id() : Layer::INVALID_ID); 438 if (inputs_.root_layer)
439 inputs_.root_layer->ToLayerNodeProto(proto->mutable_root_layer());
443 440
444 // Viewport layers. 441 // Viewport layers.
445 proto->set_overscroll_elasticity_layer_id( 442 proto->set_overscroll_elasticity_layer_id(
446 inputs_.overscroll_elasticity_layer 443 inputs_.overscroll_elasticity_layer
447 ? inputs_.overscroll_elasticity_layer->id() 444 ? inputs_.overscroll_elasticity_layer->id()
448 : Layer::INVALID_ID); 445 : Layer::INVALID_ID);
449 proto->set_page_scale_layer_id(inputs_.page_scale_layer 446 proto->set_page_scale_layer_id(inputs_.page_scale_layer
450 ? inputs_.page_scale_layer->id() 447 ? inputs_.page_scale_layer->id()
451 : Layer::INVALID_ID); 448 : Layer::INVALID_ID);
452 proto->set_inner_viewport_scroll_layer_id( 449 proto->set_inner_viewport_scroll_layer_id(
453 inputs_.inner_viewport_scroll_layer 450 inputs_.inner_viewport_scroll_layer
454 ? inputs_.inner_viewport_scroll_layer->id() 451 ? inputs_.inner_viewport_scroll_layer->id()
455 : Layer::INVALID_ID); 452 : Layer::INVALID_ID);
456 proto->set_outer_viewport_scroll_layer_id( 453 proto->set_outer_viewport_scroll_layer_id(
457 inputs_.outer_viewport_scroll_layer 454 inputs_.outer_viewport_scroll_layer
458 ? inputs_.outer_viewport_scroll_layer->id() 455 ? inputs_.outer_viewport_scroll_layer->id()
459 : Layer::INVALID_ID); 456 : Layer::INVALID_ID);
460 457
461 SizeToProto(inputs_.device_viewport_size, 458 // Top Controls ignored. They are not supported.
462 proto->mutable_device_viewport_size()); 459 DCHECK(!inputs_.top_controls_shrink_blink_size);
463 proto->set_top_controls_shrink_blink_size( 460
464 inputs_.top_controls_shrink_blink_size);
465 proto->set_top_controls_height(inputs_.top_controls_height);
466 proto->set_top_controls_shown_ratio(inputs_.top_controls_shown_ratio);
467 proto->set_device_scale_factor(inputs_.device_scale_factor); 461 proto->set_device_scale_factor(inputs_.device_scale_factor);
468 proto->set_painted_device_scale_factor(inputs_.painted_device_scale_factor); 462 proto->set_painted_device_scale_factor(inputs_.painted_device_scale_factor);
469 proto->set_page_scale_factor(inputs_.page_scale_factor); 463 proto->set_page_scale_factor(inputs_.page_scale_factor);
470 proto->set_min_page_scale_factor(inputs_.min_page_scale_factor); 464 proto->set_min_page_scale_factor(inputs_.min_page_scale_factor);
471 proto->set_max_page_scale_factor(inputs_.max_page_scale_factor); 465 proto->set_max_page_scale_factor(inputs_.max_page_scale_factor);
472 466
473 proto->set_background_color(inputs_.background_color); 467 proto->set_background_color(inputs_.background_color);
474 proto->set_has_transparent_background(inputs_.has_transparent_background); 468 proto->set_has_transparent_background(inputs_.has_transparent_background);
469
470 LayerSelectionToProtobuf(inputs_.selection, proto->mutable_selection());
471 SizeToProto(inputs_.device_viewport_size,
472 proto->mutable_device_viewport_size());
473
475 proto->set_have_scroll_event_handlers(inputs_.have_scroll_event_handlers); 474 proto->set_have_scroll_event_handlers(inputs_.have_scroll_event_handlers);
476 proto->set_wheel_event_listener_properties(static_cast<uint32_t>( 475 proto->set_wheel_event_listener_properties(static_cast<uint32_t>(
477 event_listener_properties(EventListenerClass::kMouseWheel))); 476 event_listener_properties(EventListenerClass::kMouseWheel)));
478 proto->set_touch_start_or_move_event_listener_properties( 477 proto->set_touch_start_or_move_event_listener_properties(
479 static_cast<uint32_t>( 478 static_cast<uint32_t>(
480 event_listener_properties(EventListenerClass::kTouchStartOrMove))); 479 event_listener_properties(EventListenerClass::kTouchStartOrMove)));
481 proto->set_touch_end_or_cancel_event_listener_properties( 480 proto->set_touch_end_or_cancel_event_listener_properties(
482 static_cast<uint32_t>( 481 static_cast<uint32_t>(
483 event_listener_properties(EventListenerClass::kTouchEndOrCancel))); 482 event_listener_properties(EventListenerClass::kTouchEndOrCancel)));
484 483
485 LayerSelectionToProtobuf(inputs_.selection, proto->mutable_selection()); 484 if (inputs_only)
485 return;
486 // ----------------------------------------------------------------------
487
488 for (auto* layer : layers_that_should_push_properties_) {
489 proto->add_layers_that_should_push_properties(layer->id());
490 }
491 proto->set_in_paint_layer_contents(in_paint_layer_contents());
492
493 proto->set_needs_full_tree_sync(needs_full_tree_sync_);
494 proto->set_needs_meta_info_recomputation(needs_meta_info_recomputation_);
495 proto->set_hud_layer_id(hud_layer_ ? hud_layer_->id() : Layer::INVALID_ID);
496
486 property_trees_.ToProtobuf(proto->mutable_property_trees()); 497 property_trees_.ToProtobuf(proto->mutable_property_trees());
487 Vector2dFToProto(elastic_overscroll_, proto->mutable_elastic_overscroll()); 498 Vector2dFToProto(elastic_overscroll_, proto->mutable_elastic_overscroll());
488 } 499 }
489 500
490 void LayerTree::FromProtobuf(const proto::LayerTree& proto) { 501 void LayerTree::FromProtobuf(const proto::LayerTree& proto) {
491 // Layer hierarchy. 502 // Layer hierarchy.
492 scoped_refptr<Layer> new_root_layer = 503 scoped_refptr<Layer> new_root_layer;
493 LayerProtoConverter::DeserializeLayerHierarchy( 504 if (proto.has_root_layer())
494 inputs_.root_layer, proto.root_layer(), layer_tree_host_); 505 new_root_layer = LayerProtoConverter::DeserializeLayerHierarchy(
506 inputs_.root_layer, proto.root_layer(), layer_tree_host_);
495 if (inputs_.root_layer != new_root_layer) { 507 if (inputs_.root_layer != new_root_layer) {
496 inputs_.root_layer = new_root_layer; 508 inputs_.root_layer = new_root_layer;
497 } 509 }
498 510
499 for (auto layer_id : proto.layers_that_should_push_properties()) { 511 for (auto layer_id : proto.layers_that_should_push_properties()) {
500 AddLayerShouldPushProperties(layer_id_map_[layer_id]); 512 AddLayerShouldPushProperties(layer_id_map_[layer_id]);
501 } 513 }
502 in_paint_layer_contents_ = proto.in_paint_layer_contents(); 514 in_paint_layer_contents_ = proto.in_paint_layer_contents();
503 515
504 needs_full_tree_sync_ = proto.needs_full_tree_sync(); 516 needs_full_tree_sync_ = proto.needs_full_tree_sync();
505 needs_meta_info_recomputation_ = proto.needs_meta_info_recomputation(); 517 needs_meta_info_recomputation_ = proto.needs_meta_info_recomputation();
506 518
507 inputs_.overscroll_elasticity_layer = 519 inputs_.overscroll_elasticity_layer =
508 UpdateAndGetLayer(inputs_.overscroll_elasticity_layer.get(), 520 UpdateAndGetLayer(inputs_.overscroll_elasticity_layer.get(),
509 proto.overscroll_elasticity_layer_id(), this); 521 proto.overscroll_elasticity_layer_id(), this);
510 inputs_.page_scale_layer = UpdateAndGetLayer( 522 inputs_.page_scale_layer = UpdateAndGetLayer(
511 inputs_.page_scale_layer.get(), proto.page_scale_layer_id(), this); 523 inputs_.page_scale_layer.get(), proto.page_scale_layer_id(), this);
512 inputs_.inner_viewport_scroll_layer = 524 inputs_.inner_viewport_scroll_layer =
513 UpdateAndGetLayer(inputs_.inner_viewport_scroll_layer.get(), 525 UpdateAndGetLayer(inputs_.inner_viewport_scroll_layer.get(),
514 proto.inner_viewport_scroll_layer_id(), this); 526 proto.inner_viewport_scroll_layer_id(), this);
515 inputs_.outer_viewport_scroll_layer = 527 inputs_.outer_viewport_scroll_layer =
516 UpdateAndGetLayer(inputs_.outer_viewport_scroll_layer.get(), 528 UpdateAndGetLayer(inputs_.outer_viewport_scroll_layer.get(),
517 proto.outer_viewport_scroll_layer_id(), this); 529 proto.outer_viewport_scroll_layer_id(), this);
518 530
519 inputs_.device_viewport_size = ProtoToSize(proto.device_viewport_size()); 531 inputs_.device_viewport_size = ProtoToSize(proto.device_viewport_size());
520 inputs_.top_controls_shrink_blink_size =
521 proto.top_controls_shrink_blink_size();
522 inputs_.top_controls_height = proto.top_controls_height();
523 inputs_.top_controls_shown_ratio = proto.top_controls_shown_ratio();
524 inputs_.device_scale_factor = proto.device_scale_factor(); 532 inputs_.device_scale_factor = proto.device_scale_factor();
525 inputs_.painted_device_scale_factor = proto.painted_device_scale_factor(); 533 inputs_.painted_device_scale_factor = proto.painted_device_scale_factor();
526 inputs_.page_scale_factor = proto.page_scale_factor(); 534 inputs_.page_scale_factor = proto.page_scale_factor();
527 inputs_.min_page_scale_factor = proto.min_page_scale_factor(); 535 inputs_.min_page_scale_factor = proto.min_page_scale_factor();
528 inputs_.max_page_scale_factor = proto.max_page_scale_factor(); 536 inputs_.max_page_scale_factor = proto.max_page_scale_factor();
529 inputs_.background_color = proto.background_color(); 537 inputs_.background_color = proto.background_color();
530 inputs_.has_transparent_background = proto.has_transparent_background(); 538 inputs_.has_transparent_background = proto.has_transparent_background();
531 inputs_.have_scroll_event_handlers = proto.have_scroll_event_handlers(); 539 inputs_.have_scroll_event_handlers = proto.have_scroll_event_handlers();
532 inputs_.event_listener_properties[static_cast<size_t>( 540 inputs_.event_listener_properties[static_cast<size_t>(
533 EventListenerClass::kMouseWheel)] = 541 EventListenerClass::kMouseWheel)] =
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 LayerListReverseIterator<Layer> LayerTree::rend() { 691 LayerListReverseIterator<Layer> LayerTree::rend() {
684 return LayerListReverseIterator<Layer>(nullptr); 692 return LayerListReverseIterator<Layer>(nullptr);
685 } 693 }
686 694
687 void LayerTree::SetNeedsDisplayOnAllLayers() { 695 void LayerTree::SetNeedsDisplayOnAllLayers() {
688 for (auto* layer : *this) 696 for (auto* layer : *this)
689 layer->SetNeedsDisplay(); 697 layer->SetNeedsDisplay();
690 } 698 }
691 699
692 } // namespace cc 700 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree.h ('k') | cc/trees/layer_tree_host_in_process.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698