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

Side by Side Diff: services/ui/ws/display.h

Issue 2736943003: Start to decouple display::Display from ws::PlatformDisplay. (Closed)
Patch Set: Missing statement. Created 3 years, 9 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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_DISPLAY_H_ 5 #ifndef SERVICES_UI_WS_DISPLAY_H_
6 #define SERVICES_UI_WS_DISPLAY_H_ 6 #define SERVICES_UI_WS_DISPLAY_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 11 matching lines...) Expand all
22 #include "services/ui/ws/focus_controller_observer.h" 22 #include "services/ui/ws/focus_controller_observer.h"
23 #include "services/ui/ws/platform_display.h" 23 #include "services/ui/ws/platform_display.h"
24 #include "services/ui/ws/platform_display_delegate.h" 24 #include "services/ui/ws/platform_display_delegate.h"
25 #include "services/ui/ws/server_window.h" 25 #include "services/ui/ws/server_window.h"
26 #include "services/ui/ws/server_window_observer.h" 26 #include "services/ui/ws/server_window_observer.h"
27 #include "services/ui/ws/server_window_tracker.h" 27 #include "services/ui/ws/server_window_tracker.h"
28 #include "services/ui/ws/user_id_tracker_observer.h" 28 #include "services/ui/ws/user_id_tracker_observer.h"
29 #include "services/ui/ws/window_manager_window_tree_factory_set_observer.h" 29 #include "services/ui/ws/window_manager_window_tree_factory_set_observer.h"
30 #include "ui/display/display.h" 30 #include "ui/display/display.h"
31 31
32 namespace display {
33 struct ViewportMetrics;
34 }
35
32 namespace ui { 36 namespace ui {
33 namespace ws { 37 namespace ws {
34 38
35 class DisplayBinding; 39 class DisplayBinding;
36 class DisplayManager; 40 class DisplayManager;
37 class FocusController; 41 class FocusController;
38 struct PlatformDisplayInitParams;
39 class WindowManagerDisplayRoot; 42 class WindowManagerDisplayRoot;
40 class WindowServer; 43 class WindowServer;
41 class WindowTree; 44 class WindowTree;
42 45
43 namespace test { 46 namespace test {
44 class DisplayTestApi; 47 class DisplayTestApi;
45 } 48 }
46 49
47 // Displays manages the state associated with a single display. Display has a 50 // Displays manages the state associated with a single display. Display has a
48 // single root window whose children are the roots for a per-user 51 // single root window whose children are the roots for a per-user
49 // WindowManager. Display is configured in two distinct 52 // WindowManager. Display is configured in two distinct
50 // ways: 53 // ways:
51 // . with a DisplayBinding. In this mode there is only ever one WindowManager 54 // . with a DisplayBinding. In this mode there is only ever one WindowManager
52 // for the display, which comes from the client that created the 55 // for the display, which comes from the client that created the
53 // Display. 56 // Display.
54 // . without a DisplayBinding. In this mode a WindowManager is automatically 57 // . without a DisplayBinding. In this mode a WindowManager is automatically
55 // created per user. 58 // created per user.
56 class Display : public PlatformDisplayDelegate, 59 class Display : public PlatformDisplayDelegate,
57 public mojom::WindowTreeHost, 60 public mojom::WindowTreeHost,
58 public FocusControllerObserver, 61 public FocusControllerObserver,
59 public FocusControllerDelegate, 62 public FocusControllerDelegate,
60 public UserIdTrackerObserver, 63 public UserIdTrackerObserver,
61 public WindowManagerWindowTreeFactorySetObserver { 64 public WindowManagerWindowTreeFactorySetObserver {
62 public: 65 public:
63 explicit Display(WindowServer* window_server); 66 explicit Display(WindowServer* window_server);
64 ~Display() override; 67 ~Display() override;
65 68
66 // Initializes the display root ServerWindow and PlatformDisplay. Adds this to 69 // Initializes the display root ServerWindow and PlatformDisplay. Adds this to
67 // DisplayManager as a pending display, until accelerated widget is available. 70 // DisplayManager as a pending display, until accelerated widget is available.
68 void Init(const PlatformDisplayInitParams& init_params, 71 void Init(const display::ViewportMetrics& metrics,
69 std::unique_ptr<DisplayBinding> binding); 72 std::unique_ptr<DisplayBinding> binding);
70 73
74 // Returns an ID for this display. In internal mode this the display::Display
75 // ID. In external mode this hasn't been defined yet.
71 int64_t GetId() const; 76 int64_t GetId() const;
72 77
78 // Sets the display::Display corresponding to this ws::Display. This is only
79 // valid in internal window mode.
80 void SetDisplay(const display::Display& display);
81
82 // PlatformDisplayDelegate:
83 display::Display GetDisplay() override;
sky 2017/03/13 18:29:06 Can this return a const Display& ?
kylechar 2017/03/13 19:28:02 Yep! I missed that it wasn't.
84
73 DisplayManager* display_manager(); 85 DisplayManager* display_manager();
74 const DisplayManager* display_manager() const; 86 const DisplayManager* display_manager() const;
75 87
76 PlatformDisplay* platform_display() { return platform_display_.get(); } 88 PlatformDisplay* platform_display() { return platform_display_.get(); }
77 89
78 // Returns a display::Display corresponding to this ws::Display.
79 display::Display ToDisplay() const;
80
81 // Returns the size of the display in physical pixels. 90 // Returns the size of the display in physical pixels.
82 gfx::Size GetSize() const; 91 gfx::Size GetSize() const;
83 92
84 WindowServer* window_server() { return window_server_; } 93 WindowServer* window_server() { return window_server_; }
85 94
86 // Returns the root of the Display. The root's children are the roots 95 // Returns the root of the Display. The root's children are the roots
87 // of the corresponding WindowManagers. 96 // of the corresponding WindowManagers.
88 ServerWindow* root_window() { return root_.get(); } 97 ServerWindow* root_window() { return root_.get(); }
89 const ServerWindow* root_window() const { return root_.get(); } 98 const ServerWindow* root_window() const { return root_.get(); }
90 99
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 void CreateWindowManagerDisplayRootsFromFactories(); 170 void CreateWindowManagerDisplayRootsFromFactories();
162 171
163 void CreateWindowManagerDisplayRootFromFactory( 172 void CreateWindowManagerDisplayRootFromFactory(
164 WindowManagerWindowTreeFactory* factory); 173 WindowManagerWindowTreeFactory* factory);
165 174
166 // Creates the root ServerWindow for this display, where |size| is in physical 175 // Creates the root ServerWindow for this display, where |size| is in physical
167 // pixels. 176 // pixels.
168 void CreateRootWindow(const gfx::Size& size); 177 void CreateRootWindow(const gfx::Size& size);
169 178
170 // PlatformDisplayDelegate: 179 // PlatformDisplayDelegate:
171 display::Display GetDisplay() override;
172 ServerWindow* GetRootWindow() override; 180 ServerWindow* GetRootWindow() override;
173 void OnAcceleratedWidgetAvailable() override; 181 void OnAcceleratedWidgetAvailable() override;
174 bool IsInHighContrastMode() override; 182 bool IsInHighContrastMode() override;
175 void OnEvent(const ui::Event& event) override; 183 void OnEvent(const ui::Event& event) override;
176 void OnNativeCaptureLost() override; 184 void OnNativeCaptureLost() override;
177 185
178 // FocusControllerDelegate: 186 // FocusControllerDelegate:
179 bool CanHaveActiveChildren(ServerWindow* window) const override; 187 bool CanHaveActiveChildren(ServerWindow* window) const override;
180 188
181 // FocusControllerObserver: 189 // FocusControllerObserver:
182 void OnActivationChanged(ServerWindow* old_active_window, 190 void OnActivationChanged(ServerWindow* old_active_window,
183 ServerWindow* new_active_window) override; 191 ServerWindow* new_active_window) override;
184 void OnFocusChanged(FocusControllerChangeSource change_source, 192 void OnFocusChanged(FocusControllerChangeSource change_source,
185 ServerWindow* old_focused_window, 193 ServerWindow* old_focused_window,
186 ServerWindow* new_focused_window) override; 194 ServerWindow* new_focused_window) override;
187 195
188 // UserIdTrackerObserver: 196 // UserIdTrackerObserver:
189 void OnUserIdRemoved(const UserId& id) override; 197 void OnUserIdRemoved(const UserId& id) override;
190 198
191 // WindowManagerWindowTreeFactorySetObserver: 199 // WindowManagerWindowTreeFactorySetObserver:
192 void OnWindowManagerWindowTreeFactoryReady( 200 void OnWindowManagerWindowTreeFactoryReady(
193 WindowManagerWindowTreeFactory* factory) override; 201 WindowManagerWindowTreeFactory* factory) override;
194 202
195 std::unique_ptr<DisplayBinding> binding_; 203 std::unique_ptr<DisplayBinding> binding_;
196 WindowServer* const window_server_; 204 WindowServer* const window_server_;
197 std::unique_ptr<ServerWindow> root_; 205 std::unique_ptr<ServerWindow> root_;
198 std::unique_ptr<PlatformDisplay> platform_display_; 206 std::unique_ptr<PlatformDisplay> platform_display_;
199 std::unique_ptr<FocusController> focus_controller_; 207 std::unique_ptr<FocusController> focus_controller_;
200 208
209 // In internal window mode this contains information about the display. In
210 // external window mode this will be invalid.
211 display::Display display_;
212
201 // The last cursor set. Used to track whether we need to change the cursor. 213 // The last cursor set. Used to track whether we need to change the cursor.
202 mojom::Cursor last_cursor_; 214 mojom::Cursor last_cursor_;
203 215
204 ServerWindowTracker activation_parents_; 216 ServerWindowTracker activation_parents_;
205 217
206 cc::LocalSurfaceIdAllocator allocator_; 218 cc::LocalSurfaceIdAllocator allocator_;
207 219
208 WindowManagerDisplayRootMap window_manager_display_root_map_; 220 WindowManagerDisplayRootMap window_manager_display_root_map_;
209 221
210 DISALLOW_COPY_AND_ASSIGN(Display); 222 DISALLOW_COPY_AND_ASSIGN(Display);
211 }; 223 };
212 224
213 } // namespace ws 225 } // namespace ws
214 } // namespace ui 226 } // namespace ui
215 227
216 #endif // SERVICES_UI_WS_DISPLAY_H_ 228 #endif // SERVICES_UI_WS_DISPLAY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698