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

Side by Side Diff: services/window_manager/window_manager_app.cc

Issue 954273002: Routes WindowManager functionality through the view manager (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: comments Created 5 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
« no previous file with comments | « services/window_manager/window_manager_app.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "services/window_manager/window_manager_app.h" 5 #include "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/converters/geometry/geometry_type_converters.h" 9 #include "mojo/converters/geometry/geometry_type_converters.h"
10 #include "mojo/converters/input_events/input_events_type_converters.h" 10 #include "mojo/converters/input_events/input_events_type_converters.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 connections_.insert(connection); 80 connections_.insert(connection);
81 } 81 }
82 82
83 void WindowManagerApp::RemoveConnection(WindowManagerImpl* connection) { 83 void WindowManagerApp::RemoveConnection(WindowManagerImpl* connection) {
84 DCHECK(connections_.find(connection) != connections_.end()); 84 DCHECK(connections_.find(connection) != connections_.end());
85 connections_.erase(connection); 85 connections_.erase(connection);
86 } 86 }
87 87
88 bool WindowManagerApp::SetCapture(Id view_id) { 88 bool WindowManagerApp::SetCapture(Id view_id) {
89 View* view = view_manager()->GetViewById(view_id); 89 View* view = view_manager()->GetViewById(view_id);
90 if (!view) 90 return view && SetCaptureImpl(view);
91 return false;
92 capture_controller_->SetCapture(view);
93 return capture_controller_->GetCapture() == view;
94 } 91 }
95 92
96 bool WindowManagerApp::FocusWindow(Id view_id) { 93 bool WindowManagerApp::FocusWindow(Id view_id) {
97 View* view = view_manager()->GetViewById(view_id); 94 View* view = view_manager()->GetViewById(view_id);
98 if (!view) 95 return view && FocusWindowImpl(view);
99 return false;
100 focus_controller_->FocusView(view);
101 return focus_controller_->GetFocusedView() == view;
102 } 96 }
103 97
104 bool WindowManagerApp::ActivateWindow(Id view_id) { 98 bool WindowManagerApp::ActivateWindow(Id view_id) {
105 View* view = view_manager()->GetViewById(view_id); 99 View* view = view_manager()->GetViewById(view_id);
106 if (!view) 100 return view && ActivateWindowImpl(view);
107 return false;
108 focus_controller_->ActivateView(view);
109 return focus_controller_->GetActiveView() == view;
110 } 101 }
111 102
112 bool WindowManagerApp::IsReady() const { 103 bool WindowManagerApp::IsReady() const {
113 return root_; 104 return root_;
114 } 105 }
115 106
116 void WindowManagerApp::InitFocus(scoped_ptr<FocusRules> rules) { 107 void WindowManagerApp::InitFocus(scoped_ptr<FocusRules> rules) {
117 DCHECK(root_); 108 DCHECK(root_);
118 109
119 focus_controller_.reset(new FocusController(rules.Pass())); 110 focus_controller_.reset(new FocusController(rules.Pass()));
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 void WindowManagerApp::OnViewManagerDisconnected( 175 void WindowManagerApp::OnViewManagerDisconnected(
185 mojo::ViewManager* view_manager) { 176 mojo::ViewManager* view_manager) {
186 if (wrapped_view_manager_delegate_) 177 if (wrapped_view_manager_delegate_)
187 wrapped_view_manager_delegate_->OnViewManagerDisconnected(view_manager); 178 wrapped_view_manager_delegate_->OnViewManagerDisconnected(view_manager);
188 179
189 base::MessageLoop* message_loop = base::MessageLoop::current(); 180 base::MessageLoop* message_loop = base::MessageLoop::current();
190 if (message_loop && message_loop->is_running()) 181 if (message_loop && message_loop->is_running())
191 message_loop->Quit(); 182 message_loop->Quit();
192 } 183 }
193 184
185 bool WindowManagerApp::OnPerformAction(mojo::View* view,
186 const std::string& action) {
187 if (!view)
188 return false;
189 if (action == "capture")
190 return SetCaptureImpl(view);
191 if (action == "focus")
192 return FocusWindowImpl(view);
193 else if (action == "activate")
194 return ActivateWindowImpl(view);
195 return false;
196 }
197
194 //////////////////////////////////////////////////////////////////////////////// 198 ////////////////////////////////////////////////////////////////////////////////
195 // WindowManagerApp, ViewObserver implementation: 199 // WindowManagerApp, ViewObserver implementation:
196 200
197 void WindowManagerApp::OnTreeChanged( 201 void WindowManagerApp::OnTreeChanged(
198 const ViewObserver::TreeChangeParams& params) { 202 const ViewObserver::TreeChangeParams& params) {
199 if (params.receiver != root_) 203 if (params.receiver != root_)
200 return; 204 return;
201 DCHECK(params.old_parent || params.new_parent); 205 DCHECK(params.old_parent || params.new_parent);
202 if (!params.target) 206 if (!params.target)
203 return; 207 return;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 it != connections_.end(); ++it) { 275 it != connections_.end(); ++it) {
272 (*it)->NotifyCaptureChanged(GetIdForView(gained_capture)); 276 (*it)->NotifyCaptureChanged(GetIdForView(gained_capture));
273 } 277 }
274 if (gained_capture) 278 if (gained_capture)
275 gained_capture->MoveToFront(); 279 gained_capture->MoveToFront();
276 } 280 }
277 281
278 //////////////////////////////////////////////////////////////////////////////// 282 ////////////////////////////////////////////////////////////////////////////////
279 // WindowManagerApp, private: 283 // WindowManagerApp, private:
280 284
285 bool WindowManagerApp::SetCaptureImpl(View* view) {
286 CHECK(view);
287 capture_controller_->SetCapture(view);
288 return capture_controller_->GetCapture() == view;
289 }
290
291 bool WindowManagerApp::FocusWindowImpl(View* view) {
292 CHECK(view);
293 focus_controller_->FocusView(view);
294 return focus_controller_->GetFocusedView() == view;
295 }
296
297 bool WindowManagerApp::ActivateWindowImpl(View* view) {
298 CHECK(view);
299 focus_controller_->ActivateView(view);
300 return focus_controller_->GetActiveView() == view;
301 }
302
281 void WindowManagerApp::RegisterSubtree(View* view) { 303 void WindowManagerApp::RegisterSubtree(View* view) {
282 view->AddObserver(this); 304 view->AddObserver(this);
283 DCHECK(registered_view_id_set_.find(view->id()) == 305 DCHECK(registered_view_id_set_.find(view->id()) ==
284 registered_view_id_set_.end()); 306 registered_view_id_set_.end());
285 // All events pass through the root during dispatch, so we only need a handler 307 // All events pass through the root during dispatch, so we only need a handler
286 // installed there. 308 // installed there.
287 if (view == root_) { 309 if (view == root_) {
288 ViewTarget* target = ViewTarget::TargetFromView(view); 310 ViewTarget* target = ViewTarget::TargetFromView(view);
289 target->SetEventTargeter(scoped_ptr<ViewTargeter>(new ViewTargeter())); 311 target->SetEventTargeter(scoped_ptr<ViewTargeter>(new ViewTargeter()));
290 target->AddPreTargetHandler(this); 312 target->AddPreTargetHandler(this);
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 void WindowManagerApp::SetViewManagerClient( 399 void WindowManagerApp::SetViewManagerClient(
378 mojo::ScopedMessagePipeHandle view_manager_client_request) { 400 mojo::ScopedMessagePipeHandle view_manager_client_request) {
379 view_manager_client_.reset( 401 view_manager_client_.reset(
380 mojo::ViewManagerClientFactory::WeakBindViewManagerToPipe( 402 mojo::ViewManagerClientFactory::WeakBindViewManagerToPipe(
381 mojo::MakeRequest<mojo::ViewManagerClient>( 403 mojo::MakeRequest<mojo::ViewManagerClient>(
382 view_manager_client_request.Pass()), 404 view_manager_client_request.Pass()),
383 view_manager_service_.Pass(), shell_, this)); 405 view_manager_service_.Pass(), shell_, this));
384 } 406 }
385 407
386 } // namespace window_manager 408 } // namespace window_manager
OLDNEW
« no previous file with comments | « services/window_manager/window_manager_app.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698