Index: content/browser/renderer_host/render_widget_host_view_aura.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc |
index f7b27291f734aa7e6341222273a5ed98a03c6d15..ddc4d5ca377bf66d58c13d825cf49e9e638413be 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc |
@@ -464,6 +464,7 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host, |
has_snapped_to_boundary_(false), |
touch_editing_client_(NULL), |
is_guest_view_hack_(is_guest_view_hack), |
+ begin_frame_observer_proxy_(this), |
weak_ptr_factory_(this) { |
if (!is_guest_view_hack_) |
host_->SetView(this); |
@@ -493,6 +494,8 @@ bool RenderWidgetHostViewAura::OnMessageReceived( |
// RenderWidgetHostViewAndroid should also be moved at the same time. |
IPC_MESSAGE_HANDLER(ViewHostMsg_TextInputStateChanged, |
OnTextInputStateChanged) |
+ IPC_MESSAGE_HANDLER(ViewHostMsg_SetNeedsBeginFrames, |
+ OnSetNeedsBeginFrames) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
return handled; |
@@ -722,6 +725,15 @@ ui::TextInputClient* RenderWidgetHostViewAura::GetTextInputClient() { |
return this; |
} |
+void RenderWidgetHostViewAura::OnSetNeedsBeginFrames(bool needs_begin_frames) { |
+ begin_frame_observer_proxy_.SetNeedsBeginFrames(needs_begin_frames); |
+} |
+ |
+void RenderWidgetHostViewAura::SendBeginFrame(const cc::BeginFrameArgs& args) { |
+ delegated_frame_host_->SetVSyncParameters(args.frame_time, args.interval); |
+ host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); |
+} |
+ |
void RenderWidgetHostViewAura::SetKeyboardFocus() { |
#if defined(OS_WIN) |
if (CanFocus()) { |
@@ -2650,6 +2662,8 @@ void RenderWidgetHostViewAura::AddedToRootWindow() { |
#endif |
delegated_frame_host_->SetCompositor(window_->GetHost()->compositor()); |
+ if (window_->GetHost()->compositor()) |
+ begin_frame_observer_proxy_.SetCompositor(window_->GetHost()->compositor()); |
} |
void RenderWidgetHostViewAura::RemovingFromRootWindow() { |
@@ -2662,6 +2676,7 @@ void RenderWidgetHostViewAura::RemovingFromRootWindow() { |
window_->GetHost()->RemoveObserver(this); |
delegated_frame_host_->ResetCompositor(); |
+ begin_frame_observer_proxy_.ResetCompositor(); |
#if defined(OS_WIN) |
// Update the legacy window's parent temporarily to the desktop window. It |