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

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

Issue 2336803003: Make SyntheticPointerAction to flush the pointer action sequence (Closed)
Patch Set: controller Created 4 years, 1 month 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
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_impl.h" 5 #include "content/browser/renderer_host/render_widget_host_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <set> 9 #include <set>
10 #include <tuple> 10 #include <tuple>
(...skipping 1166 matching lines...) Expand 10 before | Expand all | Expand 10 after
1177 NativeWebKeyboardEventWithLatencyInfo key_event_with_latency(key_event, 1177 NativeWebKeyboardEventWithLatencyInfo key_event_with_latency(key_event,
1178 latency_info); 1178 latency_info);
1179 key_event_with_latency.event.isBrowserShortcut = is_shortcut; 1179 key_event_with_latency.event.isBrowserShortcut = is_shortcut;
1180 DispatchInputEventWithLatencyInfo(key_event, &key_event_with_latency.latency); 1180 DispatchInputEventWithLatencyInfo(key_event, &key_event_with_latency.latency);
1181 input_router_->SendKeyboardEvent(key_event_with_latency); 1181 input_router_->SendKeyboardEvent(key_event_with_latency);
1182 } 1182 }
1183 1183
1184 void RenderWidgetHostImpl::QueueSyntheticGesture( 1184 void RenderWidgetHostImpl::QueueSyntheticGesture(
1185 std::unique_ptr<SyntheticGesture> synthetic_gesture, 1185 std::unique_ptr<SyntheticGesture> synthetic_gesture,
1186 const base::Callback<void(SyntheticGesture::Result)>& on_complete) { 1186 const base::Callback<void(SyntheticGesture::Result)>& on_complete) {
1187 if (!synthetic_gesture_controller_ && view_) { 1187 SetSyntheticGestureController();
tdresser 2016/10/26 18:28:40 We call SetSyntheticGestureController before we ev
lanwei 2016/10/30 23:23:13 Yes, there are some other places which also call t
1188 synthetic_gesture_controller_.reset(
1189 new SyntheticGestureController(view_->CreateSyntheticGestureTarget()));
1190 }
1191 if (synthetic_gesture_controller_) { 1188 if (synthetic_gesture_controller_) {
1192 synthetic_gesture_controller_->QueueSyntheticGesture( 1189 synthetic_gesture_controller_->QueueSyntheticGesture(
1193 std::move(synthetic_gesture), on_complete); 1190 std::move(synthetic_gesture), on_complete);
1194 } 1191 }
1195 } 1192 }
1196 1193
1197 void RenderWidgetHostImpl::SetCursor(const WebCursor& cursor) { 1194 void RenderWidgetHostImpl::SetCursor(const WebCursor& cursor) {
1198 if (!view_) 1195 if (!view_)
1199 return; 1196 return;
1200 view_->UpdateCursor(cursor); 1197 view_->UpdateCursor(cursor);
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
1739 void RenderWidgetHostImpl::OnQueueSyntheticGesture( 1736 void RenderWidgetHostImpl::OnQueueSyntheticGesture(
1740 const SyntheticGesturePacket& gesture_packet) { 1737 const SyntheticGesturePacket& gesture_packet) {
1741 // Only allow untrustworthy gestures if explicitly enabled. 1738 // Only allow untrustworthy gestures if explicitly enabled.
1742 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( 1739 if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
1743 cc::switches::kEnableGpuBenchmarking)) { 1740 cc::switches::kEnableGpuBenchmarking)) {
1744 bad_message::ReceivedBadMessage(GetProcess(), 1741 bad_message::ReceivedBadMessage(GetProcess(),
1745 bad_message::RWH_SYNTHETIC_GESTURE); 1742 bad_message::RWH_SYNTHETIC_GESTURE);
1746 return; 1743 return;
1747 } 1744 }
1748 1745
1746 SetSyntheticGestureController();
1747 std::unique_ptr<SyntheticGesture> synthetic_gesture;
1748 const SyntheticGestureParams* gesture_params =
1749 gesture_packet.gesture_params();
1750 if (gesture_params->GetGestureType() ==
1751 SyntheticGestureParams::POINTER_ACTION_LIST) {
1752 synthetic_gesture =
1753 synthetic_gesture_controller_->CreateSyntheticPointerAction(
1754 *SyntheticPointerActionListParams::Cast(gesture_params));
1755 } else {
1756 synthetic_gesture = SyntheticGesture::Create(*gesture_params);
1757 }
1758
1749 QueueSyntheticGesture( 1759 QueueSyntheticGesture(
1750 SyntheticGesture::Create(*gesture_packet.gesture_params()), 1760 std::move(synthetic_gesture),
1751 base::Bind(&RenderWidgetHostImpl::OnSyntheticGestureCompleted, 1761 base::Bind(&RenderWidgetHostImpl::OnSyntheticGestureCompleted,
1752 weak_factory_.GetWeakPtr())); 1762 weak_factory_.GetWeakPtr()));
1753 } 1763 }
1754 1764
1755 void RenderWidgetHostImpl::OnSetCursor(const WebCursor& cursor) { 1765 void RenderWidgetHostImpl::OnSetCursor(const WebCursor& cursor) {
1756 SetCursor(cursor); 1766 SetCursor(cursor);
1757 } 1767 }
1758 1768
1759 void RenderWidgetHostImpl::SetTouchEventEmulationEnabled( 1769 void RenderWidgetHostImpl::SetTouchEventEmulationEnabled(
1760 bool enabled, ui::GestureProviderConfigType config_type) { 1770 bool enabled, ui::GestureProviderConfigType config_type) {
1761 if (enabled) { 1771 if (enabled) {
1762 if (!touch_emulator_) { 1772 if (!touch_emulator_) {
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
2185 2195
2186 void RenderWidgetHostImpl::OnSnapshotDataReceivedAsync( 2196 void RenderWidgetHostImpl::OnSnapshotDataReceivedAsync(
2187 int snapshot_id, 2197 int snapshot_id,
2188 scoped_refptr<base::RefCountedBytes> png_data) { 2198 scoped_refptr<base::RefCountedBytes> png_data) {
2189 if (png_data.get()) 2199 if (png_data.get())
2190 OnSnapshotDataReceived(snapshot_id, png_data->front(), png_data->size()); 2200 OnSnapshotDataReceived(snapshot_id, png_data->front(), png_data->size());
2191 else 2201 else
2192 OnSnapshotDataReceived(snapshot_id, NULL, 0); 2202 OnSnapshotDataReceived(snapshot_id, NULL, 0);
2193 } 2203 }
2194 2204
2205 void RenderWidgetHostImpl::SetSyntheticGestureController() {
tdresser 2016/10/26 18:28:40 This method is confusing. Should it be called Crea
lanwei 2016/10/30 23:23:13 Done.
2206 if (synthetic_gesture_controller_ || !view_)
2207 return;
2208
2209 synthetic_gesture_controller_.reset(
2210 new SyntheticGestureController(view_->CreateSyntheticGestureTarget()));
2211 }
2212
2195 // static 2213 // static
2196 void RenderWidgetHostImpl::CompositorFrameDrawn( 2214 void RenderWidgetHostImpl::CompositorFrameDrawn(
2197 const std::vector<ui::LatencyInfo>& latency_info) { 2215 const std::vector<ui::LatencyInfo>& latency_info) {
2198 for (size_t i = 0; i < latency_info.size(); i++) { 2216 for (size_t i = 0; i < latency_info.size(); i++) {
2199 std::set<RenderWidgetHostImpl*> rwhi_set; 2217 std::set<RenderWidgetHostImpl*> rwhi_set;
2200 for (const auto& lc : latency_info[i].latency_components()) { 2218 for (const auto& lc : latency_info[i].latency_components()) {
2201 if (lc.first.first == ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT || 2219 if (lc.first.first == ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT ||
2202 lc.first.first == ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT || 2220 lc.first.first == ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT ||
2203 lc.first.first == ui::TAB_SHOW_COMPONENT) { 2221 lc.first.first == ui::TAB_SHOW_COMPONENT) {
2204 // Matches with GetLatencyComponentId 2222 // Matches with GetLatencyComponentId
(...skipping 17 matching lines...) Expand all
2222 return delegate_ ? delegate_->GetRootBrowserAccessibilityManager() : NULL; 2240 return delegate_ ? delegate_->GetRootBrowserAccessibilityManager() : NULL;
2223 } 2241 }
2224 2242
2225 BrowserAccessibilityManager* 2243 BrowserAccessibilityManager*
2226 RenderWidgetHostImpl::GetOrCreateRootBrowserAccessibilityManager() { 2244 RenderWidgetHostImpl::GetOrCreateRootBrowserAccessibilityManager() {
2227 return delegate_ ? 2245 return delegate_ ?
2228 delegate_->GetOrCreateRootBrowserAccessibilityManager() : NULL; 2246 delegate_->GetOrCreateRootBrowserAccessibilityManager() : NULL;
2229 } 2247 }
2230 2248
2231 } // namespace content 2249 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698