Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Side by Side Diff: ash/common/wm/wm_window.h

Issue 2035543004: Shuffles and renames ash/common/wm classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: random changes for chrome tests Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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 ASH_COMMON_WM_WM_WINDOW_H_
6 #define ASH_COMMON_WM_WM_WINDOW_H_
7
8 #include <memory>
9 #include <vector>
10
11 #include "ash/ash_export.h"
12 #include "base/strings/string16.h"
13 #include "base/time/time.h"
14 #include "ui/base/ui_base_types.h"
15 #include "ui/compositor/layer_animation_element.h"
16 #include "ui/wm/core/window_animations.h"
17 #include "ui/wm/public/window_types.h"
18
19 namespace display {
20 class Display;
21 }
22
23 namespace gfx {
24 class Point;
25 class Rect;
26 class Size;
27 class Transform;
28 }
29
30 namespace ui {
31 class Layer;
32 }
33
34 namespace ash {
35 namespace wm {
36
37 class WMEvent;
38 class WmGlobals;
39 class WmLayoutManager;
40 class WmRootWindowController;
41 class WmWindowObserver;
42 enum class WmWindowProperty;
43 class WindowState;
44
45 // This class exists as a porting layer to allow ash/wm to work with
46 // aura::Window or mus::Window. See aura::Window for details on the functions.
47 class ASH_EXPORT WmWindow {
48 public:
49 // See comments in SetBoundsInScreen().
50 enum class BoundsInScreenBehavior {
51 USE_LOCAL_COORDINATES,
52 USE_SCREEN_COORDINATES,
53 };
54
55 WmWindow* GetRootWindow() {
56 return const_cast<WmWindow*>(
57 const_cast<const WmWindow*>(this)->GetRootWindow());
58 }
59 virtual const WmWindow* GetRootWindow() const = 0;
60 virtual WmRootWindowController* GetRootWindowController() = 0;
61
62 // TODO(sky): fix constness.
63 virtual WmGlobals* GetGlobals() const = 0;
64
65 // Used for debugging.
66 virtual void SetName(const char* name) = 0;
67
68 virtual base::string16 GetTitle() const = 0;
69
70 // See shell_window_ids.h for list of known ids.
71 virtual void SetShellWindowId(int id) = 0;
72 virtual int GetShellWindowId() const = 0;
73 virtual WmWindow* GetChildByShellWindowId(int id) = 0;
74
75 virtual ui::wm::WindowType GetType() const = 0;
76
77 // TODO(sky): seems like this shouldn't be exposed.
78 virtual ui::Layer* GetLayer() = 0;
79
80 virtual display::Display GetDisplayNearestWindow() = 0;
81
82 virtual bool HasNonClientArea() = 0;
83 virtual int GetNonClientComponent(const gfx::Point& location) = 0;
84
85 virtual gfx::Point ConvertPointToTarget(const WmWindow* target,
86 const gfx::Point& point) const = 0;
87 virtual gfx::Point ConvertPointToScreen(const gfx::Point& point) const = 0;
88 virtual gfx::Point ConvertPointFromScreen(const gfx::Point& point) const = 0;
89 virtual gfx::Rect ConvertRectToScreen(const gfx::Rect& rect) const = 0;
90 virtual gfx::Rect ConvertRectFromScreen(const gfx::Rect& rect) const = 0;
91
92 virtual gfx::Size GetMinimumSize() const = 0;
93 virtual gfx::Size GetMaximumSize() const = 0;
94
95 // Returns the visibility requested by this window. IsVisible() takes into
96 // account the visibility of the layer and ancestors, where as this tracks
97 // whether Show() without a Hide() has been invoked.
98 virtual bool GetTargetVisibility() const = 0;
99
100 virtual bool IsVisible() const = 0;
101
102 virtual void SetOpacity(float opacity) = 0;
103 virtual float GetTargetOpacity() const = 0;
104
105 virtual void SetTransform(const gfx::Transform& transform) = 0;
106 virtual gfx::Transform GetTargetTransform() const = 0;
107
108 virtual bool IsSystemModal() const = 0;
109
110 virtual bool GetBoolProperty(WmWindowProperty key) = 0;
111 virtual int GetIntProperty(WmWindowProperty key) = 0;
112
113 WindowState* GetWindowState() {
114 return const_cast<WindowState*>(
115 const_cast<const WmWindow*>(this)->GetWindowState());
116 }
117 virtual const WindowState* GetWindowState() const = 0;
118
119 virtual WmWindow* GetToplevelWindow() = 0;
120
121 // See aura::client::ParentWindowWithContext() for details of what this does.
122 virtual void SetParentUsingContext(WmWindow* context,
123 const gfx::Rect& screen_bounds) = 0;
124 virtual void AddChild(WmWindow* window) = 0;
125
126 virtual WmWindow* GetParent() = 0;
127
128 WmWindow* GetTransientParent() {
129 return const_cast<WmWindow*>(
130 const_cast<const WmWindow*>(this)->GetTransientParent());
131 }
132 virtual const WmWindow* GetTransientParent() const = 0;
133 virtual std::vector<WmWindow*> GetTransientChildren() = 0;
134
135 virtual void SetLayoutManager(
136 std::unique_ptr<WmLayoutManager> layout_manager) = 0;
137 virtual WmLayoutManager* GetLayoutManager() = 0;
138
139 // |type| is WindowVisibilityAnimationType. Has to be an int to match aura.
140 virtual void SetVisibilityAnimationType(int type) = 0;
141 virtual void SetVisibilityAnimationDuration(base::TimeDelta delta) = 0;
142 virtual void SetVisibilityAnimationTransition(
143 ::wm::WindowVisibilityAnimationTransition transition) = 0;
144 virtual void Animate(::wm::WindowAnimationType type) = 0;
145 virtual void StopAnimatingProperty(
146 ui::LayerAnimationElement::AnimatableProperty property) = 0;
147 virtual void SetChildWindowVisibilityChangesAnimated() = 0;
148
149 // See description in ui::Layer.
150 virtual void SetMasksToBounds(bool value) = 0;
151
152 virtual void SetBounds(const gfx::Rect& bounds) = 0;
153 virtual void SetBoundsWithTransitionDelay(const gfx::Rect& bounds,
154 base::TimeDelta delta) = 0;
155 // Sets the bounds in such a way that LayoutManagers are circumvented.
156 virtual void SetBoundsDirect(const gfx::Rect& bounds) = 0;
157 virtual void SetBoundsDirectAnimated(const gfx::Rect& bounds) = 0;
158 virtual void SetBoundsDirectCrossFade(const gfx::Rect& bounds) = 0;
159
160 // Sets the bounds in two distinct ways. The exact behavior is dictated by
161 // the value of BoundsInScreenBehavior set on the parent:
162 //
163 // USE_LOCAL_COORDINATES: the bounds are applied as is to the window. In other
164 // words this behaves the same as if SetBounds(bounds_in_screen) was used.
165 // This is the default.
166 // USE_SCREEN_COORDINATES: the bounds are actual screen bounds and converted
167 // from the display. In this case the window may move to a different
168 // display if allowed (see SetDescendantsStayInSameRootWindow()).
169 virtual void SetBoundsInScreen(const gfx::Rect& bounds_in_screen,
170 const display::Display& dst_display) = 0;
171 virtual gfx::Rect GetBoundsInScreen() const = 0;
172 virtual const gfx::Rect& GetBounds() const = 0;
173 virtual gfx::Rect GetTargetBounds() = 0;
174
175 virtual void ClearRestoreBounds() = 0;
176 virtual void SetRestoreBoundsInScreen(const gfx::Rect& bounds) = 0;
177 virtual gfx::Rect GetRestoreBoundsInScreen() const = 0;
178
179 virtual bool Contains(const WmWindow* other) const = 0;
180
181 virtual void SetShowState(ui::WindowShowState show_state) = 0;
182 virtual ui::WindowShowState GetShowState() const = 0;
183
184 virtual void SetRestoreShowState(ui::WindowShowState show_state) = 0;
185
186 // If |value| is true the window can not be moved to another root, regardless
187 // of the bounds set on it.
188 virtual void SetLockedToRoot(bool value) = 0;
189
190 virtual void SetCapture() = 0;
191 virtual bool HasCapture() = 0;
192 virtual void ReleaseCapture() = 0;
193
194 virtual bool HasRestoreBounds() const = 0;
195
196 virtual void SetAlwaysOnTop(bool value) = 0;
197 virtual bool IsAlwaysOnTop() const = 0;
198
199 virtual void Hide() = 0;
200 virtual void Show() = 0;
201
202 // Requests the window to close and destroy itself. This is intended to
203 // forward to an associated widget.
204 virtual void CloseWidget() = 0;
205
206 virtual bool IsFocused() const = 0;
207
208 virtual bool IsActive() const = 0;
209 virtual void Activate() = 0;
210 virtual void Deactivate() = 0;
211
212 virtual void SetFullscreen() = 0;
213
214 virtual void Maximize() = 0;
215 virtual void Minimize() = 0;
216 virtual void Unminimize() = 0;
217
218 virtual bool CanMaximize() const = 0;
219 virtual bool CanMinimize() const = 0;
220 virtual bool CanResize() const = 0;
221 virtual bool CanActivate() const = 0;
222
223 virtual void StackChildAtTop(WmWindow* child) = 0;
224 virtual void StackChildAtBottom(WmWindow* child) = 0;
225 virtual void StackChildAbove(WmWindow* child, WmWindow* target) = 0;
226 virtual void StackChildBelow(WmWindow* child, WmWindow* target) = 0;
227
228 virtual std::vector<WmWindow*> GetChildren() = 0;
229
230 // Shows/hides the resize shadow. |component| is the component to show the
231 // shadow for (one of the constants in ui/base/hit_test.h).
232 virtual void ShowResizeShadow(int component) = 0;
233 virtual void HideResizeShadow() = 0;
234
235 // See description in SetBoundsInScreen().
236 virtual void SetBoundsInScreenBehaviorForChildren(BoundsInScreenBehavior) = 0;
237
238 // See description of SnapToPixelBoundaryIfNecessary().
239 virtual void SetSnapsChildrenToPhysicalPixelBoundary() = 0;
240
241 // If an ancestor has been set to snap children to pixel boundaries, then
242 // snaps the layer associated with this window to the layer associated with
243 // the ancestor.
244 virtual void SnapToPixelBoundaryIfNecessary() = 0;
245
246 // Makes the hit region for children slightly larger for easier resizing.
247 virtual void SetChildrenUseExtendedHitRegion() = 0;
248
249 // Sets whether descendants of this should not be moved to a different
250 // container. This is used by SetBoundsInScreen().
251 virtual void SetDescendantsStayInSameRootWindow(bool value) = 0;
252
253 virtual void AddObserver(WmWindowObserver* observer) = 0;
254 virtual void RemoveObserver(WmWindowObserver* observer) = 0;
255
256 protected:
257 virtual ~WmWindow() {}
258 };
259
260 } // namespace wm
261 } // namespace ash
262
263 #endif // ASH_COMMON_WM_WM_WINDOW_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698