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 f6796a9bc023e670eb0c5710eb2b5fa420c9346a..1661d36c1f8cbea92d1f938f2e64258d6bd2a558 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc |
@@ -366,8 +366,8 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host, |
in_shutdown_(false), |
in_bounds_changed_(false), |
is_fullscreen_(false), |
- popup_parent_host_view_(NULL), |
- popup_child_host_view_(NULL), |
+ popup_parent_host_view_(nullptr), |
+ popup_child_host_view_(nullptr), |
is_loading_(false), |
text_input_type_(ui::TEXT_INPUT_TYPE_NONE), |
text_input_mode_(ui::TEXT_INPUT_MODE_DEFAULT), |
@@ -375,15 +375,16 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host, |
can_compose_inline_(true), |
has_composition_text_(false), |
accept_return_character_(false), |
+ begin_frame_source_(nullptr), |
+ needs_begin_frames_(false), |
synthetic_move_sent_(false), |
cursor_visibility_state_in_renderer_(UNKNOWN), |
#if defined(OS_WIN) |
- legacy_render_widget_host_HWND_(NULL), |
+ legacy_render_widget_host_HWND_(nullptr), |
legacy_window_destroyed_(false), |
#endif |
has_snapped_to_boundary_(false), |
is_guest_view_hack_(is_guest_view_hack), |
- begin_frame_observer_proxy_(this), |
set_focus_on_mouse_down_or_key_event_(false), |
device_scale_factor_(0.0f), |
disable_input_event_router_for_testing_(false), |
@@ -656,12 +657,29 @@ ui::TextInputClient* RenderWidgetHostViewAura::GetTextInputClient() { |
} |
void RenderWidgetHostViewAura::OnSetNeedsBeginFrames(bool needs_begin_frames) { |
- begin_frame_observer_proxy_.SetNeedsBeginFrames(needs_begin_frames); |
+ if (needs_begin_frames_ == needs_begin_frames) |
+ return; |
+ |
+ needs_begin_frames_ = needs_begin_frames; |
+ if (begin_frame_source_) { |
+ if (needs_begin_frames_) |
+ begin_frame_source_->AddObserver(this); |
+ else |
+ begin_frame_source_->RemoveObserver(this); |
+ } |
} |
-void RenderWidgetHostViewAura::SendBeginFrame(const cc::BeginFrameArgs& args) { |
+bool RenderWidgetHostViewAura::OnBeginFrameDerivedImpl( |
+ const cc::BeginFrameArgs& args) { |
delegated_frame_host_->SetVSyncParameters(args.frame_time, args.interval); |
host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); |
+ return true; |
+} |
+ |
+void RenderWidgetHostViewAura::OnBeginFrameSourcePausedChanged(bool paused) { |
+ // Ignored for now. If the begin frame source is paused, the renderer |
+ // doesn't need to be informed about it and will just not receive more |
+ // begin frames. |
} |
void RenderWidgetHostViewAura::SetKeyboardFocus() { |
@@ -2648,8 +2666,6 @@ 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,7 +2678,6 @@ 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 |
@@ -2903,6 +2918,15 @@ void RenderWidgetHostViewAura::DelegatedFrameHostUpdateVSyncParameters( |
host_->UpdateVSyncParameters(timebase, interval); |
} |
+void RenderWidgetHostViewAura::SetBeginFrameSource( |
+ cc::BeginFrameSource* source) { |
+ if (begin_frame_source_ && needs_begin_frames_) |
+ begin_frame_source_->RemoveObserver(this); |
+ begin_frame_source_ = source; |
+ if (begin_frame_source_ && needs_begin_frames_) |
+ begin_frame_source_->AddObserver(this); |
+} |
+ |
void RenderWidgetHostViewAura::OnDidNavigateMainFrameToNewPage() { |
ui::GestureRecognizer::Get()->CancelActiveTouches(window_); |
} |