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_CHROME_VIEWS_DELEGATE_H_ 6 #define CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_ 7 8 #include "base/basictypes.h" 9 #include "base/compiler_specific.h" 10 #include "build/build_config.h" 11 #include "ui/accessibility/ax_enums.h" 12 #include "ui/views/views_delegate.h" 13 14 class ChromeViewsDelegate : public views::ViewsDelegate { 15 public: 16 ChromeViewsDelegate(); 17 virtual ~ChromeViewsDelegate(); 18 19 // views::ViewsDelegate: 20 virtual void SaveWindowPlacement(const views::Widget* window, 21 const std::string& window_name, 22 const gfx::Rect& bounds, 23 ui::WindowShowState show_state) OVERRIDE; 24 virtual bool GetSavedWindowPlacement( 25 const views::Widget* widget, 26 const std::string& window_name, 27 gfx::Rect* bounds, 28 ui::WindowShowState* show_state) const OVERRIDE; 29 virtual void NotifyAccessibilityEvent( 30 views::View* view, ui::AXEvent event_type) OVERRIDE; 31 virtual void NotifyMenuItemFocused(const base::string16& menu_name, 32 const base::string16& menu_item_name, 33 int item_index, 34 int item_count, 35 bool has_submenu) OVERRIDE; 36 #if defined(OS_WIN) 37 virtual HICON GetDefaultWindowIcon() const OVERRIDE; 38 virtual bool IsWindowInMetro(gfx::NativeWindow window) const OVERRIDE; 39 #elif defined(OS_LINUX) && !defined(OS_CHROMEOS) 40 virtual gfx::ImageSkia* GetDefaultWindowIcon() const OVERRIDE; 41 #endif 42 43 virtual views::NonClientFrameView* CreateDefaultNonClientFrameView( 44 views::Widget* widget) OVERRIDE; 45 virtual void AddRef() OVERRIDE; 46 virtual void ReleaseRef() OVERRIDE; 47 virtual void OnBeforeWidgetInit( 48 views::Widget::InitParams* params, 49 views::internal::NativeWidgetDelegate* delegate) OVERRIDE; 50 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 51 virtual bool WindowManagerProvidesTitleBar(bool maximized) OVERRIDE; 52 #endif 53 #if defined(USE_AURA) 54 virtual ui::ContextFactory* GetContextFactory() OVERRIDE; 55 #endif 56 #if defined(OS_WIN) 57 virtual int GetAppbarAutohideEdges(HMONITOR monitor, 58 const base::Closure& callback) OVERRIDE; 59 #endif 60 61 private: 62 #if defined(OS_WIN) 63 typedef std::map<HMONITOR, int> AppbarAutohideEdgeMap; 64 65 // Callback on main thread with the edges. |returned_edges| is the value that 66 // was returned from the call to GetAutohideEdges() that initiated the lookup. 67 void OnGotAppbarAutohideEdges(const base::Closure& callback, 68 HMONITOR monitor, 69 int returned_edges, 70 int edges); 71 #endif 72 73 // Function to retrieve default opacity value mainly based on platform 74 // and desktop context. 75 views::Widget::InitParams::WindowOpacity GetOpacityForInitParams( 76 const views::Widget::InitParams& params); 77 78 #if defined(OS_WIN) 79 AppbarAutohideEdgeMap appbar_autohide_edge_map_; 80 base::WeakPtrFactory<ChromeViewsDelegate> weak_factory_; 81 // If true we're in the process of notifying a callback from 82 // GetAutohideEdges().start a new query. 83 bool in_autohide_edges_callback_; 84 #endif 85 86 DISALLOW_COPY_AND_ASSIGN(ChromeViewsDelegate); 87 }; 88 89 #endif // CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_ 90