15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_H_
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserFrame;
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserView;
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Rect;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DesktopNativeWidgetAura;
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class DesktopWindowTreeHost;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace internal {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NativeWidgetDelegate;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Interface to a platform specific browser frame implementation. The object
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// implementing this interface will also implement views::DesktopWindowTreeHost.
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class BrowserDesktopWindowTreeHost {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // BDRWH is owned by the RootWindow.
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  static BrowserDesktopWindowTreeHost* CreateBrowserDesktopWindowTreeHost(
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      views::internal::NativeWidgetDelegate* native_widget_delegate,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      views::DesktopNativeWidgetAura* desktop_native_widget_aura,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BrowserView* browser_view,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BrowserFrame* browser_frame);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual views::DesktopWindowTreeHost* AsDesktopWindowTreeHost() = 0;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int GetMinimizeButtonOffset() const = 0;
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Returns true if the OS takes care of showing the system menu. Returning
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // false means BrowserFrame handles showing the system menu.
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool UsesNativeSystemMenu() const = 0;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_WINDOW_TREE_HOST_H_
43