Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2108)

Unified Diff: android_webview/renderer/aw_render_view_ext.cc

Issue 23899004: Use contents size for android_webview layout. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « android_webview/renderer/aw_render_view_ext.h ('k') | content/public/renderer/render_view_observer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 c925425f2824879fc208e4ecbe7e40651e9fdcf7..908d48a6e1046462d7d82d850879df76df139eb5 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"
@@ -215,6 +216,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();
@@ -223,6 +233,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,
« no previous file with comments | « android_webview/renderer/aw_render_view_ext.h ('k') | content/public/renderer/render_view_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698