1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 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)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef COMPONENTS_NATIVE_APP_WINDOW_NATIVE_APP_WINDOW_VIEWS_H_
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define COMPONENTS_NATIVE_APP_WINDOW_NATIVE_APP_WINDOW_VIEWS_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/observer_list.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/web_contents_observer.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/app_window/app_window.h"
1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "extensions/browser/app_window/native_app_window.h"
1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "extensions/browser/app_window/size_constraints.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h"
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/views/controls/webview/unhandled_keyboard_event_handler.h"
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/views/widget/widget.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget_delegate.h"
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/widget/widget_observer.h"
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class SkRegion;
204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class BrowserContext;
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RenderViewHost;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebContents;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Extension;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace ui {
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class MenuModel;
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views {
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class MenuRunner;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WebView;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace native_app_window {
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// A NativeAppWindow backed by a views::Widget. This class may be used alone
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// as a stub or subclassed (for example, ChromeNativeAppWindowViews).
4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class NativeAppWindowViews : public extensions::NativeAppWindow,
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             public content::WebContentsObserver,
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                             public views::WidgetDelegateView,
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                             public views::WidgetObserver {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  NativeAppWindowViews();
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~NativeAppWindowViews();
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void Init(extensions::AppWindow* app_window,
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            const extensions::AppWindow::CreateParams& create_params);
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // Signal that CanHaveTransparentBackground has changed.
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  void OnCanHaveAlphaEnabledChanged();
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  views::Widget* widget() { return widget_; }
585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  void set_window_for_testing(views::Widget* window) { widget_ = window; }
60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void set_web_view_for_testing(views::WebView* view) { web_view_ = view; }
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) protected:
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  extensions::AppWindow* app_window() { return app_window_; }
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const extensions::AppWindow* app_window() const { return app_window_; }
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
6623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  const views::Widget* widget() const { return widget_; }
675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  views::WebView* web_view() { return web_view_; }
69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // Initializes |widget_| for |app_window|.
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void InitializeWindow(
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      extensions::AppWindow* app_window,
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      const extensions::AppWindow::CreateParams& create_params);
742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // ui::BaseWindow implementation.
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsActive() const OVERRIDE;
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsMaximized() const OVERRIDE;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsMinimized() const OVERRIDE;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsFullscreen() const OVERRIDE;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::NativeWindow GetNativeWindow() OVERRIDE;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Rect GetRestoredBounds() const OVERRIDE;
82b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  virtual ui::WindowShowState GetRestoredState() const OVERRIDE;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual gfx::Rect GetBounds() const OVERRIDE;
84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void Show() OVERRIDE;
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowInactive() OVERRIDE;
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Hide() OVERRIDE;
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Close() OVERRIDE;
88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void Activate() OVERRIDE;
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Deactivate() OVERRIDE;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Maximize() OVERRIDE;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Minimize() OVERRIDE;
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Restore() OVERRIDE;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void FlashFrame(bool flash) OVERRIDE;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsAlwaysOnTop() const OVERRIDE;
964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void SetAlwaysOnTop(bool always_on_top) OVERRIDE;
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WidgetDelegate implementation.
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnWidgetMove() OVERRIDE;
1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual views::View* GetInitiallyFocusedView() OVERRIDE;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CanResize() const OVERRIDE;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool CanMaximize() const OVERRIDE;
1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual bool CanMinimize() const OVERRIDE;
104a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  virtual base::string16 GetWindowTitle() const OVERRIDE;
1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool ShouldShowWindowTitle() const OVERRIDE;
1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool ShouldShowWindowIcon() const OVERRIDE;
1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void SaveWindowPlacement(const gfx::Rect& bounds,
1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                   ui::WindowShowState show_state) OVERRIDE;
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DeleteDelegate() OVERRIDE;
1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual views::Widget* GetWidget() OVERRIDE;
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual const views::Widget* GetWidget() const OVERRIDE;
1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual views::View* GetContentsView() OVERRIDE;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ShouldDescendIntoChildForEventHandling(
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gfx::NativeView child,
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const gfx::Point& location) OVERRIDE;
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // WidgetObserver implementation.
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnWidgetVisibilityChanged(views::Widget* widget,
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                         bool visible) OVERRIDE;
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void OnWidgetActivationChanged(views::Widget* widget,
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                         bool active) OVERRIDE;
1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // WebContentsObserver implementation.
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void RenderViewCreated(
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      content::RenderViewHost* render_view_host) OVERRIDE;
1264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void RenderViewHostChanged(
1274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      content::RenderViewHost* old_host,
1284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      content::RenderViewHost* new_host) OVERRIDE;
1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // views::View implementation.
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Layout() OVERRIDE;
132a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  virtual void ViewHierarchyChanged(
133a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)      const ViewHierarchyChangedDetails& details) OVERRIDE;
134cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual gfx::Size GetMinimumSize() const OVERRIDE;
135cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual gfx::Size GetMaximumSize() const OVERRIDE;
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnFocus() OVERRIDE;
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // NativeAppWindow implementation.
139f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void SetFullscreen(int fullscreen_types) OVERRIDE;
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsFullscreenOrPending() const OVERRIDE;
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateWindowIcon() OVERRIDE;
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateWindowTitle() OVERRIDE;
1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void UpdateBadgeIcon() OVERRIDE;
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateDraggableRegions(
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::vector<extensions::DraggableRegion>& regions) OVERRIDE;
1464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual SkRegion* GetDraggableRegion() OVERRIDE;
147f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void UpdateShape(scoped_ptr<SkRegion> region) OVERRIDE;
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void HandleKeyboardEvent(
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const content::NativeWebKeyboardEvent& event) OVERRIDE;
1504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual bool IsFrameless() const OVERRIDE;
151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual bool HasFrameColor() const OVERRIDE;
1525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual SkColor ActiveFrameColor() const OVERRIDE;
1535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  virtual SkColor InactiveFrameColor() const OVERRIDE;
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual gfx::Insets GetFrameInsets() const OVERRIDE;
155424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual void HideWithApp() OVERRIDE;
156424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  virtual void ShowWithApp() OVERRIDE;
157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void UpdateShelfMenu() OVERRIDE;
158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual gfx::Size GetContentMinimumSize() const OVERRIDE;
159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual gfx::Size GetContentMaximumSize() const OVERRIDE;
160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual void SetContentSizeConstraints(const gfx::Size& min_size,
161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                         const gfx::Size& max_size) OVERRIDE;
162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual bool CanHaveAlphaEnabled() const OVERRIDE;
1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void SetVisibleOnAllWorkspaces(bool always_visible) OVERRIDE;
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // web_modal::WebContentsModalDialogHost implementation.
166a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  virtual gfx::NativeView GetHostView() const OVERRIDE;
167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual gfx::Point GetDialogPosition(const gfx::Size& size) OVERRIDE;
16858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual gfx::Size GetMaximumDialogSize() OVERRIDE;
169c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void AddObserver(
1704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      web_modal::ModalDialogHostObserver* observer) OVERRIDE;
171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void RemoveObserver(
1724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      web_modal::ModalDialogHostObserver* observer) OVERRIDE;
173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
174a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private:
175a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Informs modal dialogs that they need to update their positions.
176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  void OnViewWasResized();
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  extensions::AppWindow* app_window_;  // Not owned.
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  views::WebView* web_view_;
18023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  views::Widget* widget_;
1813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<SkRegion> draggable_region_;
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  bool frameless_;
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool resizable_;
18603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  extensions::SizeConstraints size_constraints_;
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  views::UnhandledKeyboardEventHandler unhandled_keyboard_event_handler_;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  ObserverList<web_modal::ModalDialogHostObserver> observer_list_;
191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(NativeAppWindowViews);
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace native_app_window
196a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // COMPONENTS_NATIVE_APP_WINDOW_NATIVE_APP_WINDOW_VIEWS_H_
198