Upstream version 9.37.195.0
[platform/framework/web/crosswalk.git] / src / ui / views / widget / desktop_aura / desktop_window_tree_host.h
1 // Copyright (c) 2012 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 UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_H_
6 #define UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_H_
7
8 #include "base/memory/scoped_ptr.h"
9 #include "ui/aura/window_event_dispatcher.h"
10 #include "ui/base/ui_base_types.h"
11 #include "ui/views/views_export.h"
12 #include "ui/views/widget/widget.h"
13
14 namespace aura {
15 class WindowTreeHost;
16 class Window;
17
18 namespace client {
19 class DragDropClient;
20 }
21 }
22
23 namespace gfx {
24 class ImageSkia;
25 class Rect;
26 }
27
28 namespace ui {
29 class NativeTheme;
30 }
31
32 namespace views {
33 namespace corewm {
34 class Tooltip;
35 }
36
37 namespace internal {
38 class NativeWidgetDelegate;
39 }
40
41 class DesktopNativeCursorManager;
42 class DesktopNativeWidgetAura;
43
44 class VIEWS_EXPORT DesktopWindowTreeHost {
45  public:
46   virtual ~DesktopWindowTreeHost() {}
47
48   static DesktopWindowTreeHost* Create(
49       internal::NativeWidgetDelegate* native_widget_delegate,
50       DesktopNativeWidgetAura* desktop_native_widget_aura);
51
52   // Return the NativeTheme to use for |window|. WARNING: |window| may be NULL.
53   static ui::NativeTheme* GetNativeTheme(aura::Window* window);
54
55   // Sets up resources needed before the WindowEventDispatcher has been created.
56   virtual void Init(aura::Window* content_window,
57                     const Widget::InitParams& params) = 0;
58
59   // Invoked once the DesktopNativeWidgetAura has been created.
60   virtual void OnNativeWidgetCreated(const Widget::InitParams& params) = 0;
61
62   // Creates and returns the Tooltip implementation to use. Return value is
63   // owned by DesktopNativeWidgetAura and lives as long as
64   // DesktopWindowTreeHost.
65   virtual scoped_ptr<corewm::Tooltip> CreateTooltip() = 0;
66
67   // Creates and returns the DragDropClient implementation to use. Return value
68   // is owned by DesktopNativeWidgetAura and lives as long as
69   // DesktopWindowTreeHost.
70   virtual scoped_ptr<aura::client::DragDropClient> CreateDragDropClient(
71       DesktopNativeCursorManager* cursor_manager) = 0;
72
73   virtual void Close() = 0;
74   virtual void CloseNow() = 0;
75
76   virtual aura::WindowTreeHost* AsWindowTreeHost() = 0;
77
78   virtual void ShowWindowWithState(ui::WindowShowState show_state) = 0;
79   virtual void ShowMaximizedWithBounds(const gfx::Rect& restored_bounds) = 0;
80
81   virtual bool IsVisible() const = 0;
82
83   virtual void SetSize(const gfx::Size& size) = 0;
84   virtual void StackAtTop() = 0;
85   virtual void CenterWindow(const gfx::Size& size) = 0;
86   virtual void GetWindowPlacement(gfx::Rect* bounds,
87                                   ui::WindowShowState* show_state) const = 0;
88   virtual gfx::Rect GetWindowBoundsInScreen() const = 0;
89   virtual gfx::Rect GetClientAreaBoundsInScreen() const = 0;
90   virtual gfx::Rect GetRestoredBounds() const = 0;
91
92   virtual gfx::Rect GetWorkAreaBoundsInScreen() const = 0;
93
94   // Sets the shape of the root window. If |native_region| is NULL then the
95   // window reverts to rectangular. Takes ownership of |native_region|.
96   virtual void SetShape(gfx::NativeRegion native_region) = 0;
97
98   virtual void Activate() = 0;
99   virtual void Deactivate() = 0;
100   virtual bool IsActive() const = 0;
101   virtual void Maximize() = 0;
102   virtual void Minimize() = 0;
103   virtual void Restore() = 0;
104   virtual bool IsMaximized() const = 0;
105   virtual bool IsMinimized() const = 0;
106
107   virtual bool HasCapture() const = 0;
108
109   virtual void SetAlwaysOnTop(bool always_on_top) = 0;
110   virtual bool IsAlwaysOnTop() const = 0;
111
112   virtual void SetVisibleOnAllWorkspaces(bool always_visible) = 0;
113
114   // Returns true if the title changed.
115   virtual bool SetWindowTitle(const base::string16& title) = 0;
116
117   virtual void ClearNativeFocus() = 0;
118
119   virtual Widget::MoveLoopResult RunMoveLoop(
120       const gfx::Vector2d& drag_offset,
121       Widget::MoveLoopSource source,
122       Widget::MoveLoopEscapeBehavior escape_behavior) = 0;
123   virtual void EndMoveLoop() = 0;
124
125   virtual void SetVisibilityChangedAnimationsEnabled(bool value) = 0;
126
127   // Determines whether the window should use native title bar and borders.
128   virtual bool ShouldUseNativeFrame() const = 0;
129   // Determines whether the window contents should be rendered transparently
130   // (for example, so that they can overhang onto the window title bar).
131   virtual bool ShouldWindowContentsBeTransparent() const = 0;
132   virtual void FrameTypeChanged() = 0;
133
134   virtual void SetFullscreen(bool fullscreen) = 0;
135   virtual bool IsFullscreen() const = 0;
136
137   virtual void SetOpacity(unsigned char opacity) = 0;
138
139   virtual void SetWindowIcons(const gfx::ImageSkia& window_icon,
140                               const gfx::ImageSkia& app_icon) = 0;
141
142   virtual void InitModalType(ui::ModalType modal_type) = 0;
143
144   virtual void FlashFrame(bool flash_frame) = 0;
145
146   virtual void OnRootViewLayout() const = 0;
147
148   // Called when the DesktopNativeWidgetAura's aura::Window is focused and
149   // blurred.
150   virtual void OnNativeWidgetFocus() = 0;
151   virtual void OnNativeWidgetBlur() = 0;
152
153   // Returns true if the Widget was closed but is still showing because of
154   // animations.
155   virtual bool IsAnimatingClosed() const = 0;
156
157   // Returns true if the Widget supports translucency.
158   virtual bool IsTranslucentWindowOpacitySupported() const = 0;
159 };
160
161 }  // namespace views
162
163 #endif  // UI_VIEWS_WIDGET_DESKTOP_AURA_DESKTOP_WINDOW_TREE_HOST_H_