Upstream version 5.34.98.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / frame / browser_desktop_root_window_host_win.h
1 // Copyright (c) 2012 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_BROWSER_DESKTOP_ROOT_WINDOW_HOST_WIN_H_
6 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_ROOT_WINDOW_HOST_WIN_H_
7
8 #include <windows.h>
9 #include <uxtheme.h>
10
11 #include "ui/views/widget/desktop_aura/desktop_root_window_host_win.h"
12 #include "chrome/browser/ui/views/frame/browser_desktop_root_window_host.h"
13 #include "chrome/browser/ui/views/frame/minimize_button_metrics_win.h"
14
15 class BrowserFrame;
16 class BrowserView;
17 class BrowserWindowPropertyManager;
18
19 namespace views {
20 class DesktopNativeWidgetAura;
21 class NativeMenuWin;
22 }
23
24 class BrowserDesktopWindowTreeHostWin : public BrowserDesktopWindowTreeHost,
25                                         public views::DesktopWindowTreeHostWin {
26  public:
27   BrowserDesktopWindowTreeHostWin(
28       views::internal::NativeWidgetDelegate* native_widget_delegate,
29       views::DesktopNativeWidgetAura* desktop_native_widget_aura,
30       BrowserView* browser_view,
31       BrowserFrame* browser_frame);
32   virtual ~BrowserDesktopWindowTreeHostWin();
33
34  private:
35   views::NativeMenuWin* GetSystemMenu();
36
37   // Overridden from BrowserDesktopWindowTreeHost:
38   virtual DesktopWindowTreeHost* AsDesktopWindowTreeHost() OVERRIDE;
39   virtual int GetMinimizeButtonOffset() const OVERRIDE;
40   virtual bool UsesNativeSystemMenu() const OVERRIDE;
41
42   // Overridden from DesktopWindowTreeHostWin:
43   virtual int GetInitialShowState() const OVERRIDE;
44   virtual bool GetClientAreaInsets(gfx::Insets* insets) const OVERRIDE;
45   virtual void HandleCreate() OVERRIDE;
46   virtual void HandleFrameChanged() OVERRIDE;
47   virtual bool PreHandleMSG(UINT message,
48                             WPARAM w_param,
49                             LPARAM l_param,
50                             LRESULT* result) OVERRIDE;
51   virtual void PostHandleMSG(UINT message,
52                              WPARAM w_param,
53                              LPARAM l_param) OVERRIDE;
54   virtual bool IsUsingCustomFrame() const OVERRIDE;
55   virtual bool ShouldUseNativeFrame() OVERRIDE;
56   virtual void FrameTypeChanged() OVERRIDE;
57
58   void UpdateDWMFrame();
59
60   MARGINS GetDWMFrameMargins() const;
61
62   BrowserView* browser_view_;
63   BrowserFrame* browser_frame_;
64
65   MinimizeButtonMetrics minimize_button_metrics_;
66
67   scoped_ptr<BrowserWindowPropertyManager> browser_window_property_manager_;
68
69   // The wrapped system menu itself.
70   scoped_ptr<views::NativeMenuWin> system_menu_;
71
72   // Necessary to avoid corruption on NC paint in Aero mode.
73   bool did_gdi_clear_;
74
75   DISALLOW_COPY_AND_ASSIGN(BrowserDesktopWindowTreeHostWin);
76 };
77
78
79 #endif  // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_DESKTOP_ROOT_WINDOW_HOST_WIN_H_