chrome_native_app_window_views_win.h revision 010d83a9304c5a91596085d917d248abff47903a
1// Copyright 2014 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_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_WIN_H_ 6#define CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_WIN_H_ 7 8#include "chrome/browser/ui/views/apps/chrome_native_app_window_views.h" 9 10namespace web_app { 11struct ShortcutInfo; 12} 13 14class GlassAppWindowFrameViewWin; 15 16// Windows-specific parts of the views-backed native shell window implementation 17// for packaged apps. 18class ChromeNativeAppWindowViewsWin : public ChromeNativeAppWindowViews { 19 public: 20 ChromeNativeAppWindowViewsWin(); 21 22 GlassAppWindowFrameViewWin* glass_frame_view() { 23 return glass_frame_view_; 24 }; 25 26 private: 27 void ActivateParentDesktopIfNecessary(); 28 29 void OnShortcutInfoLoaded( 30 const web_app::ShortcutInfo& shortcut_info); 31 32 HWND GetNativeAppWindowHWND() const; 33 void EnsureCaptionStyleSet(); 34 35 // Overridden from ChromeNativeAppWindowViews: 36 virtual void OnBeforeWidgetInit(views::Widget::InitParams* init_params, 37 views::Widget* widget) OVERRIDE; 38 virtual void InitializeDefaultWindow( 39 const apps::AppWindow::CreateParams& create_params) OVERRIDE; 40 virtual views::NonClientFrameView* CreateStandardDesktopAppFrame() OVERRIDE; 41 42 // Overridden from ui::BaseWindow: 43 virtual void Show() OVERRIDE; 44 virtual void Activate() OVERRIDE; 45 46 // Overridden from apps::NativeAppWindow: 47 virtual void UpdateShelfMenu() OVERRIDE; 48 49 base::WeakPtrFactory<ChromeNativeAppWindowViewsWin> weak_ptr_factory_; 50 51 // Populated if there is a glass frame, which provides special information 52 // to the native widget implementation. This will be NULL if there is no 53 // glass frame. Note, this can change from NULL to non-NULL and back again 54 // throughout the life of a window, e.g. if DWM is enabled and disabled. 55 GlassAppWindowFrameViewWin* glass_frame_view_; 56 57 // The Windows Application User Model ID identifying the app. 58 base::string16 app_model_id_; 59 60 DISALLOW_COPY_AND_ASSIGN(ChromeNativeAppWindowViewsWin); 61}; 62 63#endif // CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_WIN_H_ 64