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

Unified 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 side-by-side diff with in-line comments
Download patch
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");

Powered by Google App Engine
This is Rietveld 408576698