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

Unified Diff: content/renderer/render_widget.cc

Issue 2813683002: Allow MainThreadEventQueue to call the RenderWidget directly. (Closed)
Patch Set: Fix style nits Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_widget.cc
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index b2a13c0bb0704ce297b6d80cf630699e6e051820..c3d32c312fb94e13124fe7cb0ede403e2cd3c20d 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -53,6 +53,7 @@
#include "content/renderer/gpu/render_widget_compositor.h"
#include "content/renderer/ime_event_guard.h"
#include "content/renderer/input/input_handler_manager.h"
+#include "content/renderer/input/main_thread_event_queue.h"
#include "content/renderer/pepper/pepper_plugin_instance_impl.h"
#include "content/renderer/render_frame_impl.h"
#include "content/renderer/render_frame_proxy.h"
@@ -401,6 +402,9 @@ RenderWidget::RenderWidget(int32_t widget_routing_id,
RenderWidget::~RenderWidget() {
DCHECK(!webwidget_internal_) << "Leaking our WebWidget!";
+ if (input_event_queue_)
+ input_event_queue_->ClearClient();
+
// If we are swapped out, we have released already.
if (!is_swapped_out_ && RenderProcess::current())
RenderProcess::current()->ReleaseProcess();
@@ -818,6 +822,22 @@ void RenderWidget::OnHandleInputEvent(
latency_info, dispatch_type);
}
+InputEventAckState RenderWidget::HandleInputEvent(
+ const blink::WebCoalescedInputEvent& input_event,
+ const ui::LatencyInfo& latency_info,
+ InputEventDispatchType dispatch_type) {
+ return input_handler_->HandleInputEvent(input_event, latency_info,
+ dispatch_type);
+}
+
+void RenderWidget::SendInputEventAck(blink::WebInputEvent::Type type,
+ InputEventAckState ack_result,
+ uint32_t touch_event_id) {
+ InputEventAck ack(InputEventAckSource::MAIN_THREAD, type, ack_result,
+ touch_event_id);
+ Send(new InputHostMsg_HandleInputEvent_ACK(routing_id_, ack));
+}
+
void RenderWidget::OnCursorVisibilityChange(bool is_visible) {
if (GetWebWidget())
GetWebWidget()->SetCursorVisibilityState(is_visible);
@@ -872,13 +892,10 @@ void RenderWidget::RecordWheelAndTouchScrollingCount(
}
void RenderWidget::BeginMainFrame(double frame_time_sec) {
- RenderThreadImpl* render_thread = RenderThreadImpl::current();
- // render_thread may be NULL in tests.
- InputHandlerManager* input_handler_manager =
- render_thread ? render_thread->input_handler_manager() : NULL;
- if (input_handler_manager)
- input_handler_manager->ProcessRafAlignedInputOnMainThread(
- routing_id_, ui::EventTimeStampFromSeconds(frame_time_sec));
+ if (input_event_queue_) {
+ input_event_queue_->DispatchRafAlignedInput(
+ ui::EventTimeStampFromSeconds(frame_time_sec));
+ }
GetWebWidget()->BeginFrame(frame_time_sec);
}
@@ -1045,19 +1062,6 @@ void RenderWidget::OnInputEventAck(
new InputHostMsg_HandleInputEvent_ACK(routing_id_, *input_event_ack));
}
-void RenderWidget::NotifyInputEventHandled(
- blink::WebInputEvent::Type handled_type,
- blink::WebInputEventResult result,
- InputEventAckState ack_result) {
- RenderThreadImpl* render_thread = RenderThreadImpl::current();
- InputHandlerManager* input_handler_manager =
- render_thread ? render_thread->input_handler_manager() : NULL;
- if (input_handler_manager) {
- input_handler_manager->NotifyInputEventHandledOnMainThread(
- routing_id_, handled_type, result, ack_result);
- }
-}
-
void RenderWidget::SetInputHandler(RenderWidgetInputHandler* input_handler) {
// Nothing to do here. RenderWidget created the |input_handler| and will take
// ownership of it. We just verify here that we don't already have an input
@@ -1321,8 +1325,11 @@ blink::WebLayerTreeView* RenderWidget::InitializeLayerTreeView() {
InputHandlerManager* input_handler_manager =
render_thread ? render_thread->input_handler_manager() : NULL;
if (input_handler_manager) {
+ input_event_queue_ = new MainThreadEventQueue(
+ this, render_thread->GetRendererScheduler()->CompositorTaskRunner(),
+ render_thread->GetRendererScheduler());
input_handler_manager->AddInputHandler(
- routing_id_, compositor()->GetInputHandler(),
+ routing_id_, compositor()->GetInputHandler(), input_event_queue_,
weak_ptr_factory_.GetWeakPtr(),
compositor_deps_->IsScrollAnimatorEnabled());
has_added_input_handler_ = true;
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698