| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/layers/layer_impl.h" | 5 #include "cc/layers/layer_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 mask_layer_id_(-1), | 55 mask_layer_id_(-1), |
| 56 replica_layer_id_(-1), | 56 replica_layer_id_(-1), |
| 57 layer_id_(id), | 57 layer_id_(id), |
| 58 layer_tree_impl_(tree_impl), | 58 layer_tree_impl_(tree_impl), |
| 59 scroll_offset_(scroll_offset), | 59 scroll_offset_(scroll_offset), |
| 60 scroll_clip_layer_id_(Layer::INVALID_ID), | 60 scroll_clip_layer_id_(Layer::INVALID_ID), |
| 61 main_thread_scrolling_reasons_( | 61 main_thread_scrolling_reasons_( |
| 62 MainThreadScrollingReason::kNotScrollingOnMain), | 62 MainThreadScrollingReason::kNotScrollingOnMain), |
| 63 have_wheel_event_handlers_(false), | 63 have_wheel_event_handlers_(false), |
| 64 have_scroll_event_handlers_(false), | 64 have_scroll_event_handlers_(false), |
| 65 scroll_blocks_on_(SCROLL_BLOCKS_ON_NONE), | |
| 66 user_scrollable_horizontal_(true), | 65 user_scrollable_horizontal_(true), |
| 67 user_scrollable_vertical_(true), | 66 user_scrollable_vertical_(true), |
| 68 stacking_order_changed_(false), | 67 stacking_order_changed_(false), |
| 69 double_sided_(true), | 68 double_sided_(true), |
| 70 should_flatten_transform_(true), | 69 should_flatten_transform_(true), |
| 71 should_flatten_transform_from_property_tree_(false), | 70 should_flatten_transform_from_property_tree_(false), |
| 72 layer_property_changed_(false), | 71 layer_property_changed_(false), |
| 73 masks_to_bounds_(false), | 72 masks_to_bounds_(false), |
| 74 contents_opaque_(false), | 73 contents_opaque_(false), |
| 75 is_root_for_isolated_group_(false), | 74 is_root_for_isolated_group_(false), |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 : user_scrollable_vertical_; | 504 : user_scrollable_vertical_; |
| 506 } | 505 } |
| 507 | 506 |
| 508 void LayerImpl::ApplySentScrollDeltasFromAbortedCommit() { | 507 void LayerImpl::ApplySentScrollDeltasFromAbortedCommit() { |
| 509 DCHECK(layer_tree_impl()->IsActiveTree()); | 508 DCHECK(layer_tree_impl()->IsActiveTree()); |
| 510 scroll_offset_->AbortCommit(); | 509 scroll_offset_->AbortCommit(); |
| 511 } | 510 } |
| 512 | 511 |
| 513 InputHandler::ScrollStatus LayerImpl::TryScroll( | 512 InputHandler::ScrollStatus LayerImpl::TryScroll( |
| 514 const gfx::PointF& screen_space_point, | 513 const gfx::PointF& screen_space_point, |
| 515 InputHandler::ScrollInputType type, | 514 InputHandler::ScrollInputType type) const { |
| 516 ScrollBlocksOn effective_block_mode) const { | |
| 517 InputHandler::ScrollStatus scroll_status; | 515 InputHandler::ScrollStatus scroll_status; |
| 518 scroll_status.main_thread_scrolling_reasons = | 516 scroll_status.main_thread_scrolling_reasons = |
| 519 MainThreadScrollingReason::kNotScrollingOnMain; | 517 MainThreadScrollingReason::kNotScrollingOnMain; |
| 520 if (should_scroll_on_main_thread()) { | 518 if (should_scroll_on_main_thread()) { |
| 521 TRACE_EVENT0("cc", "LayerImpl::TryScroll: Failed ShouldScrollOnMainThread"); | 519 TRACE_EVENT0("cc", "LayerImpl::TryScroll: Failed ShouldScrollOnMainThread"); |
| 522 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; | 520 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; |
| 523 scroll_status.main_thread_scrolling_reasons = | 521 scroll_status.main_thread_scrolling_reasons = |
| 524 main_thread_scrolling_reasons_; | 522 main_thread_scrolling_reasons_; |
| 525 return scroll_status; | 523 return scroll_status; |
| 526 } | 524 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 551 gfx::ToRoundedPoint(hit_test_point_in_layer_space))) { | 549 gfx::ToRoundedPoint(hit_test_point_in_layer_space))) { |
| 552 TRACE_EVENT0("cc", | 550 TRACE_EVENT0("cc", |
| 553 "LayerImpl::tryScroll: Failed NonFastScrollableRegion"); | 551 "LayerImpl::tryScroll: Failed NonFastScrollableRegion"); |
| 554 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; | 552 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; |
| 555 scroll_status.main_thread_scrolling_reasons = | 553 scroll_status.main_thread_scrolling_reasons = |
| 556 MainThreadScrollingReason::kNonFastScrollableRegion; | 554 MainThreadScrollingReason::kNonFastScrollableRegion; |
| 557 return scroll_status; | 555 return scroll_status; |
| 558 } | 556 } |
| 559 } | 557 } |
| 560 | 558 |
| 561 if (have_scroll_event_handlers() && | |
| 562 effective_block_mode & SCROLL_BLOCKS_ON_SCROLL_EVENT) { | |
| 563 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed ScrollEventHandlers"); | |
| 564 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; | |
| 565 scroll_status.main_thread_scrolling_reasons = | |
| 566 MainThreadScrollingReason::kEventHandlers; | |
| 567 return scroll_status; | |
| 568 } | |
| 569 | |
| 570 if ((type == InputHandler::WHEEL || type == InputHandler::ANIMATED_WHEEL) && | 559 if ((type == InputHandler::WHEEL || type == InputHandler::ANIMATED_WHEEL) && |
| 571 have_wheel_event_handlers() && | 560 have_wheel_event_handlers()) { |
| 572 effective_block_mode & SCROLL_BLOCKS_ON_WHEEL_EVENT) { | |
| 573 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed WheelEventHandlers"); | 561 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed WheelEventHandlers"); |
| 574 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; | 562 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; |
| 575 scroll_status.main_thread_scrolling_reasons = | 563 scroll_status.main_thread_scrolling_reasons = |
| 576 MainThreadScrollingReason::kEventHandlers; | 564 MainThreadScrollingReason::kEventHandlers; |
| 577 return scroll_status; | 565 return scroll_status; |
| 578 } | 566 } |
| 579 | 567 |
| 580 if (!scrollable()) { | 568 if (!scrollable()) { |
| 581 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored not scrollable"); | 569 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored not scrollable"); |
| 582 scroll_status.thread = InputHandler::SCROLL_IGNORED; | 570 scroll_status.thread = InputHandler::SCROLL_IGNORED; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 if (layer->has_render_surface() != has_render_surface()) | 610 if (layer->has_render_surface() != has_render_surface()) |
| 623 layer->layer_tree_impl()->set_needs_update_draw_properties(); | 611 layer->layer_tree_impl()->set_needs_update_draw_properties(); |
| 624 layer->SetHasRenderSurface(!!render_surface()); | 612 layer->SetHasRenderSurface(!!render_surface()); |
| 625 layer->SetForceRenderSurface(force_render_surface_); | 613 layer->SetForceRenderSurface(force_render_surface_); |
| 626 layer->SetFilters(filters()); | 614 layer->SetFilters(filters()); |
| 627 layer->SetBackgroundFilters(background_filters()); | 615 layer->SetBackgroundFilters(background_filters()); |
| 628 layer->SetMasksToBounds(masks_to_bounds_); | 616 layer->SetMasksToBounds(masks_to_bounds_); |
| 629 layer->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons_); | 617 layer->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons_); |
| 630 layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_); | 618 layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_); |
| 631 layer->SetHaveScrollEventHandlers(have_scroll_event_handlers_); | 619 layer->SetHaveScrollEventHandlers(have_scroll_event_handlers_); |
| 632 layer->SetScrollBlocksOn(scroll_blocks_on_); | |
| 633 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); | 620 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); |
| 634 layer->SetTouchEventHandlerRegion(touch_event_handler_region_); | 621 layer->SetTouchEventHandlerRegion(touch_event_handler_region_); |
| 635 layer->SetContentsOpaque(contents_opaque_); | 622 layer->SetContentsOpaque(contents_opaque_); |
| 636 layer->SetOpacity(opacity_); | 623 layer->SetOpacity(opacity_); |
| 637 layer->SetBlendMode(blend_mode_); | 624 layer->SetBlendMode(blend_mode_); |
| 638 layer->SetIsRootForIsolatedGroup(is_root_for_isolated_group_); | 625 layer->SetIsRootForIsolatedGroup(is_root_for_isolated_group_); |
| 639 layer->SetPosition(position_); | 626 layer->SetPosition(position_); |
| 640 layer->SetIsContainerForFixedPositionLayers( | 627 layer->SetIsContainerForFixedPositionLayers( |
| 641 is_container_for_fixed_position_layers_); | 628 is_container_for_fixed_position_layers_); |
| 642 layer->SetPositionConstraint(position_constraint_); | 629 layer->SetPositionConstraint(position_constraint_); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 780 | 767 |
| 781 if (have_wheel_event_handlers_) | 768 if (have_wheel_event_handlers_) |
| 782 result->SetBoolean("WheelHandler", have_wheel_event_handlers_); | 769 result->SetBoolean("WheelHandler", have_wheel_event_handlers_); |
| 783 if (have_scroll_event_handlers_) | 770 if (have_scroll_event_handlers_) |
| 784 result->SetBoolean("ScrollHandler", have_scroll_event_handlers_); | 771 result->SetBoolean("ScrollHandler", have_scroll_event_handlers_); |
| 785 if (!touch_event_handler_region_.IsEmpty()) { | 772 if (!touch_event_handler_region_.IsEmpty()) { |
| 786 scoped_ptr<base::Value> region = touch_event_handler_region_.AsValue(); | 773 scoped_ptr<base::Value> region = touch_event_handler_region_.AsValue(); |
| 787 result->Set("TouchRegion", region.release()); | 774 result->Set("TouchRegion", region.release()); |
| 788 } | 775 } |
| 789 | 776 |
| 790 if (scroll_blocks_on_) { | |
| 791 list = new base::ListValue; | |
| 792 if (scroll_blocks_on_ & SCROLL_BLOCKS_ON_START_TOUCH) | |
| 793 list->AppendString("StartTouch"); | |
| 794 if (scroll_blocks_on_ & SCROLL_BLOCKS_ON_WHEEL_EVENT) | |
| 795 list->AppendString("WheelEvent"); | |
| 796 if (scroll_blocks_on_ & SCROLL_BLOCKS_ON_SCROLL_EVENT) | |
| 797 list->AppendString("ScrollEvent"); | |
| 798 result->Set("ScrollBlocksOn", list); | |
| 799 } | |
| 800 | |
| 801 list = new base::ListValue; | 777 list = new base::ListValue; |
| 802 for (size_t i = 0; i < children_.size(); ++i) | 778 for (size_t i = 0; i < children_.size(); ++i) |
| 803 list->Append(children_[i]->LayerTreeAsJson()); | 779 list->Append(children_[i]->LayerTreeAsJson()); |
| 804 result->Set("Children", list); | 780 result->Set("Children", list); |
| 805 | 781 |
| 806 return result; | 782 return result; |
| 807 } | 783 } |
| 808 | 784 |
| 809 void LayerImpl::SetStackingOrderChanged(bool stacking_order_changed) { | 785 void LayerImpl::SetStackingOrderChanged(bool stacking_order_changed) { |
| 810 if (stacking_order_changed) { | 786 if (stacking_order_changed) { |
| (...skipping 955 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1766 Region scroll_region(scroll_rect); | 1742 Region scroll_region(scroll_rect); |
| 1767 state->BeginArray("scroll_event_handler_region"); | 1743 state->BeginArray("scroll_event_handler_region"); |
| 1768 scroll_region.AsValueInto(state); | 1744 scroll_region.AsValueInto(state); |
| 1769 state->EndArray(); | 1745 state->EndArray(); |
| 1770 } | 1746 } |
| 1771 if (!non_fast_scrollable_region_.IsEmpty()) { | 1747 if (!non_fast_scrollable_region_.IsEmpty()) { |
| 1772 state->BeginArray("non_fast_scrollable_region"); | 1748 state->BeginArray("non_fast_scrollable_region"); |
| 1773 non_fast_scrollable_region_.AsValueInto(state); | 1749 non_fast_scrollable_region_.AsValueInto(state); |
| 1774 state->EndArray(); | 1750 state->EndArray(); |
| 1775 } | 1751 } |
| 1776 if (scroll_blocks_on_) { | |
| 1777 state->SetInteger("scroll_blocks_on", scroll_blocks_on_); | |
| 1778 } | |
| 1779 | |
| 1780 state->BeginArray("children"); | 1752 state->BeginArray("children"); |
| 1781 for (size_t i = 0; i < children_.size(); ++i) { | 1753 for (size_t i = 0; i < children_.size(); ++i) { |
| 1782 state->BeginDictionary(); | 1754 state->BeginDictionary(); |
| 1783 children_[i]->AsValueInto(state); | 1755 children_[i]->AsValueInto(state); |
| 1784 state->EndDictionary(); | 1756 state->EndDictionary(); |
| 1785 } | 1757 } |
| 1786 state->EndArray(); | 1758 state->EndArray(); |
| 1787 if (mask_layer_) { | 1759 if (mask_layer_) { |
| 1788 state->BeginDictionary("mask_layer"); | 1760 state->BeginDictionary("mask_layer"); |
| 1789 mask_layer_->AsValueInto(state); | 1761 mask_layer_->AsValueInto(state); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1957 .layer_transforms_should_scale_layer_contents) { | 1929 .layer_transforms_should_scale_layer_contents) { |
| 1958 return default_scale; | 1930 return default_scale; |
| 1959 } | 1931 } |
| 1960 | 1932 |
| 1961 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1933 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
| 1962 DrawTransform(), default_scale); | 1934 DrawTransform(), default_scale); |
| 1963 return std::max(transform_scales.x(), transform_scales.y()); | 1935 return std::max(transform_scales.x(), transform_scales.y()); |
| 1964 } | 1936 } |
| 1965 | 1937 |
| 1966 } // namespace cc | 1938 } // namespace cc |
| OLD | NEW |