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 10 namespace web_app { 11 struct ShortcutInfo; 12 } 13 14 class GlassAppWindowFrameViewWin; 15 16 // Windows-specific parts of the views-backed native shell window implementation 17 // for packaged apps. 18 class 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 bool IsRunningInAsh(); 34 void EnsureCaptionStyleSet(); 35 36 // Overridden from ChromeNativeAppWindowViews: 37 virtual void OnBeforeWidgetInit(views::Widget::InitParams* init_params, 38 views::Widget* widget) OVERRIDE; 39 virtual void InitializeDefaultWindow( 40 const extensions::AppWindow::CreateParams& create_params) OVERRIDE; 41 virtual views::NonClientFrameView* CreateStandardDesktopAppFrame() OVERRIDE; 42 43 // Overridden from ui::BaseWindow: 44 virtual void Show() OVERRIDE; 45 virtual void Activate() OVERRIDE; 46 47 // Overridden from extensions::NativeAppWindow: 48 virtual void UpdateShelfMenu() OVERRIDE; 49 50 // Populated if there is a glass frame, which provides special information 51 // to the native widget implementation. This will be NULL if there is no 52 // glass frame. Note, this can change from NULL to non-NULL and back again 53 // throughout the life of a window, e.g. if DWM is enabled and disabled. 54 GlassAppWindowFrameViewWin* glass_frame_view_; 55 56 // The Windows Application User Model ID identifying the app. 57 // Not set for windows running inside Ash. 58 base::string16 app_model_id_; 59 60 base::WeakPtrFactory<ChromeNativeAppWindowViewsWin> weak_ptr_factory_; 61 62 DISALLOW_COPY_AND_ASSIGN(ChromeNativeAppWindowViewsWin); 63 }; 64 65 #endif // CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_WIN_H_ 66