| Index: content/browser/renderer_host/render_widget_host.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host.cc b/content/browser/renderer_host/render_widget_host.cc
|
| index f636de3c5543a3fa3ca036410b80edab1f99c169..295b90b79112dcca08cec272c42ecc8f7241db51 100644
|
| --- a/content/browser/renderer_host/render_widget_host.cc
|
| +++ b/content/browser/renderer_host/render_widget_host.cc
|
| @@ -89,6 +89,7 @@ RenderWidgetHost::RenderWidgetHost(content::RenderProcessHost* process,
|
| is_accelerated_compositing_active_(false),
|
| repaint_ack_pending_(false),
|
| resize_ack_pending_(false),
|
| + should_auto_resize_(false),
|
| mouse_move_pending_(false),
|
| mouse_wheel_pending_(false),
|
| touch_move_pending_(false),
|
| @@ -332,7 +333,7 @@ void RenderWidgetHost::WasRestored() {
|
|
|
| void RenderWidgetHost::WasResized() {
|
| if (resize_ack_pending_ || !process_->HasConnection() || !view_ ||
|
| - !renderer_initialized_) {
|
| + !renderer_initialized_ || should_auto_resize_) {
|
| return;
|
| }
|
|
|
| @@ -868,6 +869,20 @@ bool RenderWidgetHost::IsFullscreen() const {
|
| return false;
|
| }
|
|
|
| +void RenderWidgetHost::SetShouldAutoResize(bool enable) {
|
| + // Note if this switches from true to false then one has to verify that the
|
| + // mechanics about all the messaging works. For example, what happens to a
|
| + // update message rect that was in progress from the render widget. Perhaps,
|
| + // on a transition to false, this should do a WasResized, but what if that
|
| + // will not trigger a resize message...etc. Due to these complications it is
|
| + // fitting that this method doesn't look like a simple set method.
|
| + DCHECK(enable);
|
| +
|
| + // TODO: Change this to enable instead of true when this supports turning
|
| + // off auto-resize.
|
| + should_auto_resize_ = true;
|
| +}
|
| +
|
| void RenderWidgetHost::Destroy() {
|
| content::NotificationService::current()->Notify(
|
| content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED,
|
| @@ -991,11 +1006,13 @@ void RenderWidgetHost::OnMsgUpdateRect(
|
|
|
| // resize_ack_pending_ needs to be cleared before we call DidPaintRect, since
|
| // that will end up reaching GetBackingStore.
|
| - if (is_resize_ack) {
|
| - DCHECK(resize_ack_pending_);
|
| - resize_ack_pending_ = false;
|
| - in_flight_size_.SetSize(0, 0);
|
| - in_flight_reserved_rect_.SetRect(0, 0, 0, 0);
|
| + if (is_resize_ack || should_auto_resize_) {
|
| + if (is_resize_ack) {
|
| + DCHECK(resize_ack_pending_);
|
| + resize_ack_pending_ = false;
|
| + in_flight_size_.SetSize(0, 0);
|
| + in_flight_reserved_rect_.SetRect(0, 0, 0, 0);
|
| + }
|
| // Update our knowledge of the RenderWidget's resizer rect.
|
| // ViewMsg_Resize is acknowledged only when view size is actually changed,
|
| // otherwise current_reserved_rect_ is updated immediately after sending
|
| @@ -1056,6 +1073,10 @@ void RenderWidgetHost::OnMsgUpdateRect(
|
| DidUpdateBackingStore(params, paint_start);
|
| }
|
|
|
| + if (should_auto_resize_) {
|
| + OnRenderAutoResized(params.view_size);
|
| + }
|
| +
|
| // Log the time delta for processing a paint message. On platforms that don't
|
| // support asynchronous painting, this is equivalent to
|
| // MPArch.RWH_TotalPaintTime.
|
|
|