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

Side by Side Diff: components/mus/ws/window_tree_host_impl.h

Issue 1459463004: mus: Allow the WM to specify the windows that can have active children. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tot-merge Created 5 years 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 COMPONENTS_MUS_WS_WINDOW_TREE_HOST_IMPL_H_ 5 #ifndef COMPONENTS_MUS_WS_WINDOW_TREE_HOST_IMPL_H_
6 #define COMPONENTS_MUS_WS_WINDOW_TREE_HOST_IMPL_H_ 6 #define COMPONENTS_MUS_WS_WINDOW_TREE_HOST_IMPL_H_
7 7
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "components/mus/common/types.h" 10 #include "components/mus/common/types.h"
11 #include "components/mus/public/interfaces/window_tree_host.mojom.h" 11 #include "components/mus/public/interfaces/window_tree_host.mojom.h"
12 #include "components/mus/ws/display_manager.h" 12 #include "components/mus/ws/display_manager.h"
13 #include "components/mus/ws/event_dispatcher.h" 13 #include "components/mus/ws/event_dispatcher.h"
14 #include "components/mus/ws/event_dispatcher_delegate.h" 14 #include "components/mus/ws/event_dispatcher_delegate.h"
15 #include "components/mus/ws/focus_controller_delegate.h"
15 #include "components/mus/ws/focus_controller_observer.h" 16 #include "components/mus/ws/focus_controller_observer.h"
16 #include "components/mus/ws/server_window.h" 17 #include "components/mus/ws/server_window.h"
17 #include "components/mus/ws/server_window_observer.h" 18 #include "components/mus/ws/server_window_observer.h"
18 19
19 namespace mus { 20 namespace mus {
20 namespace ws { 21 namespace ws {
21 22
22 class ConnectionManager; 23 class ConnectionManager;
23 class FocusController; 24 class FocusController;
24 class WindowTreeHostDelegate; 25 class WindowTreeHostDelegate;
25 class WindowTreeImpl; 26 class WindowTreeImpl;
26 27
27 // WindowTreeHostImpl is an implementation of the WindowTreeHost interface. 28 // WindowTreeHostImpl is an implementation of the WindowTreeHost interface.
28 // It serves as a top level root window for a window. Its lifetime is managed by 29 // It serves as a top level root window for a window. Its lifetime is managed by
29 // ConnectionManager. If the connection to the client breaks or if the user 30 // ConnectionManager. If the connection to the client breaks or if the user
30 // closes the associated window, then this object and related state will be 31 // closes the associated window, then this object and related state will be
31 // deleted. 32 // deleted.
32 class WindowTreeHostImpl : public DisplayManagerDelegate, 33 class WindowTreeHostImpl : public DisplayManagerDelegate,
33 public mojom::WindowTreeHost, 34 public mojom::WindowTreeHost,
34 public FocusControllerObserver, 35 public FocusControllerObserver,
36 public FocusControllerDelegate,
35 public EventDispatcherDelegate, 37 public EventDispatcherDelegate,
36 public ServerWindowObserver { 38 public ServerWindowObserver {
37 public: 39 public:
38 // TODO(fsamuel): All these parameters are just plumbing for creating 40 // TODO(fsamuel): All these parameters are just plumbing for creating
39 // DisplayManagers. We should probably just store these common parameters 41 // DisplayManagers. We should probably just store these common parameters
40 // in the DisplayManagerFactory and pass them along on DisplayManager::Create. 42 // in the DisplayManagerFactory and pass them along on DisplayManager::Create.
41 WindowTreeHostImpl(mojom::WindowTreeHostClientPtr client, 43 WindowTreeHostImpl(mojom::WindowTreeHostClientPtr client,
42 ConnectionManager* connection_manager, 44 ConnectionManager* connection_manager,
43 mojo::ApplicationImpl* app_impl, 45 mojo::ApplicationImpl* app_impl,
44 const scoped_refptr<GpuState>& gpu_state, 46 const scoped_refptr<GpuState>& gpu_state,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 void UpdateTextInputState(ServerWindow* window, 89 void UpdateTextInputState(ServerWindow* window,
88 const ui::TextInputState& state); 90 const ui::TextInputState& state);
89 void SetImeVisibility(ServerWindow* window, bool visible); 91 void SetImeVisibility(ServerWindow* window, bool visible);
90 92
91 // WindowTreeHost: 93 // WindowTreeHost:
92 void SetSize(mojo::SizePtr size) override; 94 void SetSize(mojo::SizePtr size) override;
93 void SetTitle(const mojo::String& title) override; 95 void SetTitle(const mojo::String& title) override;
94 void AddAccelerator(uint32_t id, 96 void AddAccelerator(uint32_t id,
95 mojom::EventMatcherPtr event_matcher) override; 97 mojom::EventMatcherPtr event_matcher) override;
96 void RemoveAccelerator(uint32_t id) override; 98 void RemoveAccelerator(uint32_t id) override;
99 void AddActivationParent(uint32_t window_id) override;
100 void RemoveActivationParent(uint32_t window_id) override;
97 101
98 private: 102 private:
99 void OnClientClosed(); 103 void OnClientClosed();
100 104
101 // DisplayManagerDelegate: 105 // DisplayManagerDelegate:
102 ServerWindow* GetRootWindow() override; 106 ServerWindow* GetRootWindow() override;
103 void OnEvent(mojom::EventPtr event) override; 107 void OnEvent(mojom::EventPtr event) override;
104 void OnDisplayClosed() override; 108 void OnDisplayClosed() override;
105 void OnViewportMetricsChanged( 109 void OnViewportMetricsChanged(
106 const mojom::ViewportMetrics& old_metrics, 110 const mojom::ViewportMetrics& old_metrics,
107 const mojom::ViewportMetrics& new_metrics) override; 111 const mojom::ViewportMetrics& new_metrics) override;
108 void OnTopLevelSurfaceChanged(cc::SurfaceId surface_id) override; 112 void OnTopLevelSurfaceChanged(cc::SurfaceId surface_id) override;
109 void OnCompositorFrameDrawn() override; 113 void OnCompositorFrameDrawn() override;
110 114
115 // FocusControllerDelegate:
116 bool CanHaveActiveChildren(ServerWindow* window) const override;
117
111 // FocusControllerObserver: 118 // FocusControllerObserver:
119 void OnActivationChanged(ServerWindow* old_active_window,
120 ServerWindow* new_active_window) override;
112 void OnFocusChanged(FocusControllerChangeSource change_source, 121 void OnFocusChanged(FocusControllerChangeSource change_source,
113 ServerWindow* old_focused_window, 122 ServerWindow* old_focused_window,
114 ServerWindow* new_focused_window) override; 123 ServerWindow* new_focused_window) override;
115 124
116 // EventDispatcherDelegate: 125 // EventDispatcherDelegate:
117 void OnAccelerator(uint32_t accelerator_id, mojom::EventPtr event) override; 126 void OnAccelerator(uint32_t accelerator_id, mojom::EventPtr event) override;
118 void SetFocusedWindowFromEventDispatcher(ServerWindow* window) override; 127 void SetFocusedWindowFromEventDispatcher(ServerWindow* window) override;
119 ServerWindow* GetFocusedWindowForEventDispatcher() override; 128 ServerWindow* GetFocusedWindowForEventDispatcher() override;
120 void DispatchInputEventToWindow(ServerWindow* target, 129 void DispatchInputEventToWindow(ServerWindow* target,
121 bool in_nonclient_area, 130 bool in_nonclient_area,
122 mojom::EventPtr event) override; 131 mojom::EventPtr event) override;
123 132
124 // ServerWindowObserver: 133 // ServerWindowObserver:
125 void OnWindowDestroyed(ServerWindow* window) override; 134 void OnWindowDestroyed(ServerWindow* window) override;
126 135
127 WindowTreeHostDelegate* delegate_; 136 WindowTreeHostDelegate* delegate_;
128 ConnectionManager* const connection_manager_; 137 ConnectionManager* const connection_manager_;
129 mojom::WindowTreeHostClientPtr client_; 138 mojom::WindowTreeHostClientPtr client_;
130 EventDispatcher event_dispatcher_; 139 EventDispatcher event_dispatcher_;
131 scoped_ptr<ServerWindow> root_; 140 scoped_ptr<ServerWindow> root_;
132 scoped_ptr<DisplayManager> display_manager_; 141 scoped_ptr<DisplayManager> display_manager_;
133 scoped_ptr<FocusController> focus_controller_; 142 scoped_ptr<FocusController> focus_controller_;
134 mojom::WindowManagerPtr window_manager_; 143 mojom::WindowManagerPtr window_manager_;
135 144
145 std::set<WindowId> activation_parents_;
146
136 // Set of windows with surfaces that need to be destroyed once the frame 147 // Set of windows with surfaces that need to be destroyed once the frame
137 // draws. 148 // draws.
138 std::set<ServerWindow*> windows_needing_frame_destruction_; 149 std::set<ServerWindow*> windows_needing_frame_destruction_;
139 150
140 DISALLOW_COPY_AND_ASSIGN(WindowTreeHostImpl); 151 DISALLOW_COPY_AND_ASSIGN(WindowTreeHostImpl);
141 }; 152 };
142 153
143 } // namespace ws 154 } // namespace ws
144 } // namespace mus 155 } // namespace mus
145 156
146 #endif // COMPONENTS_MUS_WS_WINDOW_TREE_HOST_IMPL_H_ 157 #endif // COMPONENTS_MUS_WS_WINDOW_TREE_HOST_IMPL_H_
OLDNEW
« no previous file with comments | « components/mus/ws/window_manager_client_apptest.cc ('k') | components/mus/ws/window_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698