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

Side by Side Diff: components/mus/view_tree_host_impl.cc

Issue 1352043005: mus: Implement Window Server Capture Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added a test Created 5 years, 3 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 #include "components/mus/view_tree_host_impl.h" 5 #include "components/mus/view_tree_host_impl.h"
6 6
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "components/mus/connection_manager.h" 8 #include "components/mus/connection_manager.h"
9 #include "components/mus/display_manager.h" 9 #include "components/mus/display_manager.h"
10 #include "components/mus/focus_controller.h" 10 #include "components/mus/focus_controller.h"
(...skipping 13 matching lines...) Expand all
24 const scoped_refptr<GpuState>& gpu_state, 24 const scoped_refptr<GpuState>& gpu_state,
25 const scoped_refptr<SurfacesState>& surfaces_state) 25 const scoped_refptr<SurfacesState>& surfaces_state)
26 : delegate_(nullptr), 26 : delegate_(nullptr),
27 connection_manager_(connection_manager), 27 connection_manager_(connection_manager),
28 client_(client.Pass()), 28 client_(client.Pass()),
29 event_dispatcher_(this), 29 event_dispatcher_(this),
30 display_manager_(DisplayManager::Create(is_headless, 30 display_manager_(DisplayManager::Create(is_headless,
31 app_impl, 31 app_impl,
32 gpu_state, 32 gpu_state,
33 surfaces_state)), 33 surfaces_state)),
34 focus_controller_(new FocusController(this)) { 34 focus_controller_(new FocusController(this)),
35 captured_view_(nullptr) {
35 display_manager_->Init(this); 36 display_manager_->Init(this);
36 if (client_) { 37 if (client_) {
37 client_.set_connection_error_handler( 38 client_.set_connection_error_handler(
38 base::Bind(&ViewTreeHostImpl::OnClientClosed, base::Unretained(this))); 39 base::Bind(&ViewTreeHostImpl::OnClientClosed, base::Unretained(this)));
39 } 40 }
40 } 41 }
41 42
42 ViewTreeHostImpl::~ViewTreeHostImpl() {} 43 ViewTreeHostImpl::~ViewTreeHostImpl() {}
43 44
44 void ViewTreeHostImpl::Init(ViewTreeHostDelegate* delegate) { 45 void ViewTreeHostImpl::Init(ViewTreeHostDelegate* delegate) {
(...skipping 16 matching lines...) Expand all
61 display_manager_->SchedulePaint(view, bounds); 62 display_manager_->SchedulePaint(view, bounds);
62 return true; 63 return true;
63 } 64 }
64 return false; 65 return false;
65 } 66 }
66 67
67 const mojo::ViewportMetrics& ViewTreeHostImpl::GetViewportMetrics() const { 68 const mojo::ViewportMetrics& ViewTreeHostImpl::GetViewportMetrics() const {
68 return display_manager_->GetViewportMetrics(); 69 return display_manager_->GetViewportMetrics();
69 } 70 }
70 71
72 void ViewTreeHostImpl::SetCapture(ServerView* view) {
73 if (captured_view_) {
74 ViewTreeImpl* connection =
75 connection_manager_->GetConnection(captured_view_->id().connection_id);
76 if (connection) {
77 connection->ProcessLostCapture(captured_view_);
78 }
79 }
80 captured_view_ = view;
81 if (captured_view_)
82 display_manager_->SetCapture();
83 }
84
71 void ViewTreeHostImpl::SetFocusedView(ServerView* new_focused_view) { 85 void ViewTreeHostImpl::SetFocusedView(ServerView* new_focused_view) {
72 ServerView* old_focused_view = focus_controller_->GetFocusedView(); 86 ServerView* old_focused_view = focus_controller_->GetFocusedView();
73 if (old_focused_view == new_focused_view) 87 if (old_focused_view == new_focused_view)
74 return; 88 return;
75 DCHECK(root_view()->Contains(new_focused_view)); 89 DCHECK(root_view()->Contains(new_focused_view));
76 focus_controller_->SetFocusedView(new_focused_view); 90 focus_controller_->SetFocusedView(new_focused_view);
77 // TODO(beng): have the FocusController notify us via FocusControllerDelegate. 91 // TODO(beng): have the FocusController notify us via FocusControllerDelegate.
78 OnFocusChanged(old_focused_view, new_focused_view); 92 OnFocusChanged(old_focused_view, new_focused_view);
79 } 93 }
80 94
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 } 161 }
148 162
149 ServerView* ViewTreeHostImpl::GetRootView() { 163 ServerView* ViewTreeHostImpl::GetRootView() {
150 return root_.get(); 164 return root_.get();
151 } 165 }
152 166
153 void ViewTreeHostImpl::OnEvent(mojo::EventPtr event) { 167 void ViewTreeHostImpl::OnEvent(mojo::EventPtr event) {
154 event_dispatcher_.OnEvent(event.Pass()); 168 event_dispatcher_.OnEvent(event.Pass());
155 } 169 }
156 170
171 void ViewTreeHostImpl::OnLostCapture() {
172 SetCapture(nullptr);
173 }
174
157 void ViewTreeHostImpl::OnDisplayClosed() { 175 void ViewTreeHostImpl::OnDisplayClosed() {
158 if (delegate_) 176 if (delegate_)
159 delegate_->OnDisplayClosed(); 177 delegate_->OnDisplayClosed();
160 } 178 }
161 179
162 void ViewTreeHostImpl::OnViewportMetricsChanged( 180 void ViewTreeHostImpl::OnViewportMetricsChanged(
163 const mojo::ViewportMetrics& old_metrics, 181 const mojo::ViewportMetrics& old_metrics,
164 const mojo::ViewportMetrics& new_metrics) { 182 const mojo::ViewportMetrics& new_metrics) {
165 if (!root_) { 183 if (!root_) {
166 root_.reset(connection_manager_->CreateServerView( 184 root_.reset(connection_manager_->CreateServerView(
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 root_tree != embedded_connection_old && 250 root_tree != embedded_connection_old &&
233 root_tree != owning_connection_new && 251 root_tree != owning_connection_new &&
234 root_tree != embedded_connection_new) { 252 root_tree != embedded_connection_new) {
235 root_tree->ProcessFocusChanged(old_focused_view, new_focused_view); 253 root_tree->ProcessFocusChanged(old_focused_view, new_focused_view);
236 } 254 }
237 255
238 UpdateTextInputState(new_focused_view, new_focused_view->text_input_state()); 256 UpdateTextInputState(new_focused_view, new_focused_view->text_input_state());
239 } 257 }
240 258
241 } // namespace mus 259 } // namespace mus
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698