Index: android_webview/browser/browser_view_renderer.cc |
diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc |
index 1933de978b19e65d75cb18fd5d4ce022ced96721..b95001f05caac0466a7db3b1d5acdadb3fc79d72 100644 |
--- a/android_webview/browser/browser_view_renderer.cc |
+++ b/android_webview/browser/browser_view_renderer.cc |
@@ -101,6 +101,7 @@ BrowserViewRenderer::BrowserViewRenderer( |
view_visible_(false), |
window_visible_(false), |
attached_to_window_(false), |
+ was_attached_(false), |
hardware_enabled_(false), |
dip_scale_(0.f), |
page_scale_factor_(1.f), |
@@ -444,6 +445,8 @@ void BrowserViewRenderer::OnAttachedToWindow(int width, int height) { |
"height", |
height); |
attached_to_window_ = true; |
+ was_attached_ = true; |
+ |
size_.SetSize(width, height); |
if (offscreen_pre_raster_) |
UpdateMemoryPolicy(); |
@@ -486,7 +489,13 @@ bool BrowserViewRenderer::IsVisible() const { |
} |
bool BrowserViewRenderer::IsClientVisible() const { |
- return !is_paused_ && (!attached_to_window_ || window_visible_); |
+ // When WebView is not paused, we declare it visible even before it is |
+ // attached to window to allow for background operations. If it ever gets |
+ // attached though, the WebView is visible as long as it is attached |
+ // to a window and the window is visible. |
+ return is_paused_ |
+ ? false |
+ : !was_attached_ || (attached_to_window_ && window_visible_); |
} |
gfx::Rect BrowserViewRenderer::GetScreenRect() const { |