chrome_native_app_window_views_win.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
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 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 apps::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 base::WeakPtrFactory<ChromeNativeAppWindowViewsWin> weak_ptr_factory_; 51 52 // Populated if there is a glass frame, which provides special information 53 // to the native widget implementation. This will be NULL if there is no 54 // glass frame. Note, this can change from NULL to non-NULL and back again 55 // throughout the life of a window, e.g. if DWM is enabled and disabled. 56 GlassAppWindowFrameViewWin* glass_frame_view_; 57 58 // The Windows Application User Model ID identifying the app. 59 base::string16 app_model_id_; 60 61 DISALLOW_COPY_AND_ASSIGN(ChromeNativeAppWindowViewsWin); 62}; 63 64#endif // CHROME_BROWSER_UI_VIEWS_APPS_CHROME_NATIVE_APP_WINDOW_VIEWS_WIN_H_ 65