Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 57b62f880ed30c978e7f608cab61187810e7be72..81ce8d5ab786097d249b68413bbde48a76f2af05 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -42,6 +42,22 @@ |
#include "ui/gfx/geometry/vector2d_conversions.h" |
namespace cc { |
+ |
+namespace { |
+ |
+base::ListValue* EventListenerPropertiesAsJSON(uint32_t event_properties) { |
+ base::ListValue* result = new base::ListValue; |
+ if ((event_properties & EventListenerProperties::kBlocking) != |
+ EventListenerProperties::kNone) |
+ result->AppendString("Blocking"); |
+ if ((event_properties & EventListenerProperties::kPassive) != |
+ EventListenerProperties::kNone) |
+ result->AppendString("Passive"); |
+ return result; |
+} |
+ |
+} // namespace |
+ |
LayerImpl::LayerImpl(LayerTreeImpl* layer_impl, int id) |
: LayerImpl(layer_impl, id, new LayerImpl::SyncedScrollOffset) { |
} |
@@ -60,7 +76,6 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, |
scroll_clip_layer_id_(Layer::INVALID_ID), |
main_thread_scrolling_reasons_( |
MainThreadScrollingReason::kNotScrollingOnMain), |
- have_wheel_event_handlers_(false), |
have_scroll_event_handlers_(false), |
scroll_blocks_on_(SCROLL_BLOCKS_ON_NONE), |
user_scrollable_horizontal_(true), |
@@ -80,6 +95,8 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, |
is_container_for_fixed_position_layers_(false), |
is_affected_by_page_scale_(true), |
was_ever_ready_since_last_transform_animation_(true), |
+ touch_event_properties_(EventListenerProperties::kNone), |
+ wheel_event_properties_(EventListenerProperties::kNone), |
background_color_(0), |
opacity_(1.0), |
blend_mode_(SkXfermode::kSrcOver_Mode), |
@@ -563,7 +580,8 @@ InputHandler::ScrollStatus LayerImpl::TryScroll( |
} |
if ((type == InputHandler::WHEEL || type == InputHandler::ANIMATED_WHEEL) && |
- have_wheel_event_handlers() && |
+ (wheel_event_properties() & EventListenerProperties::kBlocking) != |
+ EventListenerProperties::kNone && |
effective_block_mode & SCROLL_BLOCKS_ON_WHEEL_EVENT) { |
TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed WheelEventHandlers"); |
scroll_status.thread = InputHandler::SCROLL_ON_MAIN_THREAD; |
@@ -622,7 +640,8 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) { |
layer->SetBackgroundFilters(background_filters()); |
layer->SetMasksToBounds(masks_to_bounds_); |
layer->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons_); |
- layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_); |
+ layer->SetTouchEventProperties(touch_event_properties_); |
+ layer->SetWheelEventProperties(wheel_event_properties_); |
layer->SetHaveScrollEventHandlers(have_scroll_event_handlers_); |
layer->SetScrollBlocksOn(scroll_blocks_on_); |
layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); |
@@ -773,8 +792,16 @@ base::DictionaryValue* LayerImpl::LayerTreeAsJson() const { |
if (scrollable()) |
result->SetBoolean("Scrollable", true); |
- if (have_wheel_event_handlers_) |
- result->SetBoolean("WheelHandler", have_wheel_event_handlers_); |
+ if (touch_event_properties_ != EventListenerProperties::kNone) { |
+ list = EventListenerPropertiesAsJSON(touch_event_properties_); |
+ result->Set("TouchHandler", list); |
+ } |
+ |
+ if (wheel_event_properties_ != EventListenerProperties::kNone) { |
+ list = EventListenerPropertiesAsJSON(wheel_event_properties_); |
+ result->Set("WheelHandler", list); |
+ } |
+ |
if (have_scroll_event_handlers_) |
result->SetBoolean("ScrollHandler", have_scroll_event_handlers_); |
if (!touch_event_handler_region_.IsEmpty()) { |
@@ -1742,7 +1769,7 @@ void LayerImpl::AsValueInto(base::trace_event::TracedValue* state) const { |
touch_event_handler_region_.AsValueInto(state); |
state->EndArray(); |
} |
- if (have_wheel_event_handlers_) { |
+ if (wheel_event_properties_ != EventListenerProperties::kNone) { |
gfx::Rect wheel_rect(bounds()); |
Region wheel_region(wheel_rect); |
state->BeginArray("wheel_event_handler_region"); |