Chromium Code Reviews| 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) { |