Index: apps/ui/views/base_native_app_window_views.h |
diff --git a/chrome/browser/ui/views/apps/native_app_window_views.h b/apps/ui/views/base_native_app_window_views.h |
similarity index 59% |
copy from chrome/browser/ui/views/apps/native_app_window_views.h |
copy to apps/ui/views/base_native_app_window_views.h |
index f056649c09505a9f6d7bfb33181f2cc16ad7b9b8..a79c8b70293fcf1cc9134dc2d65a0e4a4e965a57 100644 |
--- a/chrome/browser/ui/views/apps/native_app_window_views.h |
+++ b/apps/ui/views/base_native_app_window_views.h |
@@ -2,29 +2,19 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CHROME_BROWSER_UI_VIEWS_APPS_NATIVE_APP_WINDOW_VIEWS_H_ |
-#define CHROME_BROWSER_UI_VIEWS_APPS_NATIVE_APP_WINDOW_VIEWS_H_ |
+#ifndef APPS_UI_VIEWS_BASE_NATIVE_APP_WINDOW_VIEWS_H_ |
+#define APPS_UI_VIEWS_BASE_NATIVE_APP_WINDOW_VIEWS_H_ |
-#include "apps/app_window.h" |
#include "apps/ui/native_app_window.h" |
#include "base/observer_list.h" |
#include "content/public/browser/web_contents_observer.h" |
-#include "third_party/skia/include/core/SkRegion.h" |
-#include "ui/gfx/image/image_skia.h" |
#include "ui/gfx/rect.h" |
-#include "ui/views/context_menu_controller.h" |
#include "ui/views/controls/webview/unhandled_keyboard_event_handler.h" |
#include "ui/views/widget/widget.h" |
#include "ui/views/widget/widget_delegate.h" |
#include "ui/views/widget/widget_observer.h" |
-#if defined(USE_ASH) |
-namespace ash { |
-class ImmersiveFullscreenController; |
-} |
-#endif |
- |
-class ExtensionKeybindingRegistryViews; |
+class SkRegion; |
namespace apps { |
class AppWindowFrameView; |
@@ -49,57 +39,34 @@ class MenuRunner; |
class WebView; |
} |
-class NativeAppWindowViews : public apps::NativeAppWindow, |
- public content::WebContentsObserver, |
- public views::ContextMenuController, |
- public views::WidgetDelegateView, |
- public views::WidgetObserver { |
+// A NativeAppWindow backed by a views::Widget. This class may be used alone |
+// as a stub or subclassed (for example, NativeAppWindowViews in Chrome). |
+class BaseNativeAppWindowViews : public apps::NativeAppWindow, |
+ public content::WebContentsObserver, |
+ public views::WidgetDelegateView, |
+ public views::WidgetObserver { |
public: |
- NativeAppWindowViews(); |
- virtual ~NativeAppWindowViews(); |
+ BaseNativeAppWindowViews(); |
+ virtual ~BaseNativeAppWindowViews(); |
void Init(apps::AppWindow* app_window, |
const apps::AppWindow::CreateParams& create_params); |
- SkRegion* shape() { return shape_.get(); } |
+ void set_window_for_testing(views::Widget* window) { window_ = window; } |
+ void set_web_view_for_testing(views::WebView* view) { web_view_ = view; } |
protected: |
- // Called before views::Widget::Init() to allow subclasses to customize |
- // the InitParams that would be passed. |
- virtual void OnBeforeWidgetInit(views::Widget::InitParams* init_params, |
- views::Widget* widget); |
+ apps::AppWindow* app_window() { return app_window_; } |
+ const apps::AppWindow* app_window() const { return app_window_; } |
- // ui::BaseWindow implementation that subclasses may override. |
- virtual void Show() OVERRIDE; |
- virtual void Activate() OVERRIDE; |
- |
- content::BrowserContext* browser_context() { |
- return app_window_->browser_context(); |
- } |
- |
- const extensions::Extension* extension() { return app_window_->extension(); } |
+ views::Widget* window() { return window_; } |
const views::Widget* window() const { return window_; } |
- virtual void InitializeDefaultWindow( |
- const apps::AppWindow::CreateParams& create_params); |
- virtual void InitializePanelWindow( |
- const apps::AppWindow::CreateParams& create_params); |
- |
- private: |
- friend class ShapedAppWindowTargeterTest; |
- FRIEND_TEST_ALL_PREFIXES(ShapedAppWindowTargeterTest, |
- ResizeInsetsWithinBounds); |
- |
- void OnViewWasResized(); |
- |
- bool ShouldUseNativeFrame() const; |
+ views::WebView* web_view() { return web_view_; } |
- // Installs an EasyResizeWindowTargeter on the containing window, which |
- // allows the window to be resized from within |kResizeInsideBoundsSize| |
- // pixels inside the window bounds. |
- void InstallEasyResizeTargeterOnContainer() const; |
- |
- // Caller owns the returned object. |
- apps::AppWindowFrameView* CreateAppWindowFrameView(); |
+ // Initializes |window_| for |app_window|. |
+ virtual void InitializeWindow( |
+ apps::AppWindow* app_window, |
+ const apps::AppWindow::CreateParams& create_params); |
// ui::BaseWindow implementation. |
virtual bool IsActive() const OVERRIDE; |
@@ -110,9 +77,11 @@ class NativeAppWindowViews : public apps::NativeAppWindow, |
virtual gfx::Rect GetRestoredBounds() const OVERRIDE; |
virtual ui::WindowShowState GetRestoredState() const OVERRIDE; |
virtual gfx::Rect GetBounds() const OVERRIDE; |
+ virtual void Show() OVERRIDE; |
virtual void ShowInactive() OVERRIDE; |
virtual void Hide() OVERRIDE; |
virtual void Close() OVERRIDE; |
+ virtual void Activate() OVERRIDE; |
virtual void Deactivate() OVERRIDE; |
virtual void Maximize() OVERRIDE; |
virtual void Minimize() OVERRIDE; |
@@ -122,11 +91,6 @@ class NativeAppWindowViews : public apps::NativeAppWindow, |
virtual bool IsAlwaysOnTop() const OVERRIDE; |
virtual void SetAlwaysOnTop(bool always_on_top) OVERRIDE; |
- // Overridden from views::ContextMenuController: |
- virtual void ShowContextMenuForView(views::View* source, |
- const gfx::Point& p, |
- ui::MenuSourceType source_type) OVERRIDE; |
- |
// WidgetDelegate implementation. |
virtual void OnWidgetMove() OVERRIDE; |
virtual views::View* GetInitiallyFocusedView() OVERRIDE; |
@@ -134,8 +98,6 @@ class NativeAppWindowViews : public apps::NativeAppWindow, |
virtual bool CanMaximize() const OVERRIDE; |
virtual base::string16 GetWindowTitle() const OVERRIDE; |
virtual bool ShouldShowWindowTitle() const OVERRIDE; |
- virtual gfx::ImageSkia GetWindowAppIcon() OVERRIDE; |
- virtual gfx::ImageSkia GetWindowIcon() OVERRIDE; |
virtual bool ShouldShowWindowIcon() const OVERRIDE; |
virtual void SaveWindowPlacement(const gfx::Rect& bounds, |
ui::WindowShowState show_state) OVERRIDE; |
@@ -143,10 +105,6 @@ class NativeAppWindowViews : public apps::NativeAppWindow, |
virtual views::Widget* GetWidget() OVERRIDE; |
virtual const views::Widget* GetWidget() const OVERRIDE; |
virtual views::View* GetContentsView() OVERRIDE; |
- virtual views::NonClientFrameView* CreateNonClientFrameView( |
- views::Widget* widget) OVERRIDE; |
- virtual bool WidgetHasHitTestMask() const OVERRIDE; |
- virtual void GetWidgetHitTestMask(gfx::Path* mask) const OVERRIDE; |
virtual bool ShouldDescendIntoChildForEventHandling( |
gfx::NativeView child, |
const gfx::Point& location) OVERRIDE; |
@@ -168,11 +126,9 @@ class NativeAppWindowViews : public apps::NativeAppWindow, |
virtual void Layout() OVERRIDE; |
virtual void ViewHierarchyChanged( |
const ViewHierarchyChangedDetails& details) OVERRIDE; |
- virtual gfx::Size GetPreferredSize() OVERRIDE; |
virtual gfx::Size GetMinimumSize() OVERRIDE; |
virtual gfx::Size GetMaximumSize() OVERRIDE; |
virtual void OnFocus() OVERRIDE; |
- virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE; |
// NativeAppWindow implementation. |
virtual void SetFullscreen(int fullscreen_types) OVERRIDE; |
@@ -204,48 +160,25 @@ class NativeAppWindowViews : public apps::NativeAppWindow, |
virtual void RemoveObserver( |
web_modal::ModalDialogHostObserver* observer) OVERRIDE; |
- content::WebContents* web_contents() { return app_window_->web_contents(); } |
+ private: |
+ // Informs modal dialogs that they need to update their positions. |
+ void OnViewWasResized(); |
apps::AppWindow* app_window_; // Not owned. |
views::WebView* web_view_; |
views::Widget* window_; |
- bool is_fullscreen_; |
- |
- // Custom shape of the window. If this is not set then the window has a |
- // default shape, usually rectangular. |
- scoped_ptr<SkRegion> shape_; |
scoped_ptr<SkRegion> draggable_region_; |
bool frameless_; |
- bool has_frame_color_; |
- SkColor frame_color_; |
bool transparent_background_; |
- gfx::Size preferred_size_; |
bool resizable_; |
- // The class that registers for keyboard shortcuts for extension commands. |
- scoped_ptr<ExtensionKeybindingRegistryViews> extension_keybinding_registry_; |
- |
views::UnhandledKeyboardEventHandler unhandled_keyboard_event_handler_; |
-#if defined(USE_ASH) |
- // Used to put non-frameless windows into immersive fullscreen on ChromeOS. In |
- // immersive fullscreen, the window header (title bar and window controls) |
- // slides onscreen as an overlay when the mouse is hovered at the top of the |
- // screen. |
- scoped_ptr<ash::ImmersiveFullscreenController> |
- immersive_fullscreen_controller_; |
-#endif |
- |
ObserverList<web_modal::ModalDialogHostObserver> observer_list_; |
- base::WeakPtrFactory<NativeAppWindowViews> weak_ptr_factory_; |
- |
- // Used to show the system menu. |
- scoped_ptr<views::MenuRunner> menu_runner_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NativeAppWindowViews); |
+ DISALLOW_COPY_AND_ASSIGN(BaseNativeAppWindowViews); |
}; |
-#endif // CHROME_BROWSER_UI_VIEWS_APPS_NATIVE_APP_WINDOW_VIEWS_H_ |
+#endif // APPS_UI_VIEWS_BASE_NATIVE_APP_WINDOW_VIEWS_H_ |