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