Index: content/browser/renderer_host/render_widget_host_view_android.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc |
index 337c9bc32dd22fb09fdeaddb1c2e61ecc5d73fd6..eee897f1c206a9455dc2ec7eb7d621117560586c 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_android.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc |
@@ -597,7 +597,23 @@ void RenderWidgetHostViewAndroid::Show() { |
return; |
is_showing_ = true; |
- ShowInternal(); |
+ if (layer_.get()) |
+ layer_->SetHideLayerAndSubtree(false); |
+ |
+ if (overscroll_controller_) |
+ overscroll_controller_->Enable(); |
+ |
+ frame_evictor_->SetVisible(true); |
+ |
+ if (!host_ || !host_->is_hidden()) |
+ return; |
+ |
+ host_->WasShown(ui::LatencyInfo()); |
+ |
+ if (content_view_core_) { |
+ StartObservingRootWindow(); |
+ RequestVSyncUpdate(BEGIN_FRAME); |
+ } |
} |
void RenderWidgetHostViewAndroid::Hide() { |
@@ -605,10 +621,27 @@ void RenderWidgetHostViewAndroid::Hide() { |
return; |
is_showing_ = false; |
+ if (layer_.get() && locks_on_frame_count_ == 0) |
+ layer_->SetHideLayerAndSubtree(true); |
+ |
+ if (overscroll_controller_) |
+ overscroll_controller_->Disable(); |
+ |
+ frame_evictor_->SetVisible(false); |
+ // We don't know if we will ever get a frame if we are hiding the renderer, so |
+ // we need to cancel all requests |
+ AbortPendingReadbackRequests(); |
+ |
+ RunAckCallbacks(cc::SurfaceDrawStatus::DRAW_SKIPPED); |
+ |
+ if (!host_ || host_->is_hidden()) |
+ return; |
- bool hide_frontbuffer = true; |
- bool stop_observing_root_window = true; |
- HideInternal(hide_frontbuffer, stop_observing_root_window); |
+ // Inform the renderer that we are being hidden so it can reduce its resource |
+ // utilization. |
+ host_->WasHidden(); |
+ |
+ StopObservingRootWindow(); |
} |
bool RenderWidgetHostViewAndroid::IsShowing() { |
@@ -1454,57 +1487,6 @@ void RenderWidgetHostViewAndroid::AcceleratedSurfaceInitialized(int route_id) { |
accelerated_surface_route_id_ = route_id; |
} |
-void RenderWidgetHostViewAndroid::ShowInternal() { |
- DCHECK(is_showing_); |
- if (!host_ || !host_->is_hidden()) |
- return; |
- |
- if (layer_.get()) |
- layer_->SetHideLayerAndSubtree(false); |
- |
- frame_evictor_->SetVisible(true); |
- |
- if (overscroll_controller_) |
- overscroll_controller_->Enable(); |
- |
- host_->WasShown(ui::LatencyInfo()); |
- |
- if (content_view_core_) { |
- StartObservingRootWindow(); |
- RequestVSyncUpdate(BEGIN_FRAME); |
- } |
-} |
- |
-void RenderWidgetHostViewAndroid::HideInternal( |
- bool hide_frontbuffer, |
- bool stop_observing_root_window) { |
- if (hide_frontbuffer) { |
- if (layer_.get() && locks_on_frame_count_ == 0) |
- layer_->SetHideLayerAndSubtree(true); |
- |
- frame_evictor_->SetVisible(false); |
- } |
- |
- if (stop_observing_root_window) |
- StopObservingRootWindow(); |
- |
- if (!host_ || host_->is_hidden()) |
- return; |
- |
- if (overscroll_controller_) |
- overscroll_controller_->Disable(); |
- |
- // We don't know if we will ever get a frame if we are hiding the renderer, so |
- // we need to cancel all requests |
- AbortPendingReadbackRequests(); |
- |
- RunAckCallbacks(cc::SurfaceDrawStatus::DRAW_SKIPPED); |
- |
- // Inform the renderer that we are being hidden so it can reduce its resource |
- // utilization. |
- host_->WasHidden(); |
-} |
- |
void RenderWidgetHostViewAndroid::AttachLayers() { |
if (!content_view_core_) |
return; |
@@ -1532,12 +1514,6 @@ void RenderWidgetHostViewAndroid::RemoveLayers() { |
void RenderWidgetHostViewAndroid::RequestVSyncUpdate(uint32 requests) { |
bool should_request_vsync = !outstanding_vsync_requests_ && requests; |
outstanding_vsync_requests_ |= requests; |
- |
- // If the host has been hidden, defer vsync requests until it is shown |
- // again via |Show()|. |
- if (!host_ || host_->is_hidden()) |
- return; |
- |
// Note that if we're not currently observing the root window, outstanding |
// vsync requests will be pushed if/when we resume observing in |
// |StartObservingRootWindow()|. |
@@ -1547,7 +1523,6 @@ void RenderWidgetHostViewAndroid::RequestVSyncUpdate(uint32 requests) { |
void RenderWidgetHostViewAndroid::StartObservingRootWindow() { |
DCHECK(content_view_core_); |
- DCHECK(is_showing_); |
if (observing_root_window_) |
return; |
@@ -1864,8 +1839,7 @@ void RenderWidgetHostViewAndroid::SetContentViewCore( |
if (!content_view_core_) |
return; |
- if (is_showing_) |
- StartObservingRootWindow(); |
+ StartObservingRootWindow(); |
if (resize) |
WasResized(); |
@@ -1906,17 +1880,6 @@ void RenderWidgetHostViewAndroid::OnCompositingDidCommit() { |
RunAckCallbacks(cc::SurfaceDrawStatus::DRAWN); |
} |
-void RenderWidgetHostViewAndroid::OnRootWindowVisibilityChanged(bool visible) { |
- DCHECK(is_showing_); |
- if (visible) { |
- ShowInternal(); |
- } else { |
- bool hide_frontbuffer = true; |
- bool stop_observing_root_window = false; |
- HideInternal(hide_frontbuffer, stop_observing_root_window); |
- } |
-} |
- |
void RenderWidgetHostViewAndroid::OnAttachCompositor() { |
DCHECK(content_view_core_); |
if (!overscroll_controller_) |
@@ -1933,7 +1896,7 @@ void RenderWidgetHostViewAndroid::OnDetachCompositor() { |
void RenderWidgetHostViewAndroid::OnVSync(base::TimeTicks frame_time, |
base::TimeDelta vsync_period) { |
TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnVSync"); |
- if (!host_ || host_->is_hidden()) |
+ if (!host_) |
return; |
if (outstanding_vsync_requests_ & FLUSH_INPUT) { |
@@ -1959,20 +1922,6 @@ void RenderWidgetHostViewAndroid::OnAnimate(base::TimeTicks begin_frame_time) { |
SetNeedsAnimate(); |
} |
-void RenderWidgetHostViewAndroid::OnActivityPaused() { |
- TRACE_EVENT0("browser", "RenderWidgetHostViewAndroid::OnActivityPaused"); |
- DCHECK(is_showing_); |
- bool hide_frontbuffer = false; |
- bool stop_observing_root_window = false; |
- HideInternal(hide_frontbuffer, stop_observing_root_window); |
-} |
- |
-void RenderWidgetHostViewAndroid::OnActivityResumed() { |
- TRACE_EVENT0("browser", "RenderWidgetHostViewAndroid::OnActivityResumed"); |
- DCHECK(is_showing_); |
- ShowInternal(); |
-} |
- |
void RenderWidgetHostViewAndroid::OnLostResources() { |
ReleaseLocksOnSurface(); |
if (layer_.get()) |