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

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

Issue 2387353004: Delay Input.dispatchKeyEvent response until after key event ack. (Closed)
Patch Set: fix test Created 4 years 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 2130 matching lines...) Expand 10 before | Expand all | Expand 10 after
2141 ui::LatencyInfo* latency) { 2141 ui::LatencyInfo* latency) {
2142 latency_tracker_.OnInputEvent(event, latency); 2142 latency_tracker_.OnInputEvent(event, latency);
2143 for (auto& observer : input_event_observers_) 2143 for (auto& observer : input_event_observers_)
2144 observer.OnInputEvent(event); 2144 observer.OnInputEvent(event);
2145 } 2145 }
2146 2146
2147 void RenderWidgetHostImpl::OnKeyboardEventAck( 2147 void RenderWidgetHostImpl::OnKeyboardEventAck(
2148 const NativeWebKeyboardEventWithLatencyInfo& event, 2148 const NativeWebKeyboardEventWithLatencyInfo& event,
2149 InputEventAckState ack_result) { 2149 InputEventAckState ack_result) {
2150 latency_tracker_.OnInputEventAck(event.event, &event.latency, ack_result); 2150 latency_tracker_.OnInputEventAck(event.event, &event.latency, ack_result);
2151 for (auto& input_event_observer : input_event_observers_)
2152 input_event_observer.OnInputEventAck(event.event);
2151 2153
2152 const bool processed = (INPUT_EVENT_ACK_STATE_CONSUMED == ack_result); 2154 const bool processed = (INPUT_EVENT_ACK_STATE_CONSUMED == ack_result);
2153 2155
2154 // We only send unprocessed key event upwards if we are not hidden, 2156 // We only send unprocessed key event upwards if we are not hidden,
2155 // because the user has moved away from us and no longer expect any effect 2157 // because the user has moved away from us and no longer expect any effect
2156 // of this key event. 2158 // of this key event.
2157 if (delegate_ && !processed && !is_hidden() && !event.event.skip_in_browser) { 2159 if (delegate_ && !processed && !is_hidden() && !event.event.skip_in_browser) {
2158 delegate_->HandleKeyboardEvent(event.event); 2160 delegate_->HandleKeyboardEvent(event.event);
2159 2161
2160 // WARNING: This RenderWidgetHostImpl can be deallocated at this point 2162 // WARNING: This RenderWidgetHostImpl can be deallocated at this point
2161 // (i.e. in the case of Ctrl+W, where the call to 2163 // (i.e. in the case of Ctrl+W, where the call to
2162 // HandleKeyboardEvent destroys this RenderWidgetHostImpl). 2164 // HandleKeyboardEvent destroys this RenderWidgetHostImpl).
2163 } 2165 }
2164 } 2166 }
2165 2167
2166 void RenderWidgetHostImpl::OnMouseEventAck( 2168 void RenderWidgetHostImpl::OnMouseEventAck(
2167 const MouseEventWithLatencyInfo& mouse_event, 2169 const MouseEventWithLatencyInfo& mouse_event,
2168 InputEventAckState ack_result) { 2170 InputEventAckState ack_result) {
2169 latency_tracker_.OnInputEventAck(mouse_event.event, &mouse_event.latency, 2171 latency_tracker_.OnInputEventAck(mouse_event.event, &mouse_event.latency,
2170 ack_result); 2172 ack_result);
2173 for (auto& input_event_observer : input_event_observers_)
2174 input_event_observer.OnInputEventAck(mouse_event.event);
2171 } 2175 }
2172 2176
2173 void RenderWidgetHostImpl::OnWheelEventAck( 2177 void RenderWidgetHostImpl::OnWheelEventAck(
2174 const MouseWheelEventWithLatencyInfo& wheel_event, 2178 const MouseWheelEventWithLatencyInfo& wheel_event,
2175 InputEventAckState ack_result) { 2179 InputEventAckState ack_result) {
2176 latency_tracker_.OnInputEventAck(wheel_event.event, &wheel_event.latency, 2180 latency_tracker_.OnInputEventAck(wheel_event.event, &wheel_event.latency,
2177 ack_result); 2181 ack_result);
2182 for (auto& input_event_observer : input_event_observers_)
2183 input_event_observer.OnInputEventAck(wheel_event.event);
2178 2184
2179 if (!is_hidden() && view_) { 2185 if (!is_hidden() && view_) {
2180 if (ack_result != INPUT_EVENT_ACK_STATE_CONSUMED && 2186 if (ack_result != INPUT_EVENT_ACK_STATE_CONSUMED &&
2181 delegate_ && delegate_->HandleWheelEvent(wheel_event.event)) { 2187 delegate_ && delegate_->HandleWheelEvent(wheel_event.event)) {
2182 ack_result = INPUT_EVENT_ACK_STATE_CONSUMED; 2188 ack_result = INPUT_EVENT_ACK_STATE_CONSUMED;
2183 } 2189 }
2184 view_->WheelEventAck(wheel_event.event, ack_result); 2190 view_->WheelEventAck(wheel_event.event, ack_result);
2185 } 2191 }
2186 } 2192 }
2187 2193
2188 void RenderWidgetHostImpl::OnGestureEventAck( 2194 void RenderWidgetHostImpl::OnGestureEventAck(
2189 const GestureEventWithLatencyInfo& event, 2195 const GestureEventWithLatencyInfo& event,
2190 InputEventAckState ack_result) { 2196 InputEventAckState ack_result) {
2191 latency_tracker_.OnInputEventAck(event.event, &event.latency, ack_result); 2197 latency_tracker_.OnInputEventAck(event.event, &event.latency, ack_result);
2198 for (auto& input_event_observer : input_event_observers_)
2199 input_event_observer.OnInputEventAck(event.event);
2192 2200
2193 if (view_) 2201 if (view_)
2194 view_->GestureEventAck(event.event, ack_result); 2202 view_->GestureEventAck(event.event, ack_result);
2195 } 2203 }
2196 2204
2197 void RenderWidgetHostImpl::OnTouchEventAck( 2205 void RenderWidgetHostImpl::OnTouchEventAck(
2198 const TouchEventWithLatencyInfo& event, 2206 const TouchEventWithLatencyInfo& event,
2199 InputEventAckState ack_result) { 2207 InputEventAckState ack_result) {
2200 latency_tracker_.OnInputEventAck(event.event, &event.latency, ack_result); 2208 latency_tracker_.OnInputEventAck(event.event, &event.latency, ack_result);
2209 for (auto& input_event_observer : input_event_observers_)
2210 input_event_observer.OnInputEventAck(event.event);
2201 2211
2202 if (touch_emulator_ && 2212 if (touch_emulator_ &&
2203 touch_emulator_->HandleTouchEventAck(event.event, ack_result)) { 2213 touch_emulator_->HandleTouchEventAck(event.event, ack_result)) {
2204 return; 2214 return;
2205 } 2215 }
2206 2216
2207 if (view_) 2217 if (view_)
2208 view_->ProcessAckedTouchEvent(event, ack_result); 2218 view_->ProcessAckedTouchEvent(event, ack_result);
2209 } 2219 }
2210 2220
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
2498 // Note: We are using the origin URL provided by the sender here. It may be 2508 // Note: We are using the origin URL provided by the sender here. It may be
2499 // different from the receiver's. 2509 // different from the receiver's.
2500 file_system_file.url = 2510 file_system_file.url =
2501 GURL(storage::GetIsolatedFileSystemRootURIString( 2511 GURL(storage::GetIsolatedFileSystemRootURIString(
2502 file_system_url.origin(), filesystem_id, std::string()) 2512 file_system_url.origin(), filesystem_id, std::string())
2503 .append(register_name)); 2513 .append(register_name));
2504 } 2514 }
2505 } 2515 }
2506 2516
2507 } // namespace content 2517 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698