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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 2713543002: Only focus if contextmenu event was sent (Closed)
Patch Set: Adding double/triple click to Android Created 3 years, 6 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 unified diff | Download patch
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_android.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 double kMaxClickDelay = 0.5;
106 static const int kMaxClickSquaredDistance = 25;
105 107
106 class PendingReadbackLock; 108 class PendingReadbackLock;
107 109
108 PendingReadbackLock* g_pending_readback_lock = nullptr; 110 PendingReadbackLock* g_pending_readback_lock = nullptr;
109 111
110 class PendingReadbackLock : public base::RefCounted<PendingReadbackLock> { 112 class PendingReadbackLock : public base::RefCounted<PendingReadbackLock> {
111 public: 113 public:
112 PendingReadbackLock() { 114 PendingReadbackLock() {
113 DCHECK_EQ(g_pending_readback_lock, nullptr); 115 DCHECK_EQ(g_pending_readback_lock, nullptr);
114 g_pending_readback_lock = this; 116 g_pending_readback_lock = this;
(...skipping 1679 matching lines...) Expand 10 before | Expand all | Expand 10 after
1794 latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); 1796 latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0);
1795 target_host->ForwardKeyboardEventWithLatencyInfo(event, latency_info); 1797 target_host->ForwardKeyboardEventWithLatencyInfo(event, latency_info);
1796 } 1798 }
1797 1799
1798 void RenderWidgetHostViewAndroid::SendMouseEvent( 1800 void RenderWidgetHostViewAndroid::SendMouseEvent(
1799 const ui::MotionEventAndroid& motion_event, 1801 const ui::MotionEventAndroid& motion_event,
1800 int action_button) { 1802 int action_button) {
1801 blink::WebInputEvent::Type webMouseEventType = 1803 blink::WebInputEvent::Type webMouseEventType =
1802 ui::ToWebMouseEventType(motion_event.GetAction()); 1804 ui::ToWebMouseEventType(motion_event.GetAction());
1803 1805
1806 const double event_time =
1807 ui::EventTimeStampToSeconds(motion_event.GetEventTime());
1808 if (webMouseEventType == blink::WebInputEvent::kMouseDown) {
1809 const double time_delay = event_time - prev_mousedown_timestamp_;
1810 const int distance_squared = (motion_event.GetX(0) - prev_mousedown_x) *
1811 (motion_event.GetX(0) - prev_mousedown_x) +
1812 (motion_event.GetY(0) - prev_mousedown_y) *
1813 (motion_event.GetY(0) - prev_mousedown_y);
1814 if (click_count_ > 2 || time_delay > kMaxClickDelay ||
1815 distance_squared > kMaxClickSquaredDistance) {
1816 click_count_ = 1;
1817 } else {
1818 click_count_++;
1819 }
1820 prev_mousedown_timestamp_ = event_time;
1821 prev_mousedown_x = motion_event.GetX(0);
1822 prev_mousedown_y = motion_event.GetY(0);
1823 }
1824
1804 blink::WebMouseEvent mouse_event = WebMouseEventBuilder::Build( 1825 blink::WebMouseEvent mouse_event = WebMouseEventBuilder::Build(
1805 webMouseEventType, 1826 webMouseEventType, event_time, motion_event.GetX(0), motion_event.GetY(0),
1806 ui::EventTimeStampToSeconds(motion_event.GetEventTime()), 1827 motion_event.GetFlags(),
1807 motion_event.GetX(0), motion_event.GetY(0), motion_event.GetFlags(), 1828 motion_event.GetButtonState() ? click_count_ : 0 /* click count */,
1808 motion_event.GetButtonState() ? 1 : 0 /* click count */,
1809 motion_event.GetPointerId(0), motion_event.GetPressure(0), 1829 motion_event.GetPointerId(0), motion_event.GetPressure(0),
1810 motion_event.GetOrientation(0), motion_event.GetTiltX(0), 1830 motion_event.GetOrientation(0), motion_event.GetTiltX(0),
1811 motion_event.GetTiltY(0), action_button, motion_event.GetToolType(0)); 1831 motion_event.GetTiltY(0), action_button, motion_event.GetToolType(0));
1812 1832
1813 if (!host_ || !host_->delegate()) 1833 if (!host_ || !host_->delegate())
1814 return; 1834 return;
1815 1835
1816 if (SiteIsolationPolicy::AreCrossProcessFramesPossible() && 1836 if (SiteIsolationPolicy::AreCrossProcessFramesPossible() &&
1817 host_->delegate()->GetInputEventRouter()) { 1837 host_->delegate()->GetInputEventRouter()) {
1818 host_->delegate()->GetInputEventRouter()->RouteMouseEvent( 1838 host_->delegate()->GetInputEventRouter()->RouteMouseEvent(
1819 this, &mouse_event, ui::LatencyInfo()); 1839 this, &mouse_event, ui::LatencyInfo());
1820 } else { 1840 } else {
1821 host_->ForwardMouseEvent(mouse_event); 1841 host_->ForwardMouseEvent(mouse_event);
1822 } 1842 }
1823 } 1843 }
1824 1844
1845 void UpdateClickCount(double event_time) {}
1846
1825 void RenderWidgetHostViewAndroid::SendMouseWheelEvent( 1847 void RenderWidgetHostViewAndroid::SendMouseWheelEvent(
1826 const blink::WebMouseWheelEvent& event) { 1848 const blink::WebMouseWheelEvent& event) {
1827 if (!host_ || !host_->delegate()) 1849 if (!host_ || !host_->delegate())
1828 return; 1850 return;
1829 1851
1830 ui::LatencyInfo latency_info(ui::SourceEventType::WHEEL); 1852 ui::LatencyInfo latency_info(ui::SourceEventType::WHEEL);
1831 latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0); 1853 latency_info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 0, 0);
1832 blink::WebMouseWheelEvent wheel_event(event); 1854 blink::WebMouseWheelEvent wheel_event(event);
1833 bool should_route_event = 1855 bool should_route_event =
1834 SiteIsolationPolicy::AreCrossProcessFramesPossible() && 1856 SiteIsolationPolicy::AreCrossProcessFramesPossible() &&
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
2276 2298
2277 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor(); 2299 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor();
2278 if (!compositor) 2300 if (!compositor)
2279 return; 2301 return;
2280 2302
2281 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>( 2303 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>(
2282 overscroll_refresh_handler, compositor, view_.GetDipScale()); 2304 overscroll_refresh_handler, compositor, view_.GetDipScale());
2283 } 2305 }
2284 2306
2285 } // namespace content 2307 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_android.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698