1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CONTENT_RENDERER_RESIZING_MODE_SELECTOR_H_ 6#define CONTENT_RENDERER_RESIZING_MODE_SELECTOR_H_ 7 8#include "base/basictypes.h" 9 10struct ViewMsg_Resize_Params; 11 12namespace content { 13 14class RenderWidget; 15 16// Enables switching between two modes of resizing: 17// 1) The "normal" (asynchronous) resizing, which involves sending messages to 18// and receiving them from host; and 19// 2) The synchronous mode, which short-circuits the resizing logic to operate 20// strictly inside renderer. 21// The latter is necessary to support a handful of layout tests that were 22// written with the expectation of a synchronous resize, and we're going to 23// eventually rewrite or remove all of them. See http://crbug.com/309760 for 24// details. 25class ResizingModeSelector { 26 public: 27 ResizingModeSelector(); 28 bool NeverUsesSynchronousResize() const; 29 bool ShouldAbortOnResize(RenderWidget* widget, 30 const ViewMsg_Resize_Params& params); 31 32 void set_is_synchronous_mode(bool mode); 33 bool is_synchronous_mode() const; 34 35 private: 36 bool is_synchronous_mode_; 37 38 DISALLOW_COPY_AND_ASSIGN(ResizingModeSelector); 39}; 40 41} // namespace content 42 43#endif // CONTENT_RENDERER_RESIZING_MODE_SELECTOR_H_ 44