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 CHROME_BROWSER_UI_VIEWS_FRAME_CONTENTS_LAYOUT_MANAGER_H_
6#define CHROME_BROWSER_UI_VIEWS_FRAME_CONTENTS_LAYOUT_MANAGER_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "chrome/browser/devtools/devtools_contents_resizing_strategy.h"
11#include "ui/views/layout/layout_manager.h"
12
13// ContentsLayoutManager positions the WebContents and devtools WebContents.
14class ContentsLayoutManager : public views::LayoutManager {
15 public:
16  ContentsLayoutManager(views::View* devtools_view, views::View* contents_view);
17  virtual ~ContentsLayoutManager();
18
19  // Sets the active top margin; both devtools_view and contents_view will be
20  // pushed down vertically by |margin|.
21  void SetActiveTopMargin(int margin);
22
23  // Sets the contents resizing strategy.
24  void SetContentsResizingStrategy(
25      const DevToolsContentsResizingStrategy& strategy);
26
27  // views::LayoutManager overrides:
28  virtual void Layout(views::View* host) OVERRIDE;
29  virtual gfx::Size GetPreferredSize(const views::View* host) const OVERRIDE;
30  virtual void Installed(views::View* host) OVERRIDE;
31  virtual void Uninstalled(views::View* host) OVERRIDE;
32
33 private:
34  views::View* devtools_view_;
35  views::View* contents_view_;
36
37  views::View* host_;
38
39  DevToolsContentsResizingStrategy strategy_;
40  int active_top_margin_;
41
42  DISALLOW_COPY_AND_ASSIGN(ContentsLayoutManager);
43};
44
45#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_CONTENTS_LAYOUT_MANAGER_H_
46