| 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 14cbb17a9a880b876a4af24abb469dd613fd04cc..cb4d4fc9a6206a6ac0c21db7722de8462298adb6 100644
|
| --- a/android_webview/renderer/aw_render_view_ext.cc
|
| +++ b/android_webview/renderer/aw_render_view_ext.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/bind.h"
|
| #include "base/strings/string_piece.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "base/time/time.h"
|
| #include "content/public/common/url_constants.h"
|
| #include "content/public/renderer/android_content_detection_prefixes.h"
|
| #include "content/public/renderer/document_state.h"
|
| @@ -214,6 +215,15 @@ void AwRenderViewExt::DidCommitCompositorFrame() {
|
| UpdatePageScaleFactor();
|
| }
|
|
|
| +void AwRenderViewExt::DidUpdateLayout() {
|
| + if (check_contents_size_timer_.IsRunning())
|
| + return;
|
| +
|
| + check_contents_size_timer_.Start(FROM_HERE,
|
| + base::TimeDelta::FromMilliseconds(0), this,
|
| + &AwRenderViewExt::CheckContentsSize);
|
| +}
|
| +
|
| void AwRenderViewExt::UpdatePageScaleFactor() {
|
| if (page_scale_factor_ != render_view()->GetWebView()->pageScaleFactor()) {
|
| page_scale_factor_ = render_view()->GetWebView()->pageScaleFactor();
|
| @@ -222,6 +232,29 @@ void AwRenderViewExt::UpdatePageScaleFactor() {
|
| }
|
| }
|
|
|
| +void AwRenderViewExt::CheckContentsSize() {
|
| + if (!render_view()->GetWebView())
|
| + return;
|
| +
|
| + gfx::Size contents_size;
|
| +
|
| + WebKit::WebFrame* main_frame = render_view()->GetWebView()->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();
|
| + }
|
| +
|
| + if (contents_size == last_sent_contents_size_)
|
| + return;
|
| +
|
| + last_sent_contents_size_ = contents_size;
|
| + Send(new AwViewHostMsg_OnContentsSizeChanged(routing_id(), contents_size));
|
| +}
|
| +
|
| void AwRenderViewExt::Navigate(const GURL& url) {
|
| // Navigate is called only on NEW navigations, so WebImageCache won't be freed
|
| // when the user just clicks on links, but only when a navigation is started,
|
|
|