| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_ |
| #define CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_ |
| |
| #include "base/basictypes.h" |
| #include "base/compiler_specific.h" |
| #include "build/build_config.h" |
| #include "ui/accessibility/ax_enums.h" |
| #include "ui/views/views_delegate.h" |
| |
| class ChromeViewsDelegate : public views::ViewsDelegate { |
| public: |
| ChromeViewsDelegate(); |
| ~ChromeViewsDelegate() override; |
| |
| // views::ViewsDelegate: |
| void SaveWindowPlacement(const views::Widget* window, |
| const std::string& window_name, |
| const gfx::Rect& bounds, |
| ui::WindowShowState show_state) override; |
| bool GetSavedWindowPlacement(const views::Widget* widget, |
| const std::string& window_name, |
| gfx::Rect* bounds, |
| ui::WindowShowState* show_state) const override; |
| void NotifyAccessibilityEvent(views::View* view, |
| ui::AXEvent event_type) override; |
| void NotifyMenuItemFocused(const base::string16& menu_name, |
| const base::string16& menu_item_name, |
| int item_index, |
| int item_count, |
| bool has_submenu) override; |
| #if defined(OS_WIN) |
| virtual HICON GetDefaultWindowIcon() const override; |
| virtual bool IsWindowInMetro(gfx::NativeWindow window) const override; |
| #elif defined(OS_LINUX) && !defined(OS_CHROMEOS) |
| gfx::ImageSkia* GetDefaultWindowIcon() const override; |
| #endif |
| |
| #if defined(USE_ASH) |
| views::NonClientFrameView* CreateDefaultNonClientFrameView( |
| views::Widget* widget) override; |
| #endif |
| void AddRef() override; |
| void ReleaseRef() override; |
| void OnBeforeWidgetInit( |
| views::Widget::InitParams* params, |
| views::internal::NativeWidgetDelegate* delegate) override; |
| #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
| bool WindowManagerProvidesTitleBar(bool maximized) override; |
| #endif |
| #if defined(USE_AURA) |
| ui::ContextFactory* GetContextFactory() override; |
| #endif |
| #if defined(OS_WIN) |
| virtual int GetAppbarAutohideEdges(HMONITOR monitor, |
| const base::Closure& callback) override; |
| #endif |
| |
| private: |
| #if defined(OS_WIN) |
| typedef std::map<HMONITOR, int> AppbarAutohideEdgeMap; |
| |
| // Callback on main thread with the edges. |returned_edges| is the value that |
| // was returned from the call to GetAutohideEdges() that initiated the lookup. |
| void OnGotAppbarAutohideEdges(const base::Closure& callback, |
| HMONITOR monitor, |
| int returned_edges, |
| int edges); |
| #endif |
| |
| // Function to retrieve default opacity value mainly based on platform |
| // and desktop context. |
| views::Widget::InitParams::WindowOpacity GetOpacityForInitParams( |
| const views::Widget::InitParams& params); |
| |
| #if defined(OS_WIN) |
| AppbarAutohideEdgeMap appbar_autohide_edge_map_; |
| // If true we're in the process of notifying a callback from |
| // GetAutohideEdges().start a new query. |
| bool in_autohide_edges_callback_; |
| |
| base::WeakPtrFactory<ChromeViewsDelegate> weak_factory_; |
| #endif |
| |
| DISALLOW_COPY_AND_ASSIGN(ChromeViewsDelegate); |
| }; |
| |
| #endif // CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_ |