Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index b845968c2f7df709585ad96bda4ce3ecc1bacc71..f29519cfbddb00cdb30dd17c66ed4ec19d031067 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -41,6 +41,23 @@ |
#include "ui/gfx/geometry/vector2d_conversions.h" |
namespace cc { |
+ |
+namespace { |
+ |
+base::ListValue* EventListenerPropertiesAsJSON( |
+ EventListenerProperties event_properties) { |
+ base::ListValue* result = new base::ListValue; |
+ if ((event_properties & EventListenerProperties::BLOCKING) != |
+ EventListenerProperties::NONE) |
+ result->AppendString("Blocking"); |
+ if ((event_properties & EventListenerProperties::PASSIVE) != |
+ EventListenerProperties::NONE) |
+ result->AppendString("Passive"); |
+ return result; |
+} |
+ |
+} // namespace |
+ |
LayerImpl::LayerImpl(LayerTreeImpl* layer_impl, int id) |
: LayerImpl(layer_impl, id, new LayerImpl::SyncedScrollOffset) { |
} |
@@ -58,7 +75,6 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, |
scroll_offset_(scroll_offset), |
scroll_clip_layer_id_(Layer::INVALID_ID), |
should_scroll_on_main_thread_(false), |
- have_wheel_event_handlers_(false), |
have_scroll_event_handlers_(false), |
scroll_blocks_on_(SCROLL_BLOCKS_ON_NONE), |
user_scrollable_horizontal_(true), |
@@ -78,6 +94,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::NONE), |
+ wheel_event_properties_(EventListenerProperties::NONE), |
background_color_(0), |
opacity_(1.0), |
blend_mode_(SkXfermode::kSrcOver_Mode), |
@@ -546,7 +564,7 @@ InputHandler::ScrollStatus LayerImpl::TryScroll( |
} |
if ((type == InputHandler::WHEEL || type == InputHandler::ANIMATED_WHEEL) && |
- have_wheel_event_handlers() && |
+ wheel_event_properties() != EventListenerProperties::NONE && |
effective_block_mode & SCROLL_BLOCKS_ON_WHEEL_EVENT) { |
TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed WheelEventHandlers"); |
return InputHandler::SCROLL_ON_MAIN_THREAD; |
@@ -595,7 +613,7 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) { |
layer->SetBackgroundFilters(background_filters()); |
layer->SetMasksToBounds(masks_to_bounds_); |
layer->SetShouldScrollOnMainThread(should_scroll_on_main_thread_); |
- layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_); |
+ 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.
|
layer->SetHaveScrollEventHandlers(have_scroll_event_handlers_); |
layer->SetScrollBlocksOn(scroll_blocks_on_); |
layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); |
@@ -746,8 +764,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::NONE) { |
+ list = EventListenerPropertiesAsJSON(touch_event_properties_); |
+ result->Set("TouchHandler", list); |
+ } |
+ |
+ if (wheel_event_properties_ != EventListenerProperties::NONE) { |
+ 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()) { |
@@ -1715,7 +1741,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::NONE) { |
gfx::Rect wheel_rect(bounds()); |
Region wheel_region(wheel_rect); |
state->BeginArray("wheel_event_handler_region"); |