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 #include "mojo/services/window_manager/window_manager_app.h" | 5 #include "mojo/services/window_manager/window_manager_app.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
9 #include "mojo/aura/aura_init.h" | 9 #include "mojo/aura/aura_init.h" |
10 #include "mojo/aura/window_tree_host_mojo.h" | 10 #include "mojo/aura/window_tree_host_mojo.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 // WindowManagerApp, public: | 71 // WindowManagerApp, public: |
72 | 72 |
73 WindowManagerApp::WindowManagerApp(ViewManagerDelegate* delegate) | 73 WindowManagerApp::WindowManagerApp(ViewManagerDelegate* delegate) |
74 : window_manager_service_factory_(this), | 74 : window_manager_service_factory_(this), |
75 wrapped_delegate_(delegate), | 75 wrapped_delegate_(delegate), |
76 view_manager_(NULL), | 76 view_manager_(NULL), |
77 view_manager_client_factory_(this), | 77 view_manager_client_factory_(this), |
78 root_(NULL) { | 78 root_(NULL) { |
79 } | 79 } |
80 | 80 |
81 WindowManagerApp::~WindowManagerApp() { | 81 WindowManagerApp::~WindowManagerApp() {} |
82 // TODO(beng): Figure out if this should be done in | |
83 // OnViewManagerDisconnected(). | |
84 STLDeleteValues(&view_id_to_window_map_); | |
85 if (focus_client_.get()) | |
86 focus_client_->RemoveObserver(this); | |
87 if (activation_client_) | |
88 activation_client_->RemoveObserver(this); | |
89 } | |
90 | 82 |
91 void WindowManagerApp::AddConnection(WindowManagerServiceImpl* connection) { | 83 void WindowManagerApp::AddConnection(WindowManagerServiceImpl* connection) { |
92 DCHECK(connections_.find(connection) == connections_.end()); | 84 DCHECK(connections_.find(connection) == connections_.end()); |
93 connections_.insert(connection); | 85 connections_.insert(connection); |
94 } | 86 } |
95 | 87 |
96 void WindowManagerApp::RemoveConnection(WindowManagerServiceImpl* connection) { | 88 void WindowManagerApp::RemoveConnection(WindowManagerServiceImpl* connection) { |
97 DCHECK(connections_.find(connection) != connections_.end()); | 89 DCHECK(connections_.find(connection) != connections_.end()); |
98 connections_.erase(connection); | 90 connections_.erase(connection); |
99 } | 91 } |
100 | 92 |
101 Id WindowManagerApp::OpenWindow() { | |
102 View* view = View::Create(view_manager_); | |
103 root_->AddChild(view); | |
104 return view->id(); | |
105 } | |
106 | |
107 Id WindowManagerApp::OpenWindowWithURL(const String& url) { | |
108 View* view = View::Create(view_manager_); | |
109 root_->AddChild(view); | |
110 view->Embed(url); | |
111 return view->id(); | |
112 } | |
113 | |
114 void WindowManagerApp::SetCapture(Id view) { | 93 void WindowManagerApp::SetCapture(Id view) { |
115 capture_client_->capture_client()->SetCapture(GetWindowForViewId(view)); | 94 capture_client_->capture_client()->SetCapture(GetWindowForViewId(view)); |
116 // TODO(beng): notify connected clients that capture has changed, probably | 95 // TODO(beng): notify connected clients that capture has changed, probably |
117 // by implementing some capture-client observer. | 96 // by implementing some capture-client observer. |
118 } | 97 } |
119 | 98 |
120 void WindowManagerApp::FocusWindow(Id view) { | 99 void WindowManagerApp::FocusWindow(Id view) { |
121 aura::Window* window = GetWindowForViewId(view); | 100 aura::Window* window = GetWindowForViewId(view); |
122 DCHECK(window); | 101 DCHECK(window); |
123 focus_client_->FocusWindow(window); | 102 focus_client_->FocusWindow(window); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 DCHECK(it != view_id_to_window_map_.end()); | 190 DCHECK(it != view_id_to_window_map_.end()); |
212 RegisterSubtree(params.target->id(), it->second); | 191 RegisterSubtree(params.target->id(), it->second); |
213 } | 192 } |
214 } else if (params.old_parent) { | 193 } else if (params.old_parent) { |
215 UnregisterSubtree(params.target->id()); | 194 UnregisterSubtree(params.target->id()); |
216 } | 195 } |
217 } | 196 } |
218 | 197 |
219 void WindowManagerApp::OnViewDestroyed(View* view) { | 198 void WindowManagerApp::OnViewDestroyed(View* view) { |
220 root_ = NULL; | 199 root_ = NULL; |
| 200 STLDeleteValues(&view_id_to_window_map_); |
| 201 if (focus_client_.get()) |
| 202 focus_client_->RemoveObserver(this); |
| 203 if (activation_client_) |
| 204 activation_client_->RemoveObserver(this); |
221 window_tree_host_.reset(); | 205 window_tree_host_.reset(); |
222 } | 206 } |
223 | 207 |
224 //////////////////////////////////////////////////////////////////////////////// | 208 //////////////////////////////////////////////////////////////////////////////// |
225 // WindowManagerApp, WindowTreeHostMojoDelegate implementation: | 209 // WindowManagerApp, WindowTreeHostMojoDelegate implementation: |
226 | 210 |
227 void WindowManagerApp::CompositorContentsChanged(const SkBitmap& bitmap) { | 211 void WindowManagerApp::CompositorContentsChanged(const SkBitmap& bitmap) { |
228 // We draw nothing. | 212 // We draw nothing. |
229 NOTREACHED(); | 213 NOTREACHED(); |
230 } | 214 } |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 ViewIdToWindowMap::iterator it = view_id_to_window_map_.find(id); | 263 ViewIdToWindowMap::iterator it = view_id_to_window_map_.find(id); |
280 DCHECK(it != view_id_to_window_map_.end()); | 264 DCHECK(it != view_id_to_window_map_.end()); |
281 scoped_ptr<aura::Window> window(it->second); | 265 scoped_ptr<aura::Window> window(it->second); |
282 view_id_to_window_map_.erase(it); | 266 view_id_to_window_map_.erase(it); |
283 View::Children::const_iterator child = view->children().begin(); | 267 View::Children::const_iterator child = view->children().begin(); |
284 for (; child != view->children().end(); ++child) | 268 for (; child != view->children().end(); ++child) |
285 UnregisterSubtree((*child)->id()); | 269 UnregisterSubtree((*child)->id()); |
286 } | 270 } |
287 | 271 |
288 } // namespace mojo | 272 } // namespace mojo |
OLD | NEW |