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

Side by Side Diff: cc/layers/layer_impl.cc

Issue 1577263004: Communicate whether passive event listeners exist to cc. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_wheel_passive_listeners
Patch Set: Rebase Created 4 years, 11 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
OLDNEW
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 24 matching lines...) Expand all
35 #include "cc/trees/layer_tree_settings.h" 35 #include "cc/trees/layer_tree_settings.h"
36 #include "cc/trees/proxy.h" 36 #include "cc/trees/proxy.h"
37 #include "ui/gfx/geometry/box_f.h" 37 #include "ui/gfx/geometry/box_f.h"
38 #include "ui/gfx/geometry/point_conversions.h" 38 #include "ui/gfx/geometry/point_conversions.h"
39 #include "ui/gfx/geometry/quad_f.h" 39 #include "ui/gfx/geometry/quad_f.h"
40 #include "ui/gfx/geometry/rect_conversions.h" 40 #include "ui/gfx/geometry/rect_conversions.h"
41 #include "ui/gfx/geometry/size_conversions.h" 41 #include "ui/gfx/geometry/size_conversions.h"
42 #include "ui/gfx/geometry/vector2d_conversions.h" 42 #include "ui/gfx/geometry/vector2d_conversions.h"
43 43
44 namespace cc { 44 namespace cc {
45
46 namespace {
47
48 base::ListValue* EventListenerPropertiesAsJSON(uint32_t event_properties) {
49 base::ListValue* result = new base::ListValue;
50 if ((event_properties & EventListenerProperties::kBlocking) !=
51 EventListenerProperties::kNone)
52 result->AppendString("Blocking");
53 if ((event_properties & EventListenerProperties::kPassive) !=
54 EventListenerProperties::kNone)
55 result->AppendString("Passive");
56 return result;
57 }
58
59 } // namespace
60
45 LayerImpl::LayerImpl(LayerTreeImpl* layer_impl, int id) 61 LayerImpl::LayerImpl(LayerTreeImpl* layer_impl, int id)
46 : LayerImpl(layer_impl, id, new LayerImpl::SyncedScrollOffset) { 62 : LayerImpl(layer_impl, id, new LayerImpl::SyncedScrollOffset) {
47 } 63 }
48 64
49 LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, 65 LayerImpl::LayerImpl(LayerTreeImpl* tree_impl,
50 int id, 66 int id,
51 scoped_refptr<SyncedScrollOffset> scroll_offset) 67 scoped_refptr<SyncedScrollOffset> scroll_offset)
52 : parent_(nullptr), 68 : parent_(nullptr),
53 scroll_parent_(nullptr), 69 scroll_parent_(nullptr),
54 clip_parent_(nullptr), 70 clip_parent_(nullptr),
55 mask_layer_id_(-1), 71 mask_layer_id_(-1),
56 replica_layer_id_(-1), 72 replica_layer_id_(-1),
57 layer_id_(id), 73 layer_id_(id),
58 layer_tree_impl_(tree_impl), 74 layer_tree_impl_(tree_impl),
59 scroll_offset_(scroll_offset), 75 scroll_offset_(scroll_offset),
60 scroll_clip_layer_id_(Layer::INVALID_ID), 76 scroll_clip_layer_id_(Layer::INVALID_ID),
61 main_thread_scrolling_reasons_( 77 main_thread_scrolling_reasons_(
62 MainThreadScrollingReason::kNotScrollingOnMain), 78 MainThreadScrollingReason::kNotScrollingOnMain),
63 have_wheel_event_handlers_(false),
64 have_scroll_event_handlers_(false), 79 have_scroll_event_handlers_(false),
65 scroll_blocks_on_(SCROLL_BLOCKS_ON_NONE), 80 scroll_blocks_on_(SCROLL_BLOCKS_ON_NONE),
66 user_scrollable_horizontal_(true), 81 user_scrollable_horizontal_(true),
67 user_scrollable_vertical_(true), 82 user_scrollable_vertical_(true),
68 stacking_order_changed_(false), 83 stacking_order_changed_(false),
69 double_sided_(true), 84 double_sided_(true),
70 should_flatten_transform_(true), 85 should_flatten_transform_(true),
71 should_flatten_transform_from_property_tree_(false), 86 should_flatten_transform_from_property_tree_(false),
72 layer_property_changed_(false), 87 layer_property_changed_(false),
73 masks_to_bounds_(false), 88 masks_to_bounds_(false),
74 contents_opaque_(false), 89 contents_opaque_(false),
75 is_root_for_isolated_group_(false), 90 is_root_for_isolated_group_(false),
76 use_parent_backface_visibility_(false), 91 use_parent_backface_visibility_(false),
77 draws_content_(false), 92 draws_content_(false),
78 hide_layer_and_subtree_(false), 93 hide_layer_and_subtree_(false),
79 transform_is_invertible_(true), 94 transform_is_invertible_(true),
80 is_container_for_fixed_position_layers_(false), 95 is_container_for_fixed_position_layers_(false),
81 is_affected_by_page_scale_(true), 96 is_affected_by_page_scale_(true),
82 was_ever_ready_since_last_transform_animation_(true), 97 was_ever_ready_since_last_transform_animation_(true),
98 touch_event_properties_(EventListenerProperties::kNone),
99 wheel_event_properties_(EventListenerProperties::kNone),
83 background_color_(0), 100 background_color_(0),
84 opacity_(1.0), 101 opacity_(1.0),
85 blend_mode_(SkXfermode::kSrcOver_Mode), 102 blend_mode_(SkXfermode::kSrcOver_Mode),
86 draw_blend_mode_(SkXfermode::kSrcOver_Mode), 103 draw_blend_mode_(SkXfermode::kSrcOver_Mode),
87 num_descendants_that_draw_content_(0), 104 num_descendants_that_draw_content_(0),
88 transform_tree_index_(-1), 105 transform_tree_index_(-1),
89 effect_tree_index_(-1), 106 effect_tree_index_(-1),
90 clip_tree_index_(-1), 107 clip_tree_index_(-1),
91 draw_depth_(0.f), 108 draw_depth_(0.f),
92 needs_push_properties_(false), 109 needs_push_properties_(false),
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 if (have_scroll_event_handlers() && 573 if (have_scroll_event_handlers() &&
557 effective_block_mode & SCROLL_BLOCKS_ON_SCROLL_EVENT) { 574 effective_block_mode & SCROLL_BLOCKS_ON_SCROLL_EVENT) {
558 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed ScrollEventHandlers"); 575 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed ScrollEventHandlers");
559 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; 576 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD;
560 scroll_status.main_thread_scrolling_reasons = 577 scroll_status.main_thread_scrolling_reasons =
561 MainThreadScrollingReason::kEventHandlers; 578 MainThreadScrollingReason::kEventHandlers;
562 return scroll_status; 579 return scroll_status;
563 } 580 }
564 581
565 if ((type == InputHandler::WHEEL || type == InputHandler::ANIMATED_WHEEL) && 582 if ((type == InputHandler::WHEEL || type == InputHandler::ANIMATED_WHEEL) &&
566 have_wheel_event_handlers() && 583 (wheel_event_properties() & EventListenerProperties::kBlocking) !=
584 EventListenerProperties::kNone &&
567 effective_block_mode & SCROLL_BLOCKS_ON_WHEEL_EVENT) { 585 effective_block_mode & SCROLL_BLOCKS_ON_WHEEL_EVENT) {
568 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed WheelEventHandlers"); 586 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed WheelEventHandlers");
569 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; 587 scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD;
570 scroll_status.main_thread_scrolling_reasons = 588 scroll_status.main_thread_scrolling_reasons =
571 MainThreadScrollingReason::kEventHandlers; 589 MainThreadScrollingReason::kEventHandlers;
572 return scroll_status; 590 return scroll_status;
573 } 591 }
574 592
575 if (!scrollable()) { 593 if (!scrollable()) {
576 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored not scrollable"); 594 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored not scrollable");
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 // TODO(weiliangc): Should be safely removed after impl side is able to 633 // TODO(weiliangc): Should be safely removed after impl side is able to
616 // update render surfaces without rebuilding property trees. 634 // update render surfaces without rebuilding property trees.
617 if (layer->has_render_surface() != has_render_surface()) 635 if (layer->has_render_surface() != has_render_surface())
618 layer->layer_tree_impl()->set_needs_update_draw_properties(); 636 layer->layer_tree_impl()->set_needs_update_draw_properties();
619 layer->SetHasRenderSurface(!!render_surface()); 637 layer->SetHasRenderSurface(!!render_surface());
620 layer->SetForceRenderSurface(force_render_surface_); 638 layer->SetForceRenderSurface(force_render_surface_);
621 layer->SetFilters(filters()); 639 layer->SetFilters(filters());
622 layer->SetBackgroundFilters(background_filters()); 640 layer->SetBackgroundFilters(background_filters());
623 layer->SetMasksToBounds(masks_to_bounds_); 641 layer->SetMasksToBounds(masks_to_bounds_);
624 layer->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons_); 642 layer->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons_);
625 layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_); 643 layer->SetTouchEventProperties(touch_event_properties_);
644 layer->SetWheelEventProperties(wheel_event_properties_);
626 layer->SetHaveScrollEventHandlers(have_scroll_event_handlers_); 645 layer->SetHaveScrollEventHandlers(have_scroll_event_handlers_);
627 layer->SetScrollBlocksOn(scroll_blocks_on_); 646 layer->SetScrollBlocksOn(scroll_blocks_on_);
628 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); 647 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_);
629 layer->SetTouchEventHandlerRegion(touch_event_handler_region_); 648 layer->SetTouchEventHandlerRegion(touch_event_handler_region_);
630 layer->SetContentsOpaque(contents_opaque_); 649 layer->SetContentsOpaque(contents_opaque_);
631 layer->SetOpacity(opacity_); 650 layer->SetOpacity(opacity_);
632 layer->SetBlendMode(blend_mode_); 651 layer->SetBlendMode(blend_mode_);
633 layer->SetIsRootForIsolatedGroup(is_root_for_isolated_group_); 652 layer->SetIsRootForIsolatedGroup(is_root_for_isolated_group_);
634 layer->SetPosition(position_); 653 layer->SetPosition(position_);
635 layer->SetIsContainerForFixedPositionLayers( 654 layer->SetIsContainerForFixedPositionLayers(
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 result->Set("DrawTransform", list); 785 result->Set("DrawTransform", list);
767 786
768 result->SetBoolean("DrawsContent", draws_content_); 787 result->SetBoolean("DrawsContent", draws_content_);
769 result->SetBoolean("Is3dSorted", Is3dSorted()); 788 result->SetBoolean("Is3dSorted", Is3dSorted());
770 result->SetDouble("OPACITY", opacity()); 789 result->SetDouble("OPACITY", opacity());
771 result->SetBoolean("ContentsOpaque", contents_opaque_); 790 result->SetBoolean("ContentsOpaque", contents_opaque_);
772 791
773 if (scrollable()) 792 if (scrollable())
774 result->SetBoolean("Scrollable", true); 793 result->SetBoolean("Scrollable", true);
775 794
776 if (have_wheel_event_handlers_) 795 if (touch_event_properties_ != EventListenerProperties::kNone) {
777 result->SetBoolean("WheelHandler", have_wheel_event_handlers_); 796 list = EventListenerPropertiesAsJSON(touch_event_properties_);
797 result->Set("TouchHandler", list);
798 }
799
800 if (wheel_event_properties_ != EventListenerProperties::kNone) {
801 list = EventListenerPropertiesAsJSON(wheel_event_properties_);
802 result->Set("WheelHandler", list);
803 }
804
778 if (have_scroll_event_handlers_) 805 if (have_scroll_event_handlers_)
779 result->SetBoolean("ScrollHandler", have_scroll_event_handlers_); 806 result->SetBoolean("ScrollHandler", have_scroll_event_handlers_);
780 if (!touch_event_handler_region_.IsEmpty()) { 807 if (!touch_event_handler_region_.IsEmpty()) {
781 scoped_ptr<base::Value> region = touch_event_handler_region_.AsValue(); 808 scoped_ptr<base::Value> region = touch_event_handler_region_.AsValue();
782 result->Set("TouchRegion", region.release()); 809 result->Set("TouchRegion", region.release());
783 } 810 }
784 811
785 if (scroll_blocks_on_) { 812 if (scroll_blocks_on_) {
786 list = new base::ListValue; 813 list = new base::ListValue;
787 if (scroll_blocks_on_ & SCROLL_BLOCKS_ON_START_TOUCH) 814 if (scroll_blocks_on_ & SCROLL_BLOCKS_ON_START_TOUCH)
(...skipping 947 matching lines...) Expand 10 before | Expand all | Expand 10 after
1735 bool clipped; 1762 bool clipped;
1736 gfx::QuadF layer_quad = 1763 gfx::QuadF layer_quad =
1737 MathUtil::MapQuad(ScreenSpaceTransform(), 1764 MathUtil::MapQuad(ScreenSpaceTransform(),
1738 gfx::QuadF(gfx::RectF(gfx::Rect(bounds()))), &clipped); 1765 gfx::QuadF(gfx::RectF(gfx::Rect(bounds()))), &clipped);
1739 MathUtil::AddToTracedValue("layer_quad", layer_quad, state); 1766 MathUtil::AddToTracedValue("layer_quad", layer_quad, state);
1740 if (!touch_event_handler_region_.IsEmpty()) { 1767 if (!touch_event_handler_region_.IsEmpty()) {
1741 state->BeginArray("touch_event_handler_region"); 1768 state->BeginArray("touch_event_handler_region");
1742 touch_event_handler_region_.AsValueInto(state); 1769 touch_event_handler_region_.AsValueInto(state);
1743 state->EndArray(); 1770 state->EndArray();
1744 } 1771 }
1745 if (have_wheel_event_handlers_) { 1772 if (wheel_event_properties_ != EventListenerProperties::kNone) {
1746 gfx::Rect wheel_rect(bounds()); 1773 gfx::Rect wheel_rect(bounds());
1747 Region wheel_region(wheel_rect); 1774 Region wheel_region(wheel_rect);
1748 state->BeginArray("wheel_event_handler_region"); 1775 state->BeginArray("wheel_event_handler_region");
1749 wheel_region.AsValueInto(state); 1776 wheel_region.AsValueInto(state);
1750 state->EndArray(); 1777 state->EndArray();
1751 } 1778 }
1752 if (have_scroll_event_handlers_) { 1779 if (have_scroll_event_handlers_) {
1753 gfx::Rect scroll_rect(bounds()); 1780 gfx::Rect scroll_rect(bounds());
1754 Region scroll_region(scroll_rect); 1781 Region scroll_region(scroll_rect);
1755 state->BeginArray("scroll_event_handler_region"); 1782 state->BeginArray("scroll_event_handler_region");
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1943 .layer_transforms_should_scale_layer_contents) { 1970 .layer_transforms_should_scale_layer_contents) {
1944 return default_scale; 1971 return default_scale;
1945 } 1972 }
1946 1973
1947 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( 1974 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents(
1948 DrawTransform(), default_scale); 1975 DrawTransform(), default_scale);
1949 return std::max(transform_scales.x(), transform_scales.y()); 1976 return std::max(transform_scales.x(), transform_scales.y());
1950 } 1977 }
1951 1978
1952 } // namespace cc 1979 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698