Chromium Code Reviews| 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 23 matching lines...) Expand all Loading... | |
| 34 #include "cc/trees/layer_tree_settings.h" | 34 #include "cc/trees/layer_tree_settings.h" |
| 35 #include "cc/trees/proxy.h" | 35 #include "cc/trees/proxy.h" |
| 36 #include "ui/gfx/geometry/box_f.h" | 36 #include "ui/gfx/geometry/box_f.h" |
| 37 #include "ui/gfx/geometry/point_conversions.h" | 37 #include "ui/gfx/geometry/point_conversions.h" |
| 38 #include "ui/gfx/geometry/quad_f.h" | 38 #include "ui/gfx/geometry/quad_f.h" |
| 39 #include "ui/gfx/geometry/rect_conversions.h" | 39 #include "ui/gfx/geometry/rect_conversions.h" |
| 40 #include "ui/gfx/geometry/size_conversions.h" | 40 #include "ui/gfx/geometry/size_conversions.h" |
| 41 #include "ui/gfx/geometry/vector2d_conversions.h" | 41 #include "ui/gfx/geometry/vector2d_conversions.h" |
| 42 | 42 |
| 43 namespace cc { | 43 namespace cc { |
| 44 | |
| 45 namespace { | |
| 46 | |
| 47 base::ListValue* EventListenerPropertiesAsJSON( | |
| 48 EventListenerProperties event_properties) { | |
| 49 base::ListValue* result = new base::ListValue; | |
| 50 if ((event_properties & EventListenerProperties::BLOCKING) != | |
| 51 EventListenerProperties::NONE) | |
| 52 result->AppendString("Blocking"); | |
| 53 if ((event_properties & EventListenerProperties::PASSIVE) != | |
| 54 EventListenerProperties::NONE) | |
| 55 result->AppendString("Passive"); | |
| 56 return result; | |
| 57 } | |
| 58 | |
| 59 } // namespace | |
| 60 | |
| 44 LayerImpl::LayerImpl(LayerTreeImpl* layer_impl, int id) | 61 LayerImpl::LayerImpl(LayerTreeImpl* layer_impl, int id) |
| 45 : LayerImpl(layer_impl, id, new LayerImpl::SyncedScrollOffset) { | 62 : LayerImpl(layer_impl, id, new LayerImpl::SyncedScrollOffset) { |
| 46 } | 63 } |
| 47 | 64 |
| 48 LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, | 65 LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, |
| 49 int id, | 66 int id, |
| 50 scoped_refptr<SyncedScrollOffset> scroll_offset) | 67 scoped_refptr<SyncedScrollOffset> scroll_offset) |
| 51 : parent_(nullptr), | 68 : parent_(nullptr), |
| 52 scroll_parent_(nullptr), | 69 scroll_parent_(nullptr), |
| 53 clip_parent_(nullptr), | 70 clip_parent_(nullptr), |
| 54 mask_layer_id_(-1), | 71 mask_layer_id_(-1), |
| 55 replica_layer_id_(-1), | 72 replica_layer_id_(-1), |
| 56 layer_id_(id), | 73 layer_id_(id), |
| 57 layer_tree_impl_(tree_impl), | 74 layer_tree_impl_(tree_impl), |
| 58 scroll_offset_(scroll_offset), | 75 scroll_offset_(scroll_offset), |
| 59 scroll_clip_layer_id_(Layer::INVALID_ID), | 76 scroll_clip_layer_id_(Layer::INVALID_ID), |
| 60 should_scroll_on_main_thread_(false), | 77 should_scroll_on_main_thread_(false), |
| 61 have_wheel_event_handlers_(false), | |
| 62 have_scroll_event_handlers_(false), | 78 have_scroll_event_handlers_(false), |
| 63 scroll_blocks_on_(SCROLL_BLOCKS_ON_NONE), | 79 scroll_blocks_on_(SCROLL_BLOCKS_ON_NONE), |
| 64 user_scrollable_horizontal_(true), | 80 user_scrollable_horizontal_(true), |
| 65 user_scrollable_vertical_(true), | 81 user_scrollable_vertical_(true), |
| 66 stacking_order_changed_(false), | 82 stacking_order_changed_(false), |
| 67 double_sided_(true), | 83 double_sided_(true), |
| 68 should_flatten_transform_(true), | 84 should_flatten_transform_(true), |
| 69 should_flatten_transform_from_property_tree_(false), | 85 should_flatten_transform_from_property_tree_(false), |
| 70 layer_property_changed_(false), | 86 layer_property_changed_(false), |
| 71 masks_to_bounds_(false), | 87 masks_to_bounds_(false), |
| 72 contents_opaque_(false), | 88 contents_opaque_(false), |
| 73 is_root_for_isolated_group_(false), | 89 is_root_for_isolated_group_(false), |
| 74 use_parent_backface_visibility_(false), | 90 use_parent_backface_visibility_(false), |
| 75 draws_content_(false), | 91 draws_content_(false), |
| 76 hide_layer_and_subtree_(false), | 92 hide_layer_and_subtree_(false), |
| 77 transform_is_invertible_(true), | 93 transform_is_invertible_(true), |
| 78 is_container_for_fixed_position_layers_(false), | 94 is_container_for_fixed_position_layers_(false), |
| 79 is_affected_by_page_scale_(true), | 95 is_affected_by_page_scale_(true), |
| 80 was_ever_ready_since_last_transform_animation_(true), | 96 was_ever_ready_since_last_transform_animation_(true), |
| 97 touch_event_properties_(EventListenerProperties::NONE), | |
| 98 wheel_event_properties_(EventListenerProperties::NONE), | |
| 81 background_color_(0), | 99 background_color_(0), |
| 82 opacity_(1.0), | 100 opacity_(1.0), |
| 83 blend_mode_(SkXfermode::kSrcOver_Mode), | 101 blend_mode_(SkXfermode::kSrcOver_Mode), |
| 84 draw_blend_mode_(SkXfermode::kSrcOver_Mode), | 102 draw_blend_mode_(SkXfermode::kSrcOver_Mode), |
| 85 num_descendants_that_draw_content_(0), | 103 num_descendants_that_draw_content_(0), |
| 86 transform_tree_index_(-1), | 104 transform_tree_index_(-1), |
| 87 effect_tree_index_(-1), | 105 effect_tree_index_(-1), |
| 88 clip_tree_index_(-1), | 106 clip_tree_index_(-1), |
| 89 draw_depth_(0.f), | 107 draw_depth_(0.f), |
| 90 needs_push_properties_(false), | 108 needs_push_properties_(false), |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 539 } | 557 } |
| 540 } | 558 } |
| 541 | 559 |
| 542 if (have_scroll_event_handlers() && | 560 if (have_scroll_event_handlers() && |
| 543 effective_block_mode & SCROLL_BLOCKS_ON_SCROLL_EVENT) { | 561 effective_block_mode & SCROLL_BLOCKS_ON_SCROLL_EVENT) { |
| 544 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed ScrollEventHandlers"); | 562 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed ScrollEventHandlers"); |
| 545 return InputHandler::SCROLL_ON_MAIN_THREAD; | 563 return InputHandler::SCROLL_ON_MAIN_THREAD; |
| 546 } | 564 } |
| 547 | 565 |
| 548 if ((type == InputHandler::WHEEL || type == InputHandler::ANIMATED_WHEEL) && | 566 if ((type == InputHandler::WHEEL || type == InputHandler::ANIMATED_WHEEL) && |
| 549 have_wheel_event_handlers() && | 567 wheel_event_properties() != EventListenerProperties::NONE && |
| 550 effective_block_mode & SCROLL_BLOCKS_ON_WHEEL_EVENT) { | 568 effective_block_mode & SCROLL_BLOCKS_ON_WHEEL_EVENT) { |
| 551 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed WheelEventHandlers"); | 569 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed WheelEventHandlers"); |
| 552 return InputHandler::SCROLL_ON_MAIN_THREAD; | 570 return InputHandler::SCROLL_ON_MAIN_THREAD; |
| 553 } | 571 } |
| 554 | 572 |
| 555 if (!scrollable()) { | 573 if (!scrollable()) { |
| 556 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored not scrollable"); | 574 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored not scrollable"); |
| 557 return InputHandler::SCROLL_IGNORED; | 575 return InputHandler::SCROLL_IGNORED; |
| 558 } | 576 } |
| 559 | 577 |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 588 // TODO(weiliangc): Should be safely removed after impl side is able to | 606 // TODO(weiliangc): Should be safely removed after impl side is able to |
| 589 // update render surfaces without rebuilding property trees. | 607 // update render surfaces without rebuilding property trees. |
| 590 if (layer->has_render_surface() != has_render_surface()) | 608 if (layer->has_render_surface() != has_render_surface()) |
| 591 layer->layer_tree_impl()->set_needs_update_draw_properties(); | 609 layer->layer_tree_impl()->set_needs_update_draw_properties(); |
| 592 layer->SetHasRenderSurface(!!render_surface()); | 610 layer->SetHasRenderSurface(!!render_surface()); |
| 593 layer->SetForceRenderSurface(force_render_surface_); | 611 layer->SetForceRenderSurface(force_render_surface_); |
| 594 layer->SetFilters(filters()); | 612 layer->SetFilters(filters()); |
| 595 layer->SetBackgroundFilters(background_filters()); | 613 layer->SetBackgroundFilters(background_filters()); |
| 596 layer->SetMasksToBounds(masks_to_bounds_); | 614 layer->SetMasksToBounds(masks_to_bounds_); |
| 597 layer->SetShouldScrollOnMainThread(should_scroll_on_main_thread_); | 615 layer->SetShouldScrollOnMainThread(should_scroll_on_main_thread_); |
| 598 layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_); | 616 layer->SetWheelEventProperties(wheel_event_properties_); |
|
aelias_OOO_until_Jul13
2016/01/12 20:03:11
I think we also need a SetTouchEventProperties cal
dtapuska
2016/01/12 21:25:48
Done.
| |
| 599 layer->SetHaveScrollEventHandlers(have_scroll_event_handlers_); | 617 layer->SetHaveScrollEventHandlers(have_scroll_event_handlers_); |
| 600 layer->SetScrollBlocksOn(scroll_blocks_on_); | 618 layer->SetScrollBlocksOn(scroll_blocks_on_); |
| 601 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); | 619 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); |
| 602 layer->SetTouchEventHandlerRegion(touch_event_handler_region_); | 620 layer->SetTouchEventHandlerRegion(touch_event_handler_region_); |
| 603 layer->SetContentsOpaque(contents_opaque_); | 621 layer->SetContentsOpaque(contents_opaque_); |
| 604 layer->SetOpacity(opacity_); | 622 layer->SetOpacity(opacity_); |
| 605 layer->SetBlendMode(blend_mode_); | 623 layer->SetBlendMode(blend_mode_); |
| 606 layer->SetIsRootForIsolatedGroup(is_root_for_isolated_group_); | 624 layer->SetIsRootForIsolatedGroup(is_root_for_isolated_group_); |
| 607 layer->SetPosition(position_); | 625 layer->SetPosition(position_); |
| 608 layer->SetIsContainerForFixedPositionLayers( | 626 layer->SetIsContainerForFixedPositionLayers( |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 739 result->Set("DrawTransform", list); | 757 result->Set("DrawTransform", list); |
| 740 | 758 |
| 741 result->SetBoolean("DrawsContent", draws_content_); | 759 result->SetBoolean("DrawsContent", draws_content_); |
| 742 result->SetBoolean("Is3dSorted", Is3dSorted()); | 760 result->SetBoolean("Is3dSorted", Is3dSorted()); |
| 743 result->SetDouble("OPACITY", opacity()); | 761 result->SetDouble("OPACITY", opacity()); |
| 744 result->SetBoolean("ContentsOpaque", contents_opaque_); | 762 result->SetBoolean("ContentsOpaque", contents_opaque_); |
| 745 | 763 |
| 746 if (scrollable()) | 764 if (scrollable()) |
| 747 result->SetBoolean("Scrollable", true); | 765 result->SetBoolean("Scrollable", true); |
| 748 | 766 |
| 749 if (have_wheel_event_handlers_) | 767 if (touch_event_properties_ != EventListenerProperties::NONE) { |
| 750 result->SetBoolean("WheelHandler", have_wheel_event_handlers_); | 768 list = EventListenerPropertiesAsJSON(touch_event_properties_); |
| 769 result->Set("TouchHandler", list); | |
| 770 } | |
| 771 | |
| 772 if (wheel_event_properties_ != EventListenerProperties::NONE) { | |
| 773 list = EventListenerPropertiesAsJSON(wheel_event_properties_); | |
| 774 result->Set("WheelHandler", list); | |
| 775 } | |
| 776 | |
| 751 if (have_scroll_event_handlers_) | 777 if (have_scroll_event_handlers_) |
| 752 result->SetBoolean("ScrollHandler", have_scroll_event_handlers_); | 778 result->SetBoolean("ScrollHandler", have_scroll_event_handlers_); |
| 753 if (!touch_event_handler_region_.IsEmpty()) { | 779 if (!touch_event_handler_region_.IsEmpty()) { |
| 754 scoped_ptr<base::Value> region = touch_event_handler_region_.AsValue(); | 780 scoped_ptr<base::Value> region = touch_event_handler_region_.AsValue(); |
| 755 result->Set("TouchRegion", region.release()); | 781 result->Set("TouchRegion", region.release()); |
| 756 } | 782 } |
| 757 | 783 |
| 758 if (scroll_blocks_on_) { | 784 if (scroll_blocks_on_) { |
| 759 list = new base::ListValue; | 785 list = new base::ListValue; |
| 760 if (scroll_blocks_on_ & SCROLL_BLOCKS_ON_START_TOUCH) | 786 if (scroll_blocks_on_ & SCROLL_BLOCKS_ON_START_TOUCH) |
| (...skipping 947 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1708 bool clipped; | 1734 bool clipped; |
| 1709 gfx::QuadF layer_quad = | 1735 gfx::QuadF layer_quad = |
| 1710 MathUtil::MapQuad(ScreenSpaceTransform(), | 1736 MathUtil::MapQuad(ScreenSpaceTransform(), |
| 1711 gfx::QuadF(gfx::RectF(gfx::Rect(bounds()))), &clipped); | 1737 gfx::QuadF(gfx::RectF(gfx::Rect(bounds()))), &clipped); |
| 1712 MathUtil::AddToTracedValue("layer_quad", layer_quad, state); | 1738 MathUtil::AddToTracedValue("layer_quad", layer_quad, state); |
| 1713 if (!touch_event_handler_region_.IsEmpty()) { | 1739 if (!touch_event_handler_region_.IsEmpty()) { |
| 1714 state->BeginArray("touch_event_handler_region"); | 1740 state->BeginArray("touch_event_handler_region"); |
| 1715 touch_event_handler_region_.AsValueInto(state); | 1741 touch_event_handler_region_.AsValueInto(state); |
| 1716 state->EndArray(); | 1742 state->EndArray(); |
| 1717 } | 1743 } |
| 1718 if (have_wheel_event_handlers_) { | 1744 if (wheel_event_properties_ != EventListenerProperties::NONE) { |
| 1719 gfx::Rect wheel_rect(bounds()); | 1745 gfx::Rect wheel_rect(bounds()); |
| 1720 Region wheel_region(wheel_rect); | 1746 Region wheel_region(wheel_rect); |
| 1721 state->BeginArray("wheel_event_handler_region"); | 1747 state->BeginArray("wheel_event_handler_region"); |
| 1722 wheel_region.AsValueInto(state); | 1748 wheel_region.AsValueInto(state); |
| 1723 state->EndArray(); | 1749 state->EndArray(); |
| 1724 } | 1750 } |
| 1725 if (have_scroll_event_handlers_) { | 1751 if (have_scroll_event_handlers_) { |
| 1726 gfx::Rect scroll_rect(bounds()); | 1752 gfx::Rect scroll_rect(bounds()); |
| 1727 Region scroll_region(scroll_rect); | 1753 Region scroll_region(scroll_rect); |
| 1728 state->BeginArray("scroll_event_handler_region"); | 1754 state->BeginArray("scroll_event_handler_region"); |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1916 .layer_transforms_should_scale_layer_contents) { | 1942 .layer_transforms_should_scale_layer_contents) { |
| 1917 return default_scale; | 1943 return default_scale; |
| 1918 } | 1944 } |
| 1919 | 1945 |
| 1920 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1946 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
| 1921 DrawTransform(), default_scale); | 1947 DrawTransform(), default_scale); |
| 1922 return std::max(transform_scales.x(), transform_scales.y()); | 1948 return std::max(transform_scales.x(), transform_scales.y()); |
| 1923 } | 1949 } |
| 1924 | 1950 |
| 1925 } // namespace cc | 1951 } // namespace cc |
| OLD | NEW |