| 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 SERVICES_UI_WS_SERVER_WINDOW_H_ | 5 #ifndef SERVICES_UI_WS_SERVER_WINDOW_H_ |
| 6 #define SERVICES_UI_WS_SERVER_WINDOW_H_ | 6 #define SERVICES_UI_WS_SERVER_WINDOW_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| 11 #include <string> | 11 #include <string> |
| 12 #include <vector> | 12 #include <vector> |
| 13 | 13 |
| 14 #include "base/logging.h" | 14 #include "base/logging.h" |
| 15 #include "base/macros.h" | 15 #include "base/macros.h" |
| 16 #include "base/observer_list.h" | 16 #include "base/observer_list.h" |
| 17 #include "mojo/public/cpp/bindings/binding.h" | 17 #include "mojo/public/cpp/bindings/binding.h" |
| 18 #include "services/ui/public/interfaces/window_tree.mojom.h" | 18 #include "services/ui/public/interfaces/window_tree.mojom.h" |
| 19 #include "services/ui/ws/ids.h" | 19 #include "services/ui/ws/ids.h" |
| 20 #include "services/ui/ws/server_window_surface.h" | 20 #include "services/ui/ws/server_window_compositor_frame_sink.h" |
| 21 #include "ui/gfx/geometry/insets.h" | 21 #include "ui/gfx/geometry/insets.h" |
| 22 #include "ui/gfx/geometry/rect.h" | 22 #include "ui/gfx/geometry/rect.h" |
| 23 #include "ui/gfx/geometry/vector2d.h" | 23 #include "ui/gfx/geometry/vector2d.h" |
| 24 #include "ui/gfx/transform.h" | 24 #include "ui/gfx/transform.h" |
| 25 #include "ui/platform_window/text_input_state.h" | 25 #include "ui/platform_window/text_input_state.h" |
| 26 | 26 |
| 27 namespace ui { | 27 namespace ui { |
| 28 namespace ws { | 28 namespace ws { |
| 29 | 29 |
| 30 class ServerWindowDelegate; | 30 class ServerWindowDelegate; |
| 31 class ServerWindowObserver; | 31 class ServerWindowObserver; |
| 32 class ServerWindowSurfaceManager; | 32 class ServerWindowCompositorFrameSinkManager; |
| 33 | 33 |
| 34 // Server side representation of a window. Delegate is informed of interesting | 34 // Server side representation of a window. Delegate is informed of interesting |
| 35 // events. | 35 // events. |
| 36 // | 36 // |
| 37 // It is assumed that all functions that mutate the tree have validated the | 37 // It is assumed that all functions that mutate the tree have validated the |
| 38 // mutation is possible before hand. For example, Reorder() assumes the supplied | 38 // mutation is possible before hand. For example, Reorder() assumes the supplied |
| 39 // window is a child and not already in position. | 39 // window is a child and not already in position. |
| 40 // | 40 // |
| 41 // ServerWindows do not own their children. If you delete a window that has | 41 // ServerWindows do not own their children. If you delete a window that has |
| 42 // children the children are implicitly removed. Similarly if a window has a | 42 // children the children are implicitly removed. Similarly if a window has a |
| 43 // parent and the window is deleted the deleted window is implicitly removed | 43 // parent and the window is deleted the deleted window is implicitly removed |
| 44 // from the parent. | 44 // from the parent. |
| 45 class ServerWindow { | 45 class ServerWindow { |
| 46 public: | 46 public: |
| 47 using Properties = std::map<std::string, std::vector<uint8_t>>; | 47 using Properties = std::map<std::string, std::vector<uint8_t>>; |
| 48 using Windows = std::vector<ServerWindow*>; | 48 using Windows = std::vector<ServerWindow*>; |
| 49 | 49 |
| 50 ServerWindow(ServerWindowDelegate* delegate, const WindowId& id); | 50 ServerWindow(ServerWindowDelegate* delegate, const WindowId& id); |
| 51 ServerWindow(ServerWindowDelegate* delegate, | 51 ServerWindow(ServerWindowDelegate* delegate, |
| 52 const WindowId& id, | 52 const WindowId& id, |
| 53 const Properties& properties); | 53 const Properties& properties); |
| 54 ~ServerWindow(); | 54 ~ServerWindow(); |
| 55 | 55 |
| 56 void AddObserver(ServerWindowObserver* observer); | 56 void AddObserver(ServerWindowObserver* observer); |
| 57 void RemoveObserver(ServerWindowObserver* observer); | 57 void RemoveObserver(ServerWindowObserver* observer); |
| 58 bool HasObserver(ServerWindowObserver* observer); | 58 bool HasObserver(ServerWindowObserver* observer); |
| 59 | 59 |
| 60 // Creates a new surface of the specified type, replacing the existing. | 60 // Creates a new surface of the specified type, replacing the existing. |
| 61 void CreateSurface( | 61 void CreateCompositorFrameSink( |
| 62 mojom::SurfaceType surface_type, | 62 mojom::CompositorFrameSinkType compositor_frame_sink_type, |
| 63 mojo::InterfaceRequest<cc::mojom::MojoCompositorFrameSink> request, | 63 cc::mojom::MojoCompositorFrameSinkRequest request, |
| 64 cc::mojom::MojoCompositorFrameSinkClientPtr client); | 64 cc::mojom::MojoCompositorFrameSinkClientPtr client); |
| 65 | 65 |
| 66 const WindowId& id() const { return id_; } | 66 const WindowId& id() const { return id_; } |
| 67 | 67 |
| 68 void Add(ServerWindow* child); | 68 void Add(ServerWindow* child); |
| 69 void Remove(ServerWindow* child); | 69 void Remove(ServerWindow* child); |
| 70 void Reorder(ServerWindow* relative, mojom::OrderDirection diretion); | 70 void Reorder(ServerWindow* relative, mojom::OrderDirection diretion); |
| 71 void StackChildAtBottom(ServerWindow* child); | 71 void StackChildAtBottom(ServerWindow* child); |
| 72 void StackChildAtTop(ServerWindow* child); | 72 void StackChildAtTop(ServerWindow* child); |
| 73 | 73 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 // visible. | 162 // visible. |
| 163 bool IsDrawn() const; | 163 bool IsDrawn() const; |
| 164 | 164 |
| 165 const gfx::Insets& extended_hit_test_region() const { | 165 const gfx::Insets& extended_hit_test_region() const { |
| 166 return extended_hit_test_region_; | 166 return extended_hit_test_region_; |
| 167 } | 167 } |
| 168 void set_extended_hit_test_region(const gfx::Insets& insets) { | 168 void set_extended_hit_test_region(const gfx::Insets& insets) { |
| 169 extended_hit_test_region_ = insets; | 169 extended_hit_test_region_ = insets; |
| 170 } | 170 } |
| 171 | 171 |
| 172 ServerWindowSurfaceManager* GetOrCreateSurfaceManager(); | 172 ServerWindowCompositorFrameSinkManager* |
| 173 ServerWindowSurfaceManager* surface_manager() { | 173 GetOrCreateCompositorFrameSinkManager(); |
| 174 return surface_manager_.get(); | 174 ServerWindowCompositorFrameSinkManager* compositor_frame_sink_manager() { |
| 175 return compositor_frame_sink_manager_.get(); |
| 175 } | 176 } |
| 176 const ServerWindowSurfaceManager* surface_manager() const { | 177 const ServerWindowCompositorFrameSinkManager* compositor_frame_sink_manager() |
| 177 return surface_manager_.get(); | 178 const { |
| 179 return compositor_frame_sink_manager_.get(); |
| 178 } | 180 } |
| 179 | 181 |
| 180 // Offset of the underlay from the the window bounds (used for shadows). | 182 // Offset of the underlay from the the window bounds (used for shadows). |
| 181 const gfx::Vector2d& underlay_offset() const { return underlay_offset_; } | 183 const gfx::Vector2d& underlay_offset() const { return underlay_offset_; } |
| 182 void SetUnderlayOffset(const gfx::Vector2d& offset); | 184 void SetUnderlayOffset(const gfx::Vector2d& offset); |
| 183 | 185 |
| 184 ServerWindowDelegate* delegate() { return delegate_; } | 186 ServerWindowDelegate* delegate() { return delegate_; } |
| 185 | 187 |
| 186 // Called when the window is no longer an embed root. | 188 // Called when the window is no longer an embed root. |
| 187 void OnEmbeddedAppDisconnected(); | 189 void OnEmbeddedAppDisconnected(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 217 // transient ancestor changing. | 219 // transient ancestor changing. |
| 218 ServerWindow* stacking_target_; | 220 ServerWindow* stacking_target_; |
| 219 ServerWindow* transient_parent_; | 221 ServerWindow* transient_parent_; |
| 220 Windows transient_children_; | 222 Windows transient_children_; |
| 221 | 223 |
| 222 bool is_modal_; | 224 bool is_modal_; |
| 223 bool visible_; | 225 bool visible_; |
| 224 gfx::Rect bounds_; | 226 gfx::Rect bounds_; |
| 225 gfx::Insets client_area_; | 227 gfx::Insets client_area_; |
| 226 std::vector<gfx::Rect> additional_client_areas_; | 228 std::vector<gfx::Rect> additional_client_areas_; |
| 227 std::unique_ptr<ServerWindowSurfaceManager> surface_manager_; | 229 std::unique_ptr<ServerWindowCompositorFrameSinkManager> |
| 230 compositor_frame_sink_manager_; |
| 228 mojom::Cursor cursor_id_; | 231 mojom::Cursor cursor_id_; |
| 229 mojom::Cursor non_client_cursor_id_; | 232 mojom::Cursor non_client_cursor_id_; |
| 230 float opacity_; | 233 float opacity_; |
| 231 bool can_focus_; | 234 bool can_focus_; |
| 232 bool can_accept_events_; | 235 bool can_accept_events_; |
| 233 gfx::Transform transform_; | 236 gfx::Transform transform_; |
| 234 ui::TextInputState text_input_state_; | 237 ui::TextInputState text_input_state_; |
| 235 | 238 |
| 236 Properties properties_; | 239 Properties properties_; |
| 237 | 240 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 251 | 254 |
| 252 base::ObserverList<ServerWindowObserver> observers_; | 255 base::ObserverList<ServerWindowObserver> observers_; |
| 253 | 256 |
| 254 DISALLOW_COPY_AND_ASSIGN(ServerWindow); | 257 DISALLOW_COPY_AND_ASSIGN(ServerWindow); |
| 255 }; | 258 }; |
| 256 | 259 |
| 257 } // namespace ws | 260 } // namespace ws |
| 258 } // namespace ui | 261 } // namespace ui |
| 259 | 262 |
| 260 #endif // SERVICES_UI_WS_SERVER_WINDOW_H_ | 263 #endif // SERVICES_UI_WS_SERVER_WINDOW_H_ |
| OLD | NEW |