Introduce the concept of RAF aligned input events to the MainThreadEventQueue.
Currently behind a feature flag and is disabled.

Short Design Doc:

https://docs.google.com/document/d/1aM9AqyYuceRHOmsJZXFKcgi_D4jvFAymYvI36OEwIpI/edit?usp=sharing

BUG=625693

Review-Url: https://codereview.chromium.org/2166703003
Cr-Commit-Position: refs/heads/master@{#415099}
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index cb2afbc..da72e2c 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -695,6 +695,13 @@
                     RenderWidgetSetFocus(enable));
 }
 
+void RenderWidget::SetNeedsMainFrame() {
+  RenderWidgetCompositor* rwc = compositor();
+  if (!rwc)
+    return;
+  rwc->setNeedsBeginFrame();
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 // RenderWidgetCompositorDelegate
 
@@ -710,6 +717,13 @@
 }
 
 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_);
+
   webwidget_->beginFrame(frame_time_sec);
 }