chrome_views_delegate.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "build/build_config.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/accessibility/ax_enums.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/views_delegate.h" 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ChromeViewsDelegate : public views::ViewsDelegate { 15e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch public: 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeViewsDelegate(); 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ChromeViewsDelegate(); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // views::ViewsDelegate: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SaveWindowPlacement(const views::Widget* window, 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& window_name, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& bounds, 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::WindowShowState show_state) OVERRIDE; 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool GetSavedWindowPlacement( 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const views::Widget* widget, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& window_name, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Rect* bounds, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::WindowShowState* show_state) const OVERRIDE; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void NotifyAccessibilityEvent( 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::View* view, ui::AXEvent event_type) OVERRIDE; 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void NotifyMenuItemFocused(const base::string16& menu_name, 32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const base::string16& menu_item_name, 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) int item_index, 34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) int item_count, 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool has_submenu) OVERRIDE; 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_WIN) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual HICON GetDefaultWindowIcon() const OVERRIDE; 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual bool IsWindowInMetro(gfx::NativeWindow window) const OVERRIDE; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual gfx::ImageSkia* GetDefaultWindowIcon() const OVERRIDE; 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif 42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(USE_ASH) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::NonClientFrameView* CreateDefaultNonClientFrameView( 4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) views::Widget* widget) OVERRIDE; 4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif 4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void AddRef() OVERRIDE; 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void ReleaseRef() OVERRIDE; 4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void OnBeforeWidgetInit( 4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) views::Widget::InitParams* params, 5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) views::internal::NativeWidgetDelegate* delegate) OVERRIDE; 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_LINUX) && !defined(OS_CHROMEOS) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WindowManagerProvidesTitleBar(bool maximized) OVERRIDE; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(USE_AURA) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ui::ContextFactory* GetContextFactory() OVERRIDE; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetAppbarAutohideEdges(HMONITOR monitor, 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& callback) OVERRIDE; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::map<HMONITOR, int> AppbarAutohideEdgeMap; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Callback on main thread with the edges. |returned_edges| is the value that 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // was returned from the call to GetAutohideEdges() that initiated the lookup. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void OnGotAppbarAutohideEdges(const base::Closure& callback, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HMONITOR monitor, 70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) int returned_edges, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int edges); 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Function to retrieve default opacity value mainly based on platform 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and desktop context. 7603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) views::Widget::InitParams::WindowOpacity GetOpacityForInitParams( 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const views::Widget::InitParams& params); 7868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AppbarAutohideEdgeMap appbar_autohide_edge_map_; 811e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) base::WeakPtrFactory<ChromeViewsDelegate> weak_factory_; 82a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // If true we're in the process of notifying a callback from 831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // GetAutohideEdges().start a new query. 84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool in_autohide_edges_callback_; 85a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif 86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChromeViewsDelegate); 8803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}; 8903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 9003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif // CHROME_BROWSER_UI_VIEWS_CHROME_VIEWS_DELEGATE_H_ 9103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)