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) { |