Home | History | Annotate | Download | only in apps
      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 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 apps::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