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_WINDOW_SERVER_H_ | 5 #ifndef SERVICES_UI_WS_WINDOW_SERVER_H_ |
6 #define SERVICES_UI_WS_WINDOW_SERVER_H_ | 6 #define SERVICES_UI_WS_WINDOW_SERVER_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <map> | 10 #include <map> |
11 #include <memory> | 11 #include <memory> |
12 #include <string> | 12 #include <string> |
13 #include <vector> | 13 #include <vector> |
14 | 14 |
15 #include "base/macros.h" | 15 #include "base/macros.h" |
| 16 #include "base/optional.h" |
16 #include "mojo/public/cpp/bindings/array.h" | 17 #include "mojo/public/cpp/bindings/array.h" |
17 #include "mojo/public/cpp/bindings/binding.h" | 18 #include "mojo/public/cpp/bindings/binding.h" |
18 #include "services/ui/clipboard/clipboard_impl.h" | 19 #include "services/ui/clipboard/clipboard_impl.h" |
19 #include "services/ui/public/interfaces/window_manager_window_tree_factory.mojom
.h" | 20 #include "services/ui/public/interfaces/window_manager_window_tree_factory.mojom
.h" |
20 #include "services/ui/public/interfaces/window_tree.mojom.h" | 21 #include "services/ui/public/interfaces/window_tree.mojom.h" |
21 #include "services/ui/public/interfaces/window_tree_host.mojom.h" | 22 #include "services/ui/public/interfaces/window_tree_host.mojom.h" |
22 #include "services/ui/surfaces/surfaces_state.h" | 23 #include "services/ui/surfaces/surfaces_state.h" |
23 #include "services/ui/ws/display.h" | 24 #include "services/ui/ws/display.h" |
24 #include "services/ui/ws/gpu_service_proxy_delegate.h" | 25 #include "services/ui/ws/gpu_service_proxy_delegate.h" |
25 #include "services/ui/ws/ids.h" | 26 #include "services/ui/ws/ids.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 ServerWindow* window, | 214 ServerWindow* window, |
214 WindowTree* initiator, | 215 WindowTree* initiator, |
215 const gfx::Rect& revert_bounds); | 216 const gfx::Rect& revert_bounds); |
216 void EndMoveLoop(); | 217 void EndMoveLoop(); |
217 uint32_t GetCurrentMoveLoopChangeId(); | 218 uint32_t GetCurrentMoveLoopChangeId(); |
218 ServerWindow* GetCurrentMoveLoopWindow(); | 219 ServerWindow* GetCurrentMoveLoopWindow(); |
219 WindowTree* GetCurrentMoveLoopInitiator(); | 220 WindowTree* GetCurrentMoveLoopInitiator(); |
220 gfx::Rect GetCurrentMoveLoopRevertBounds(); | 221 gfx::Rect GetCurrentMoveLoopRevertBounds(); |
221 bool in_move_loop() const { return !!current_move_loop_; } | 222 bool in_move_loop() const { return !!current_move_loop_; } |
222 | 223 |
| 224 void StartDragLoop(uint32_t change_id, |
| 225 ServerWindow* window, |
| 226 WindowTree* initiator); |
| 227 void EndDragLoop(); |
| 228 uint32_t GetCurrentDragLoopChangeId(); |
| 229 ServerWindow* GetCurrentDragLoopWindow(); |
| 230 WindowTree* GetCurrentDragLoopInitiator(); |
| 231 bool in_drag_loop() const { return !!current_drag_loop_; } |
| 232 |
223 void OnDisplayReady(Display* display, bool is_first); | 233 void OnDisplayReady(Display* display, bool is_first); |
224 void OnNoMoreDisplays(); | 234 void OnNoMoreDisplays(); |
225 WindowManagerState* GetWindowManagerStateForUser(const UserId& user_id); | 235 WindowManagerState* GetWindowManagerStateForUser(const UserId& user_id); |
226 | 236 |
227 // ServerWindowDelegate: | 237 // ServerWindowDelegate: |
228 ui::SurfacesState* GetSurfacesState() override; | 238 ui::SurfacesState* GetSurfacesState() override; |
229 | 239 |
230 // UserDisplayManagerDelegate: | 240 // UserDisplayManagerDelegate: |
231 bool GetFrameDecorationsForUser( | 241 bool GetFrameDecorationsForUser( |
232 const UserId& user_id, | 242 const UserId& user_id, |
233 mojom::FrameDecorationValuesPtr* values) override; | 243 mojom::FrameDecorationValuesPtr* values) override; |
234 | 244 |
235 private: | 245 private: |
236 struct CurrentMoveLoopState; | 246 struct CurrentMoveLoopState; |
| 247 struct CurrentDragLoopState; |
237 friend class Operation; | 248 friend class Operation; |
238 | 249 |
239 using WindowTreeMap = | 250 using WindowTreeMap = |
240 std::map<ClientSpecificId, std::unique_ptr<WindowTree>>; | 251 std::map<ClientSpecificId, std::unique_ptr<WindowTree>>; |
241 using UserActivityMonitorMap = | 252 using UserActivityMonitorMap = |
242 std::map<UserId, std::unique_ptr<UserActivityMonitor>>; | 253 std::map<UserId, std::unique_ptr<UserActivityMonitor>>; |
243 using UserClipboardMap = | 254 using UserClipboardMap = |
244 std::map<UserId, std::unique_ptr<ui::clipboard::ClipboardImpl>>; | 255 std::map<UserId, std::unique_ptr<ui::clipboard::ClipboardImpl>>; |
245 | 256 |
246 struct InFlightWindowManagerChange { | 257 struct InFlightWindowManagerChange { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 WindowServerDelegate* delegate_; | 350 WindowServerDelegate* delegate_; |
340 | 351 |
341 // State for rendering into a Surface. | 352 // State for rendering into a Surface. |
342 scoped_refptr<ui::SurfacesState> surfaces_state_; | 353 scoped_refptr<ui::SurfacesState> surfaces_state_; |
343 | 354 |
344 // ID to use for next WindowTree. | 355 // ID to use for next WindowTree. |
345 ClientSpecificId next_client_id_; | 356 ClientSpecificId next_client_id_; |
346 | 357 |
347 std::unique_ptr<DisplayManager> display_manager_; | 358 std::unique_ptr<DisplayManager> display_manager_; |
348 | 359 |
| 360 std::unique_ptr<CurrentDragLoopState> current_drag_loop_; |
349 std::unique_ptr<CurrentMoveLoopState> current_move_loop_; | 361 std::unique_ptr<CurrentMoveLoopState> current_move_loop_; |
350 | 362 |
351 // Set of WindowTrees. | 363 // Set of WindowTrees. |
352 WindowTreeMap tree_map_; | 364 WindowTreeMap tree_map_; |
353 | 365 |
354 // If non-null then we're processing a client operation. The Operation is | 366 // If non-null then we're processing a client operation. The Operation is |
355 // not owned by us (it's created on the stack by WindowTree). | 367 // not owned by us (it's created on the stack by WindowTree). |
356 Operation* current_operation_; | 368 Operation* current_operation_; |
357 | 369 |
358 bool in_destructor_; | 370 bool in_destructor_; |
(...skipping 15 matching lines...) Expand all Loading... |
374 | 386 |
375 WindowManagerWindowTreeFactorySet window_manager_window_tree_factory_set_; | 387 WindowManagerWindowTreeFactorySet window_manager_window_tree_factory_set_; |
376 | 388 |
377 DISALLOW_COPY_AND_ASSIGN(WindowServer); | 389 DISALLOW_COPY_AND_ASSIGN(WindowServer); |
378 }; | 390 }; |
379 | 391 |
380 } // namespace ws | 392 } // namespace ws |
381 } // namespace ui | 393 } // namespace ui |
382 | 394 |
383 #endif // SERVICES_UI_WS_WINDOW_SERVER_H_ | 395 #endif // SERVICES_UI_WS_WINDOW_SERVER_H_ |
OLD | NEW |