1 // Copyright 2014 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.
5 #ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_CONTENTS_RESIZING_STRATEGY_H_
6 #define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_CONTENTS_RESIZING_STRATEGY_H_
8 #include "base/basictypes.h"
9 #include "ui/gfx/insets.h"
10 #include "ui/gfx/rect.h"
11 #include "ui/gfx/size.h"
13 // This class knows how to resize both DevTools and inspected WebContents
14 // inside a browser window hierarchy.
15 class DevToolsContentsResizingStrategy
{
17 DevToolsContentsResizingStrategy();
18 DevToolsContentsResizingStrategy(
19 const gfx::Insets
& insets
,
20 const gfx::Size
& min_size
);
21 explicit DevToolsContentsResizingStrategy(const gfx::Rect
& bounds
);
23 void CopyFrom(const DevToolsContentsResizingStrategy
& strategy
);
24 bool Equals(const DevToolsContentsResizingStrategy
& strategy
);
26 const gfx::Insets
& insets() const { return insets_
; }
27 const gfx::Size
& min_size() const { return min_size_
; }
28 const gfx::Rect
& bounds() const { return bounds_
; }
31 // Insets of contents inside DevTools.
34 // Minimum size of contents.
37 // Contents bounds. When non-empty, used instead of insets.
40 DISALLOW_COPY_AND_ASSIGN(DevToolsContentsResizingStrategy
);
43 // Applies contents resizing strategy, producing bounds for devtools and
44 // page contents views. Generally, page contents view is placed atop of devtools
45 // inside a common parent view, which size should be passed in |container_size|.
46 // When unknown, providing empty rect as previous devtools and contents bounds
48 void ApplyDevToolsContentsResizingStrategy(
49 const DevToolsContentsResizingStrategy
& strategy
,
50 const gfx::Size
& container_size
,
51 const gfx::Rect
& old_devtools_bounds
,
52 const gfx::Rect
& old_contents_bounds
,
53 gfx::Rect
* new_devtools_bounds
,
54 gfx::Rect
* new_contents_bounds
);
56 #endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_CONTENTS_RESIZING_STRATEGY_H_