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

Unified Diff: content/renderer/browser_plugin/browser_plugin.cc

Issue 23499003: Improve <webview> autosize: (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 4 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
Index: content/renderer/browser_plugin/browser_plugin.cc
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc
index 23537a542313561bfda7288586037934c11fa211..46181fc7cf39d1d63392be13bed61a3c47a00b5a 100644
--- a/content/renderer/browser_plugin/browser_plugin.cc
+++ b/content/renderer/browser_plugin/browser_plugin.cc
@@ -321,6 +321,7 @@ void BrowserPlugin::UpdateGuestAutoSizeState(bool current_auto_size) {
if (current_auto_size) {
GetDamageBufferWithSizeParams(&auto_size_params, &resize_guest_params);
} else {
+ last_seen_auto_view_size_ = gfx::Size();
GetDamageBufferWithSizeParams(NULL, &resize_guest_params);
}
resize_ack_received_ = false;
@@ -508,7 +509,21 @@ void BrowserPlugin::OnUpdateRect(
auto_size_ack_pending_ = false;
- if ((!auto_size && (width() != params.view_size.width() ||
+ bool needs_new_damage_buffer = false;
+ if (auto_size && !params.view_size.IsEmpty()) {
+ if (params.view_size.width() > last_seen_auto_view_size_.width() ||
+ params.view_size.height() > last_seen_auto_view_size_.height()) {
+ // The width or height of the view size increased, so we would need new
+ // damage buffer to hold increased pixels.
+ needs_new_damage_buffer = true;
Fady Samuel 2013/08/27 14:16:18 I don't understand this fix. We set the damage buf
lazyboy 2013/08/27 23:22:17 As discussed offline, the CL changed quite a bit a
+ // A repaint is necessary to receive a UpdateRect for new size.
+ resize_guest_params.repaint = true;
+ }
+ last_seen_auto_view_size_ = params.view_size;
+ }
+
+ if (needs_new_damage_buffer ||
+ (!auto_size && (width() != params.view_size.width() ||
height() != params.view_size.height())) ||
(auto_size && (!InAutoSizeBounds(params.view_size))) ||
GetDeviceScaleFactor() != params.scale_factor) {

Powered by Google App Engine
This is Rietveld 408576698