OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_MUS_PUBLIC_CPP_WINDOW_H_ | 5 #ifndef COMPONENTS_MUS_PUBLIC_CPP_WINDOW_H_ |
6 #define COMPONENTS_MUS_PUBLIC_CPP_WINDOW_H_ | 6 #define COMPONENTS_MUS_PUBLIC_CPP_WINDOW_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 12 matching lines...) Expand all Loading... |
23 class Size; | 23 class Size; |
24 } | 24 } |
25 | 25 |
26 namespace mus { | 26 namespace mus { |
27 | 27 |
28 class InputEventHandler; | 28 class InputEventHandler; |
29 class ServiceProviderImpl; | 29 class ServiceProviderImpl; |
30 class WindowObserver; | 30 class WindowObserver; |
31 class WindowSurface; | 31 class WindowSurface; |
32 class WindowSurfaceBinding; | 32 class WindowSurfaceBinding; |
33 class WindowTreeClientImpl; | 33 class WindowTreeClient; |
34 class WindowTreeClientImplPrivate; | 34 class WindowTreeClientPrivate; |
35 class WindowTreeConnection; | |
36 | 35 |
37 namespace { | 36 namespace { |
38 class OrderChangedNotifier; | 37 class OrderChangedNotifier; |
39 } | 38 } |
40 | 39 |
41 // Defined in window_property.h (which we do not include) | 40 // Defined in window_property.h (which we do not include) |
42 template <typename T> | 41 template <typename T> |
43 struct WindowProperty; | 42 struct WindowProperty; |
44 | 43 |
45 // Windows are owned by the WindowTreeConnection. See WindowTreeDelegate for | 44 // Windows are owned by the WindowTreeClient. See WindowTreeClientDelegate for |
46 // details on ownership. | 45 // details on ownership. |
47 // | 46 // |
48 // TODO(beng): Right now, you'll have to implement a WindowObserver to track | 47 // TODO(beng): Right now, you'll have to implement a WindowObserver to track |
49 // destruction and NULL any pointers you have. | 48 // destruction and NULL any pointers you have. |
50 // Investigate some kind of smart pointer or weak pointer for these. | 49 // Investigate some kind of smart pointer or weak pointer for these. |
51 class Window { | 50 class Window { |
52 public: | 51 public: |
53 using Children = std::vector<Window*>; | 52 using Children = std::vector<Window*>; |
54 using EmbedCallback = base::Callback<void(bool)>; | 53 using EmbedCallback = base::Callback<void(bool)>; |
55 using PropertyDeallocator = void (*)(int64_t value); | 54 using PropertyDeallocator = void (*)(int64_t value); |
56 using SharedProperties = std::map<std::string, std::vector<uint8_t>>; | 55 using SharedProperties = std::map<std::string, std::vector<uint8_t>>; |
57 | 56 |
58 // Destroys this window and all its children. Destruction is allowed for | 57 // Destroys this window and all its children. Destruction is allowed for |
59 // windows that were created by this connection, or the roots. For windows | 58 // windows that were created by this connection, or the roots. For windows |
60 // from other connections (except the roots), Destroy() does nothing. If the | 59 // from other connections (except the roots), Destroy() does nothing. If the |
61 // destruction is allowed observers are notified and the Window is | 60 // destruction is allowed observers are notified and the Window is |
62 // immediately deleted. | 61 // immediately deleted. |
63 void Destroy(); | 62 void Destroy(); |
64 | 63 |
65 WindowTreeConnection* connection() { return connection_; } | 64 WindowTreeClient* window_tree() { return client_; } |
66 | 65 |
67 // The local_id is provided for client code. The local_id is not set or | 66 // The local_id is provided for client code. The local_id is not set or |
68 // manipulated by mus. The default value is -1. | 67 // manipulated by mus. The default value is -1. |
69 void set_local_id(int id) { local_id_ = id; } | 68 void set_local_id(int id) { local_id_ = id; } |
70 int local_id() const { return local_id_; } | 69 int local_id() const { return local_id_; } |
71 | 70 |
72 int64_t display_id() const { return display_id_; } | 71 int64_t display_id() const { return display_id_; } |
73 | 72 |
74 // Geometric disposition relative to parent window. | 73 // Geometric disposition relative to parent window. |
75 const gfx::Rect& bounds() const { return bounds_; } | 74 const gfx::Rect& bounds() const { return bounds_; } |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 | 197 |
199 Window* GetChildByLocalId(int id); | 198 Window* GetChildByLocalId(int id); |
200 | 199 |
201 void SetTextInputState(mojo::TextInputStatePtr state); | 200 void SetTextInputState(mojo::TextInputStatePtr state); |
202 void SetImeVisibility(bool visible, mojo::TextInputStatePtr state); | 201 void SetImeVisibility(bool visible, mojo::TextInputStatePtr state); |
203 | 202 |
204 bool HasCapture() const; | 203 bool HasCapture() const; |
205 void SetCapture(); | 204 void SetCapture(); |
206 void ReleaseCapture(); | 205 void ReleaseCapture(); |
207 | 206 |
208 // Focus. See WindowTreeConnection::ClearFocus() to reset focus. | 207 // Focus. See WindowTreeClient::ClearFocus() to reset focus. |
209 void SetFocus(); | 208 void SetFocus(); |
210 bool HasFocus() const; | 209 bool HasFocus() const; |
211 void SetCanFocus(bool can_focus); | 210 void SetCanFocus(bool can_focus); |
212 | 211 |
213 // Embedding. See window_tree.mojom for details. | 212 // Embedding. See window_tree.mojom for details. |
214 void Embed(mus::mojom::WindowTreeClientPtr client); | 213 void Embed(mus::mojom::WindowTreeClientPtr client); |
215 | 214 |
216 // NOTE: callback is run synchronously if Embed() is not allowed on this | 215 // NOTE: callback is run synchronously if Embed() is not allowed on this |
217 // Window. | 216 // Window. |
218 void Embed(mus::mojom::WindowTreeClientPtr client, | 217 void Embed(mus::mojom::WindowTreeClientPtr client, |
219 const EmbedCallback& callback); | 218 const EmbedCallback& callback); |
220 | 219 |
221 // TODO(sky): this API is only applicable to the WindowManager. Move it | 220 // TODO(sky): this API is only applicable to the WindowManager. Move it |
222 // to a better place. | 221 // to a better place. |
223 void RequestClose(); | 222 void RequestClose(); |
224 | 223 |
225 // Returns an internal name, set by a client app when it creates a window. | 224 // Returns an internal name, set by a client app when it creates a window. |
226 std::string GetName() const; | 225 std::string GetName() const; |
227 | 226 |
228 protected: | 227 protected: |
229 // This class is subclassed only by test classes that provide a public ctor. | 228 // This class is subclassed only by test classes that provide a public ctor. |
230 Window(); | 229 Window(); |
231 ~Window(); | 230 ~Window(); |
232 | 231 |
233 private: | 232 private: |
234 friend class WindowPrivate; | 233 friend class WindowPrivate; |
235 friend class WindowTreeClientImpl; | 234 friend class WindowTreeClient; |
236 friend class WindowTreeClientImplPrivate; | 235 friend class WindowTreeClientPrivate; |
237 | 236 |
238 Window(WindowTreeConnection* connection, Id id); | 237 Window(WindowTreeClient* client, Id id); |
239 | 238 |
240 // Used to identify this Window on the server. Clients can not change this | 239 // Used to identify this Window on the server. Clients can not change this |
241 // value. | 240 // value. |
242 Id server_id() const { return server_id_; } | 241 Id server_id() const { return server_id_; } |
243 | 242 |
244 WindowTreeClientImpl* tree_client(); | |
245 | |
246 // Applies a shared property change locally and forwards to the server. If | 243 // Applies a shared property change locally and forwards to the server. If |
247 // |data| is null, this property is deleted. | 244 // |data| is null, this property is deleted. |
248 void SetSharedPropertyInternal(const std::string& name, | 245 void SetSharedPropertyInternal(const std::string& name, |
249 const std::vector<uint8_t>* data); | 246 const std::vector<uint8_t>* data); |
250 // Called by the public {Set,Get,Clear}Property functions. | 247 // Called by the public {Set,Get,Clear}Property functions. |
251 int64_t SetLocalPropertyInternal(const void* key, | 248 int64_t SetLocalPropertyInternal(const void* key, |
252 const char* name, | 249 const char* name, |
253 PropertyDeallocator deallocator, | 250 PropertyDeallocator deallocator, |
254 int64_t value, | 251 int64_t value, |
255 int64_t default_value); | 252 int64_t default_value); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 mojom::OrderDirection direction); | 297 mojom::OrderDirection direction); |
301 static bool ReorderImpl(Window* window, | 298 static bool ReorderImpl(Window* window, |
302 Window* relative, | 299 Window* relative, |
303 mojom::OrderDirection direction, | 300 mojom::OrderDirection direction, |
304 OrderChangedNotifier* notifier); | 301 OrderChangedNotifier* notifier); |
305 | 302 |
306 // Returns a pointer to the stacking target that can be used by | 303 // Returns a pointer to the stacking target that can be used by |
307 // RestackTransientDescendants. | 304 // RestackTransientDescendants. |
308 static Window** GetStackingTarget(Window* window); | 305 static Window** GetStackingTarget(Window* window); |
309 | 306 |
310 WindowTreeConnection* connection_; | 307 WindowTreeClient* client_; |
311 Id server_id_; | 308 Id server_id_; |
312 int local_id_ = -1; | 309 int local_id_ = -1; |
313 Window* parent_; | 310 Window* parent_; |
314 Children children_; | 311 Children children_; |
315 | 312 |
316 Window* stacking_target_; | 313 Window* stacking_target_; |
317 Window* transient_parent_; | 314 Window* transient_parent_; |
318 Children transient_children_; | 315 Children transient_children_; |
319 | 316 |
320 bool is_modal_; | 317 bool is_modal_; |
(...skipping 28 matching lines...) Expand all Loading... |
349 }; | 346 }; |
350 | 347 |
351 std::map<const void*, Value> prop_map_; | 348 std::map<const void*, Value> prop_map_; |
352 | 349 |
353 DISALLOW_COPY_AND_ASSIGN(Window); | 350 DISALLOW_COPY_AND_ASSIGN(Window); |
354 }; | 351 }; |
355 | 352 |
356 } // namespace mus | 353 } // namespace mus |
357 | 354 |
358 #endif // COMPONENTS_MUS_PUBLIC_CPP_WINDOW_H_ | 355 #endif // COMPONENTS_MUS_PUBLIC_CPP_WINDOW_H_ |
OLD | NEW |