• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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_FRAME_WIN_H_
6 #define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_WIN_H_
7 #pragma once
8 
9 #include "base/basictypes.h"
10 #include "chrome/browser/ui/views/frame/browser_frame.h"
11 #include "chrome/browser/ui/views/frame/native_browser_frame.h"
12 #include "views/window/window_win.h"
13 
14 class BrowserView;
15 class Profile;
16 
17 ///////////////////////////////////////////////////////////////////////////////
18 // BrowserFrameWin
19 //
20 //  BrowserFrame is a WindowWin subclass that provides the window frame for the
21 //  Chrome browser window.
22 //
23 class BrowserFrameWin : public BrowserFrame,
24                         public views::WindowWin,
25                         public NativeBrowserFrame {
26  public:
27   // Normally you will create this class by calling BrowserFrame::Create.
28   // Init must be called before using this class, which Create will do for you.
29   BrowserFrameWin(BrowserView* browser_view, Profile* profile);
30   virtual ~BrowserFrameWin();
31 
32   // This initialization function must be called after construction, it is
33   // separate to avoid recursive calling of the frame from its constructor.
34   void InitBrowserFrame();
35 
browser_view()36   BrowserView* browser_view() const { return browser_view_; }
37 
38   // Explicitly sets how windows are shown. Use a value of -1 to give the
39   // default behavior. This is used during testing and not generally useful
40   // otherwise.
41   static void SetShowState(int state);
42 
43  protected:
44   // Overridden from views::WindowWin:
45   virtual int GetShowState() const OVERRIDE;
46   virtual gfx::Insets GetClientAreaInsets() const OVERRIDE;
47   virtual bool GetAccelerator(int cmd_id,
48                               ui::Accelerator* accelerator) OVERRIDE;
49   virtual void OnEndSession(BOOL ending, UINT logoff) OVERRIDE;
50   virtual void OnInitMenuPopup(HMENU menu,
51                                UINT position,
52                                BOOL is_system_menu) OVERRIDE;
53   virtual void OnWindowPosChanged(WINDOWPOS* window_pos) OVERRIDE;
54   virtual ui::ThemeProvider* GetThemeProvider() const OVERRIDE;
55   virtual void OnScreenReaderDetected() OVERRIDE;
56 
57   // Overridden from views::Window:
58   virtual void Activate() OVERRIDE;
IsAppWindow()59   virtual bool IsAppWindow() const OVERRIDE { return true; }
60   virtual void UpdateFrameAfterFrameChange() OVERRIDE;
61   virtual views::RootView* CreateRootView() OVERRIDE;
62   virtual views::NonClientFrameView* CreateFrameViewForWindow() OVERRIDE;
63   virtual bool ShouldUseNativeFrame() const OVERRIDE;
64 
65   // Overridden from NativeBrowserFrame:
66   virtual views::NativeWindow* AsNativeWindow() OVERRIDE;
67   virtual const views::NativeWindow* AsNativeWindow() const OVERRIDE;
68   virtual BrowserNonClientFrameView* CreateBrowserNonClientFrameView() OVERRIDE;
69   virtual int GetMinimizeButtonOffset() const OVERRIDE;
70   virtual ui::ThemeProvider* GetThemeProviderForFrame() const OVERRIDE;
71   virtual bool AlwaysUseNativeFrame() const OVERRIDE;
72   virtual void TabStripDisplayModeChanged() OVERRIDE;
73 
74  private:
75   // Updates the DWM with the frame bounds.
76   void UpdateDWMFrame();
77 
78   NativeBrowserFrameDelegate* delegate_;
79 
80   // The BrowserView is our ClientView. This is a pointer to it.
81   BrowserView* browser_view_;
82 
83   DISALLOW_COPY_AND_ASSIGN(BrowserFrameWin);
84 };
85 
86 #endif  // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_WIN_H_
87