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

Side by Side Diff: content/renderer/input/input_handler_manager.cc

Issue 2166703003: Implement Main Thread RAF Aligned Input (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_main_thread_queue
Patch Set: Clean prototype up Created 4 years, 4 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/renderer/input/input_handler_manager.h" 5 #include "content/renderer/input/input_handler_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 InputHandlerManager::InputHandlerManager( 49 InputHandlerManager::InputHandlerManager(
50 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 50 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
51 InputHandlerManagerClient* client, 51 InputHandlerManagerClient* client,
52 SynchronousInputHandlerProxyClient* sync_handler_client, 52 SynchronousInputHandlerProxyClient* sync_handler_client,
53 blink::scheduler::RendererScheduler* renderer_scheduler) 53 blink::scheduler::RendererScheduler* renderer_scheduler)
54 : task_runner_(task_runner), 54 : task_runner_(task_runner),
55 client_(client), 55 client_(client),
56 synchronous_handler_proxy_client_(sync_handler_client), 56 synchronous_handler_proxy_client_(sync_handler_client),
57 renderer_scheduler_(renderer_scheduler) { 57 renderer_scheduler_(renderer_scheduler) {
58 DCHECK(client_); 58 DCHECK(client_);
59 client_->SetBoundHandler(base::Bind(&InputHandlerManager::HandleInputEvent, 59 client_->SetInputHandlerManager(this);
60 base::Unretained(this)));
61 } 60 }
62 61
63 InputHandlerManager::~InputHandlerManager() { 62 InputHandlerManager::~InputHandlerManager() {
64 client_->SetBoundHandler(InputHandlerManagerClient::Handler()); 63 client_->SetInputHandlerManager(nullptr);
65 } 64 }
66 65
67 void InputHandlerManager::AddInputHandler( 66 void InputHandlerManager::AddInputHandler(
68 int routing_id, 67 int routing_id,
69 const base::WeakPtr<cc::InputHandler>& input_handler, 68 const base::WeakPtr<cc::InputHandler>& input_handler,
70 const base::WeakPtr<RenderViewImpl>& render_view_impl, 69 const base::WeakPtr<RenderViewImpl>& render_view_impl,
71 bool enable_smooth_scrolling) { 70 bool enable_smooth_scrolling) {
72 if (task_runner_->BelongsToCurrentThread()) { 71 if (task_runner_->BelongsToCurrentThread()) {
73 AddInputHandlerOnCompositorThread( 72 AddInputHandlerOnCompositorThread(
74 routing_id, base::ThreadTaskRunnerHandle::Get(), input_handler, 73 routing_id, base::ThreadTaskRunnerHandle::Get(), input_handler,
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 gesture_event, scroll_result); 185 gesture_event, scroll_result);
187 } 186 }
188 187
189 void InputHandlerManager::NotifyInputEventHandledOnMainThread( 188 void InputHandlerManager::NotifyInputEventHandledOnMainThread(
190 int routing_id, 189 int routing_id,
191 blink::WebInputEvent::Type type, 190 blink::WebInputEvent::Type type,
192 InputEventAckState ack_result) { 191 InputEventAckState ack_result) {
193 client_->NotifyInputEventHandled(routing_id, type, ack_result); 192 client_->NotifyInputEventHandled(routing_id, type, ack_result);
194 } 193 }
195 194
195 void InputHandlerManager::ProcessRafAlignedInputOnMainThread(int routing_id) {
196 client_->ProcessRafAlignedInput(routing_id);
197 }
198
196 InputEventAckState InputHandlerManager::HandleInputEvent( 199 InputEventAckState InputHandlerManager::HandleInputEvent(
197 int routing_id, 200 int routing_id,
198 const WebInputEvent* input_event, 201 const WebInputEvent* input_event,
199 ui::LatencyInfo* latency_info) { 202 ui::LatencyInfo* latency_info) {
200 DCHECK(task_runner_->BelongsToCurrentThread()); 203 DCHECK(task_runner_->BelongsToCurrentThread());
201 TRACE_EVENT1("input,benchmark,rail", "InputHandlerManager::HandleInputEvent", 204 TRACE_EVENT1("input,benchmark,rail", "InputHandlerManager::HandleInputEvent",
202 "type", ui::WebInputEventTraits::GetName(input_event->type)); 205 "type", ui::WebInputEventTraits::GetName(input_event->type));
203 206
204 auto it = input_handlers_.find(routing_id); 207 auto it = input_handlers_.find(routing_id);
205 if (it == input_handlers_.end()) { 208 if (it == input_handlers_.end()) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 } 244 }
242 245
243 void InputHandlerManager::DidStopFlinging(int routing_id) { 246 void InputHandlerManager::DidStopFlinging(int routing_id) {
244 client_->DidStopFlinging(routing_id); 247 client_->DidStopFlinging(routing_id);
245 } 248 }
246 249
247 void InputHandlerManager::DidAnimateForInput() { 250 void InputHandlerManager::DidAnimateForInput() {
248 renderer_scheduler_->DidAnimateForInputOnCompositorThread(); 251 renderer_scheduler_->DidAnimateForInputOnCompositorThread();
249 } 252 }
250 253
254 void InputHandlerManager::NeedsMainFrame(int routing_id) {
255 DCHECK(task_runner_->BelongsToCurrentThread());
256 auto it = input_handlers_.find(routing_id);
257 if (it == input_handlers_.end())
258 return;
259 it->second->NeedsMainFrame();
260 }
261
251 } // namespace content 262 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698