Index: android_webview/renderer/aw_render_view_ext.cc |
diff --git a/android_webview/renderer/aw_render_view_ext.cc b/android_webview/renderer/aw_render_view_ext.cc |
index ee8f14e50136f4d7eb5fece5ad7b113958bace66..48bdd051ae28327fe7c79d670c831b4453706fb0 100644 |
--- a/android_webview/renderer/aw_render_view_ext.cc |
+++ b/android_webview/renderer/aw_render_view_ext.cc |
@@ -188,7 +188,12 @@ void AwRenderViewExt::OnDocumentHasImagesRequest(int id) { |
} |
void AwRenderViewExt::DidCommitCompositorFrame() { |
- UpdatePageScaleFactor(); |
+ if (check_contents_size_timer_.IsRunning()) |
boliu
2015/09/28 18:30:47
no code duplication so close! factor out into a pr
hush (inactive)
2015/09/28 18:34:39
Done.
|
+ return; |
+ |
+ check_contents_size_timer_.Start(FROM_HERE, |
+ base::TimeDelta::FromMilliseconds(0), this, |
+ &AwRenderViewExt::CheckContentsSizeAndScale); |
} |
void AwRenderViewExt::DidUpdateLayout() { |
@@ -197,31 +202,30 @@ void AwRenderViewExt::DidUpdateLayout() { |
check_contents_size_timer_.Start(FROM_HERE, |
base::TimeDelta::FromMilliseconds(0), this, |
- &AwRenderViewExt::CheckContentsSize); |
+ &AwRenderViewExt::CheckContentsSizeAndScale); |
} |
-void AwRenderViewExt::UpdatePageScaleFactor() { |
- if (page_scale_factor_ != render_view()->GetWebView()->pageScaleFactor()) { |
- page_scale_factor_ = render_view()->GetWebView()->pageScaleFactor(); |
+void AwRenderViewExt::CheckContentsSizeAndScale() { |
+ blink::WebView* webview = render_view()->GetWebView(); |
+ if (!webview) |
+ return; |
+ |
+ if (page_scale_factor_ != webview->pageScaleFactor()) { |
+ page_scale_factor_ = webview->pageScaleFactor(); |
Send(new AwViewHostMsg_PageScaleFactorChanged(routing_id(), |
page_scale_factor_)); |
} |
-} |
- |
-void AwRenderViewExt::CheckContentsSize() { |
- if (!render_view()->GetWebView()) |
- return; |
gfx::Size contents_size; |
- blink::WebFrame* main_frame = render_view()->GetWebView()->mainFrame(); |
+ blink::WebFrame* main_frame = webview->mainFrame(); |
if (main_frame) |
contents_size = main_frame->contentsSize(); |
// Fall back to contentsPreferredMinimumSize if the mainFrame is reporting a |
// 0x0 size (this happens during initial load). |
if (contents_size.IsEmpty()) { |
- contents_size = render_view()->GetWebView()->contentsPreferredMinimumSize(); |
+ contents_size = webview->contentsPreferredMinimumSize(); |
} |
if (contents_size == last_sent_contents_size_) |