| 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");
|
|
|