contents_layout_manager.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2013 The Chromium Authors. All rights reserved.
25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be
35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file.
45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_CONTENTS_LAYOUT_MANAGER_H_
65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define CHROME_BROWSER_UI_VIEWS_FRAME_CONTENTS_LAYOUT_MANAGER_H_
75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/basictypes.h"
95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/compiler_specific.h"
105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/devtools/devtools_contents_resizing_strategy.h"
115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/views/layout/layout_manager.h"
125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// ContentsLayoutManager positions the WebContents and devtools WebContents.
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass ContentsLayoutManager : public views::LayoutManager {
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  ContentsLayoutManager(views::View* devtools_view, views::View* contents_view);
175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual ~ContentsLayoutManager();
185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // Sets the active top margin; both devtools_view and contents_view will be
205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // pushed down vertically by |margin|.
215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  void SetActiveTopMargin(int margin);
225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Sets the contents resizing strategy.
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void SetContentsResizingStrategy(
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      const DevToolsContentsResizingStrategy& strategy);
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // views::LayoutManager overrides:
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void Layout(views::View* host) OVERRIDE;
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual gfx::Size GetPreferredSize(views::View* host) OVERRIDE;
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void Installed(views::View* host) OVERRIDE;
315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual void Uninstalled(views::View* host) OVERRIDE;
325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private:
345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  views::View* devtools_view_;
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  views::View* contents_view_;
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  views::View* host_;
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DevToolsContentsResizingStrategy strategy_;
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  int active_top_margin_;
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(ContentsLayoutManager);
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_CONTENTS_LAYOUT_MANAGER_H_
465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu