Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/render_widget_host_view_android.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_android.h" |
| 6 | 6 |
| 7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 95 #include "ui/gfx/android/view_configuration.h" | 95 #include "ui/gfx/android/view_configuration.h" |
| 96 #include "ui/gfx/geometry/dip_util.h" | 96 #include "ui/gfx/geometry/dip_util.h" |
| 97 #include "ui/gfx/geometry/size_conversions.h" | 97 #include "ui/gfx/geometry/size_conversions.h" |
| 98 #include "ui/touch_selection/touch_selection_controller.h" | 98 #include "ui/touch_selection/touch_selection_controller.h" |
| 99 | 99 |
| 100 namespace content { | 100 namespace content { |
| 101 | 101 |
| 102 namespace { | 102 namespace { |
| 103 | 103 |
| 104 static const char kAsyncReadBackString[] = "Compositing.CopyFromSurfaceTime"; | 104 static const char kAsyncReadBackString[] = "Compositing.CopyFromSurfaceTime"; |
| 105 static const base::TimeDelta kClickCountInterval = | |
| 106 base::TimeDelta::FromSecondsD(0.5); | |
| 107 static const float kClickCountRadiusSquaredDIP = 25; | |
| 105 | 108 |
| 106 class PendingReadbackLock; | 109 class PendingReadbackLock; |
| 107 | 110 |
| 108 PendingReadbackLock* g_pending_readback_lock = nullptr; | 111 PendingReadbackLock* g_pending_readback_lock = nullptr; |
| 109 | 112 |
| 110 class PendingReadbackLock : public base::RefCounted<PendingReadbackLock> { | 113 class PendingReadbackLock : public base::RefCounted<PendingReadbackLock> { |
| 111 public: | 114 public: |
| 112 PendingReadbackLock() { | 115 PendingReadbackLock() { |
| 113 DCHECK_EQ(g_pending_readback_lock, nullptr); | 116 DCHECK_EQ(g_pending_readback_lock, nullptr); |
| 114 g_pending_readback_lock = this; | 117 g_pending_readback_lock = this; |
| (...skipping 1679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1794 latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); | 1797 latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); |
| 1795 target_host->ForwardKeyboardEventWithLatencyInfo(event, latency_info); | 1798 target_host->ForwardKeyboardEventWithLatencyInfo(event, latency_info); |
| 1796 } | 1799 } |
| 1797 | 1800 |
| 1798 void RenderWidgetHostViewAndroid::SendMouseEvent( | 1801 void RenderWidgetHostViewAndroid::SendMouseEvent( |
| 1799 const ui::MotionEventAndroid& motion_event, | 1802 const ui::MotionEventAndroid& motion_event, |
| 1800 int action_button) { | 1803 int action_button) { |
| 1801 blink::WebInputEvent::Type webMouseEventType = | 1804 blink::WebInputEvent::Type webMouseEventType = |
| 1802 ui::ToWebMouseEventType(motion_event.GetAction()); | 1805 ui::ToWebMouseEventType(motion_event.GetAction()); |
| 1803 | 1806 |
| 1807 const base::TimeTicks current_time = base::TimeTicks::Now(); | |
| 1808 if (webMouseEventType == blink::WebInputEvent::kMouseDown) { | |
| 1809 if (action_button == ui::MotionEventAndroid::BUTTON_PRIMARY) { | |
| 1810 gfx::Point mousedown_point(motion_event.GetX(0), motion_event.GetY(0)); | |
| 1811 const base::TimeDelta time_delay = | |
| 1812 current_time - prev_mousedown_timestamp_; | |
| 1813 const float distance_squared = | |
| 1814 (mousedown_point - prev_mousedown_point_).LengthSquared(); | |
| 1815 if (left_click_count_ > 2 || time_delay > kClickCountInterval || | |
| 1816 distance_squared > kClickCountRadiusSquaredDIP) { | |
| 1817 left_click_count_ = 0; | |
| 1818 } | |
| 1819 prev_mousedown_timestamp_ = current_time; | |
| 1820 prev_mousedown_point_ = mousedown_point; | |
| 1821 } else { | |
| 1822 // Reset state if middle or right button was pressed. | |
| 1823 left_click_count_ = 0; | |
| 1824 prev_mousedown_timestamp_ = base::TimeTicks(); | |
| 1825 } | |
| 1826 left_click_count_++; | |
| 1827 } | |
| 1828 | |
| 1804 blink::WebMouseEvent mouse_event = WebMouseEventBuilder::Build( | 1829 blink::WebMouseEvent mouse_event = WebMouseEventBuilder::Build( |
| 1805 webMouseEventType, | 1830 webMouseEventType, |
| 1806 ui::EventTimeStampToSeconds(motion_event.GetEventTime()), | 1831 ui::EventTimeStampToSeconds(motion_event.GetEventTime()), |
| 1807 motion_event.GetX(0), motion_event.GetY(0), motion_event.GetFlags(), | 1832 motion_event.GetX(0), motion_event.GetY(0), motion_event.GetFlags(), |
| 1808 motion_event.GetButtonState() ? 1 : 0 /* click count */, | 1833 motion_event.GetButtonState() ? left_click_count_ : 0 /* click count */, |
|
aelias_OOO_until_Jul13
2017/06/21 19:59:01
Hmm, I realized click_count needs to be set on Mou
| |
| 1809 motion_event.GetPointerId(0), motion_event.GetPressure(0), | 1834 motion_event.GetPointerId(0), motion_event.GetPressure(0), |
| 1810 motion_event.GetOrientation(0), motion_event.GetTiltX(0), | 1835 motion_event.GetOrientation(0), motion_event.GetTiltX(0), |
| 1811 motion_event.GetTiltY(0), action_button, motion_event.GetToolType(0)); | 1836 motion_event.GetTiltY(0), action_button, motion_event.GetToolType(0)); |
| 1812 | 1837 |
| 1813 if (!host_ || !host_->delegate()) | 1838 if (!host_ || !host_->delegate()) |
| 1814 return; | 1839 return; |
| 1815 | 1840 |
| 1816 if (SiteIsolationPolicy::AreCrossProcessFramesPossible() && | 1841 if (SiteIsolationPolicy::AreCrossProcessFramesPossible() && |
| 1817 host_->delegate()->GetInputEventRouter()) { | 1842 host_->delegate()->GetInputEventRouter()) { |
| 1818 host_->delegate()->GetInputEventRouter()->RouteMouseEvent( | 1843 host_->delegate()->GetInputEventRouter()->RouteMouseEvent( |
| (...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2276 | 2301 |
| 2277 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor(); | 2302 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor(); |
| 2278 if (!compositor) | 2303 if (!compositor) |
| 2279 return; | 2304 return; |
| 2280 | 2305 |
| 2281 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>( | 2306 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>( |
| 2282 overscroll_refresh_handler, compositor, view_.GetDipScale()); | 2307 overscroll_refresh_handler, compositor, view_.GetDipScale()); |
| 2283 } | 2308 } |
| 2284 | 2309 |
| 2285 } // namespace content | 2310 } // namespace content |
| OLD | NEW |