Plumb through useUnfortunateSynchronousResizeMode.

This is a second side of Blink's r160382. It adds capability
to switch between normal resizing and the synchronous (the unfortunate) one.

BUG=309760
R=jam, jochen

Review URL: https://codereview.chromium.org/38463002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@230881 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 82840dc..befb19c 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -41,6 +41,7 @@
 #include "content/renderer/render_process.h"
 #include "content/renderer/render_thread_impl.h"
 #include "content/renderer/renderer_webkitplatformsupport_impl.h"
+#include "content/renderer/resizing_mode_selector.h"
 #include "ipc/ipc_sync_message.h"
 #include "skia/ext/platform_canvas.h"
 #include "third_party/WebKit/public/platform/WebGraphicsContext3D.h"
@@ -315,30 +316,6 @@
   params->y *= scale_;
 }
 
-// RenderWidget::ResizingModeSelector ------------------------------------------
-
-class RenderWidget::ResizingModeSelector {
- public:
-  static bool ShouldAbortOnResize(RenderWidget* widget,
-                                  const ViewMsg_Resize_Params& params);
-  static bool IsLegacyMode();
-};
-
-bool RenderWidget::ResizingModeSelector::ShouldAbortOnResize(
-    RenderWidget* widget,
-    const ViewMsg_Resize_Params& params) {
-  return RenderThreadImpl::current() &&
-      RenderThreadImpl::current()->layout_test_mode() &&
-      params.is_fullscreen == widget->is_fullscreen_ &&
-      params.screen_info.deviceScaleFactor ==
-        widget->screen_info_.deviceScaleFactor;
-}
-
-bool RenderWidget::ResizingModeSelector::IsLegacyMode() {
-  return RenderThreadImpl::current() && // Will be NULL during unit tests.
-      RenderThreadImpl::current()->layout_test_mode();
-}
-
 // RenderWidget ---------------------------------------------------------------
 
 RenderWidget::RenderWidget(WebKit::WebPopupType popup_type,
@@ -387,6 +364,7 @@
       outstanding_ime_acks_(0),
 #endif
       popup_origin_scale_for_emulation_(0.f),
+      resizing_mode_selector_(new ResizingModeSelector()),
       weak_ptr_factory_(this) {
   if (!swapped_out)
     RenderProcess::current()->AddRefProcess();
@@ -658,7 +636,7 @@
                           const gfx::Rect& resizer_rect,
                           bool is_fullscreen,
                           ResizeAck resize_ack) {
-  if (!ResizingModeSelector::IsLegacyMode()) {
+  if (!resizing_mode_selector_->is_synchronous_mode()) {
     // A resize ack shouldn't be requested if we have not ACK'd the previous
     // one.
     DCHECK(resize_ack != SEND_RESIZE_ACK || !next_paint_is_resize_ack());
@@ -697,12 +675,12 @@
     // send an ACK if we are resized to a non-empty rect.
     webwidget_->resize(new_size);
 
-    if (!ResizingModeSelector::IsLegacyMode()) {
+    if (!resizing_mode_selector_->is_synchronous_mode()) {
       // Resize should have caused an invalidation of the entire view.
       DCHECK(new_size.IsEmpty() || is_accelerated_compositing_active_ ||
              paint_aggregator_.HasPendingUpdate());
     }
-  } else if (!ResizingModeSelector::IsLegacyMode()) {
+  } else if (!resizing_mode_selector_->is_synchronous_mode()) {
     resize_ack = NO_RESIZE_ACK;
   }
 
@@ -754,7 +732,7 @@
 }
 
 void RenderWidget::OnResize(const ViewMsg_Resize_Params& params) {
-  if (ResizingModeSelector::ShouldAbortOnResize(this, params))
+  if (resizing_mode_selector_->ShouldAbortOnResize(this, params))
     return;
 
   if (screen_metrics_emulator_) {
@@ -1767,7 +1745,7 @@
     // with invalid damage rects.
     paint_aggregator_.ClearPendingUpdate();
 
-    if (ResizingModeSelector::IsLegacyMode()) {
+    if (resizing_mode_selector_->is_synchronous_mode()) {
       WebRect new_pos(rootWindowRect().x,
                       rootWindowRect().y,
                       new_size.width,
@@ -1778,7 +1756,7 @@
 
     AutoResizeCompositor();
 
-    if (!ResizingModeSelector::IsLegacyMode())
+    if (!resizing_mode_selector_->is_synchronous_mode())
       need_update_rect_for_auto_resize_ = true;
   }
 }
@@ -2029,7 +2007,7 @@
         (pos.y - popup_view_origin_for_emulation_.y()) * scale;
   }
 
-  if (!ResizingModeSelector::IsLegacyMode()) {
+  if (!resizing_mode_selector_->is_synchronous_mode()) {
     if (did_show_) {
       Send(new ViewHostMsg_RequestMove(routing_id_, pos));
       SetPendingWindowRect(pos);