diff options
-rw-r--r-- | content/browser/renderer_host/input/input_router_config_helper.cc | 6 | ||||
-rw-r--r-- | content/browser/renderer_host/render_widget_host_view_aura.h | 2 | ||||
-rw-r--r-- | content/browser/renderer_host/render_widget_host_view_aura_unittest.cc | 25 | ||||
-rw-r--r-- | content/browser/renderer_host/ui_events_helper.cc | 2 | ||||
-rw-r--r-- | ui/events/BUILD.gn | 2 | ||||
-rw-r--r-- | ui/events/event.h | 5 | ||||
-rw-r--r-- | ui/events/events.gyp | 2 | ||||
-rw-r--r-- | ui/events/gestures/gesture_recognizer_impl.cc | 24 | ||||
-rw-r--r-- | ui/events/gestures/unified_gesture_detector_enabled.cc | 37 | ||||
-rw-r--r-- | ui/events/gestures/unified_gesture_detector_enabled.h | 17 |
10 files changed, 96 insertions, 26 deletions
diff --git a/content/browser/renderer_host/input/input_router_config_helper.cc b/content/browser/renderer_host/input/input_router_config_helper.cc index 7c95b79..31b17cf 100644 --- a/content/browser/renderer_host/input/input_router_config_helper.cc +++ b/content/browser/renderer_host/input/input_router_config_helper.cc @@ -10,6 +10,7 @@ #if defined(USE_AURA) #include "ui/events/gestures/gesture_configuration.h" +#include "ui/events/gestures/unified_gesture_detector_enabled.h" #elif defined(OS_ANDROID) #include "ui/gfx/android/view_configuration.h" #include "ui/gfx/screen.h" @@ -52,8 +53,9 @@ TouchEventQueue::Config GetTouchEventQueueConfig() { config.touchmove_slop_suppression_length_dips = ui::GestureConfiguration::max_touch_move_in_pixels_for_click(); - // TODO(jdduke): Remove when unified GR enabled, crbug.com/332418. - config.touchmove_slop_suppression_region_includes_boundary = false; + + config.touchmove_slop_suppression_region_includes_boundary = + ui::IsUnifiedGestureDetectorEnabled(); return config; } diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h index fcc3848..8eab68b 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.h +++ b/content/browser/renderer_host/render_widget_host_view_aura.h @@ -348,6 +348,8 @@ class CONTENT_EXPORT RenderWidgetHostViewAura private: FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, SetCompositionText); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, TouchEventState); + FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, + TouchEventPositionsArentRounded); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, TouchEventSyncAsync); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, SwapNotifiesWindow); FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewAuraTest, diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc index d871154..04a78e0 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc @@ -1802,6 +1802,31 @@ TEST_F(RenderWidgetHostViewAuraTest, VisibleViewportTest) { EXPECT_EQ(60, params.a.visible_viewport_size.height()); } +// Ensures that touch event positions are never truncated to integers. +TEST_F(RenderWidgetHostViewAuraTest, TouchEventPositionsArentRounded) { + const float kX = 30.58f; + const float kY = 50.23f; + + view_->InitAsChild(NULL); + view_->Show(); + + ui::TouchEvent press(ui::ET_TOUCH_PRESSED, + gfx::PointF(kX, kY), + 0, + ui::EventTimeForNow()); + + view_->OnTouchEvent(&press); + EXPECT_EQ(blink::WebInputEvent::TouchStart, view_->touch_event_.type); + EXPECT_TRUE(view_->touch_event_.cancelable); + EXPECT_EQ(1U, view_->touch_event_.touchesLength); + EXPECT_EQ(blink::WebTouchPoint::StatePressed, + view_->touch_event_.touches[0].state); + EXPECT_EQ(kX, view_->touch_event_.touches[0].screenPosition.x); + EXPECT_EQ(kX, view_->touch_event_.touches[0].position.x); + EXPECT_EQ(kY, view_->touch_event_.touches[0].screenPosition.y); + EXPECT_EQ(kY, view_->touch_event_.touches[0].position.y); +} + // Tests that scroll ACKs are correctly handled by the overscroll-navigation // controller. TEST_F(RenderWidgetHostViewAuraOverscrollTest, WheelScrollEventOverscrolls) { diff --git a/content/browser/renderer_host/ui_events_helper.cc b/content/browser/renderer_host/ui_events_helper.cc index 1fafff4..c521ee6 100644 --- a/content/browser/renderer_host/ui_events_helper.cc +++ b/content/browser/renderer_host/ui_events_helper.cc @@ -314,7 +314,7 @@ blink::WebTouchPoint* UpdateWebTouchEventFromUIEvent( point->position.x = event.x(); point->position.y = event.y(); - const gfx::Point root_point = event.root_location(); + const gfx::PointF& root_point = event.root_location_f(); point->screenPosition.x = root_point.x(); point->screenPosition.y = root_point.y(); diff --git a/ui/events/BUILD.gn b/ui/events/BUILD.gn index e2fe42b..652f9a4 100644 --- a/ui/events/BUILD.gn +++ b/ui/events/BUILD.gn @@ -109,6 +109,8 @@ component("events") { "gestures/gesture_sequence.cc", "gestures/gesture_sequence.h", "gestures/gesture_types.h", + "gestures/unified_gesture_detector_enabled.cc", + "gestures/unified_gesture_detector_enabled.h", "gestures/velocity_calculator.cc", "gestures/velocity_calculator.h", "platform/x11/x11_event_source.cc", diff --git a/ui/events/event.h b/ui/events/event.h index dfd867e..928a2b9 100644 --- a/ui/events/event.h +++ b/ui/events/event.h @@ -248,13 +248,16 @@ class EVENTS_EXPORT LocatedEvent : public Event { // TODO(tdresser): Always return floating point location. See // crbug.com/337824. gfx::Point location() const { return gfx::ToFlooredPoint(location_); } - gfx::PointF location_f() const { return location_; } + const gfx::PointF& location_f() const { return location_; } void set_root_location(const gfx::PointF& root_location) { root_location_ = root_location; } gfx::Point root_location() const { return gfx::ToFlooredPoint(root_location_); } + const gfx::PointF& root_location_f() const { + return root_location_; + } // Transform the locations using |inverted_root_transform|. // This is applied to both |location_| and |root_location_|. diff --git a/ui/events/events.gyp b/ui/events/events.gyp index 111e17c..890708d 100644 --- a/ui/events/events.gyp +++ b/ui/events/events.gyp @@ -123,6 +123,8 @@ 'gestures/gesture_types.h', 'gestures/motion_event_aura.cc', 'gestures/motion_event_aura.h', + 'gestures/unified_gesture_detector_enabled.cc', + 'gestures/unified_gesture_detector_enabled.h', 'gestures/velocity_calculator.cc', 'gestures/velocity_calculator.h', 'ozone/events_ozone.cc', diff --git a/ui/events/gestures/gesture_recognizer_impl.cc b/ui/events/gestures/gesture_recognizer_impl.cc index bf0dd44..e145334 100644 --- a/ui/events/gestures/gesture_recognizer_impl.cc +++ b/ui/events/gestures/gesture_recognizer_impl.cc @@ -18,6 +18,7 @@ #include "ui/events/gestures/gesture_configuration.h" #include "ui/events/gestures/gesture_sequence.h" #include "ui/events/gestures/gesture_types.h" +#include "ui/events/gestures/unified_gesture_detector_enabled.h" namespace ui { @@ -69,28 +70,7 @@ GestureProviderAura* CreateGestureProvider(GestureProviderAuraClient* client) { // GestureRecognizerImpl, public: GestureRecognizerImpl::GestureRecognizerImpl() { - // Default to using the unified gesture detector. - const CommandLine& command_line = *CommandLine::ForCurrentProcess(); - const std::string unified_gd_enabled_switch = - command_line.HasSwitch(switches::kUnifiedGestureDetector) ? - command_line.GetSwitchValueASCII(switches::kUnifiedGestureDetector) : - switches::kUnifiedGestureDetectorAuto; - - const bool kUseUnifiedGestureDetectorByDefault = true; - if (unified_gd_enabled_switch.empty() || - unified_gd_enabled_switch == switches::kUnifiedGestureDetectorEnabled) { - use_unified_gesture_detector_ = true; - } else if (unified_gd_enabled_switch == - switches::kUnifiedGestureDetectorDisabled) { - use_unified_gesture_detector_ = false; - } else if (unified_gd_enabled_switch == - switches::kUnifiedGestureDetectorAuto) { - use_unified_gesture_detector_ = kUseUnifiedGestureDetectorByDefault; - } else { - LOG(ERROR) << "Invalid --unified-gesture-detector option: " - << unified_gd_enabled_switch; - use_unified_gesture_detector_ = false; - } + use_unified_gesture_detector_ = IsUnifiedGestureDetectorEnabled(); } GestureRecognizerImpl::~GestureRecognizerImpl() { diff --git a/ui/events/gestures/unified_gesture_detector_enabled.cc b/ui/events/gestures/unified_gesture_detector_enabled.cc new file mode 100644 index 0000000..cf221ff --- /dev/null +++ b/ui/events/gestures/unified_gesture_detector_enabled.cc @@ -0,0 +1,37 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/command_line.h" +#include "base/logging.h" +#include "ui/events/event_switches.h" +#include "ui/events/gestures/unified_gesture_detector_enabled.h" + +namespace ui { + +bool IsUnifiedGestureDetectorEnabled() { + const bool kUseUnifiedGestureDetectorByDefault = true; + + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); + const std::string unified_gd_enabled_switch = + command_line.HasSwitch(switches::kUnifiedGestureDetector) ? + command_line.GetSwitchValueASCII(switches::kUnifiedGestureDetector) : + switches::kUnifiedGestureDetectorAuto; + + if (unified_gd_enabled_switch.empty() || + unified_gd_enabled_switch == switches::kUnifiedGestureDetectorEnabled) { + return true; + } + + if (unified_gd_enabled_switch == switches::kUnifiedGestureDetectorDisabled) + return false; + + if (unified_gd_enabled_switch == switches::kUnifiedGestureDetectorAuto) + return kUseUnifiedGestureDetectorByDefault; + + LOG(ERROR) << "Invalid --unified-gesture-detector option: " + << unified_gd_enabled_switch; + return false; +} + +} // namespace ui diff --git a/ui/events/gestures/unified_gesture_detector_enabled.h b/ui/events/gestures/unified_gesture_detector_enabled.h new file mode 100644 index 0000000..18fdc26 --- /dev/null +++ b/ui/events/gestures/unified_gesture_detector_enabled.h @@ -0,0 +1,17 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_EVENTS_GESTURES_UNIFIED_GESTURE_DETECTOR_ENABLED_H_ +#define UI_EVENTS_GESTURES_UNIFIED_GESTURE_DETECTOR_ENABLED_H_ + +#include "ui/events/events_export.h" + +namespace ui { + +// Returns true iff the unified gesture detector is enabled for Aura. +EVENTS_EXPORT bool IsUnifiedGestureDetectorEnabled(); + +} // namespace ui + +#endif // UI_EVENTS_GESTURES_UNIFIED_GESTURE_DETECTOR_ENABLED_H_ |