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

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

Issue 1344573002: Mandoline: Rename components/view_manager to components/mus (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased 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
« no previous file with comments | « components/mus/view_tree_impl.h ('k') | components/mus/view_tree_unittest.cc » ('j') | 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 "components/view_manager/view_tree_impl.h" 5 #include "components/mus/view_tree_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "components/view_manager/connection_manager.h" 9 #include "components/mus/connection_manager.h"
10 #include "components/view_manager/default_access_policy.h" 10 #include "components/mus/default_access_policy.h"
11 #include "components/view_manager/display_manager.h" 11 #include "components/mus/display_manager.h"
12 #include "components/view_manager/server_view.h" 12 #include "components/mus/server_view.h"
13 #include "components/view_manager/view_tree_host_impl.h" 13 #include "components/mus/view_tree_host_impl.h"
14 #include "components/view_manager/window_manager_access_policy.h" 14 #include "components/mus/window_manager_access_policy.h"
15 #include "mojo/converters/geometry/geometry_type_converters.h" 15 #include "mojo/converters/geometry/geometry_type_converters.h"
16 #include "mojo/converters/ime/ime_type_converters.h" 16 #include "mojo/converters/ime/ime_type_converters.h"
17 #include "mojo/converters/input_events/input_events_type_converters.h" 17 #include "mojo/converters/input_events/input_events_type_converters.h"
18 #include "mojo/converters/surfaces/surfaces_type_converters.h" 18 #include "mojo/converters/surfaces/surfaces_type_converters.h"
19 #include "ui/platform_window/text_input_state.h" 19 #include "ui/platform_window/text_input_state.h"
20 20
21 using mojo::Array; 21 using mojo::Array;
22 using mojo::Callback; 22 using mojo::Callback;
23 using mojo::Id; 23 using mojo::Id;
24 using mojo::InterfaceRequest; 24 using mojo::InterfaceRequest;
25 using mojo::OrderDirection; 25 using mojo::OrderDirection;
26 using mojo::Rect; 26 using mojo::Rect;
27 using mojo::ServiceProvider; 27 using mojo::ServiceProvider;
28 using mojo::ServiceProviderPtr; 28 using mojo::ServiceProviderPtr;
29 using mojo::String; 29 using mojo::String;
30 using mojo::ViewDataPtr; 30 using mojo::ViewDataPtr;
31 31
32 namespace view_manager { 32 namespace view_manager {
33 33
34 ViewTreeImpl::ViewTreeImpl( 34 ViewTreeImpl::ViewTreeImpl(ConnectionManager* connection_manager,
35 ConnectionManager* connection_manager, 35 mojo::ConnectionSpecificId creator_id,
36 mojo::ConnectionSpecificId creator_id, 36 const ViewId& root_id)
37 const ViewId& root_id)
38 : connection_manager_(connection_manager), 37 : connection_manager_(connection_manager),
39 id_(connection_manager_->GetAndAdvanceNextConnectionId()), 38 id_(connection_manager_->GetAndAdvanceNextConnectionId()),
40 creator_id_(creator_id), 39 creator_id_(creator_id),
41 client_(nullptr), 40 client_(nullptr),
42 is_embed_root_(false) { 41 is_embed_root_(false) {
43 ServerView* view = GetView(root_id); 42 ServerView* view = GetView(root_id);
44 CHECK(view); 43 CHECK(view);
45 root_.reset(new ViewId(root_id)); 44 root_.reset(new ViewId(root_id));
46 if (view->GetRoot() == view) { 45 if (view->GetRoot() == view) {
47 access_policy_.reset(new WindowManagerAccessPolicy(id_, this)); 46 access_policy_.reset(new WindowManagerAccessPolicy(id_, this));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 return i == view_map_.end() ? NULL : i->second; 83 return i == view_map_.end() ? NULL : i->second;
85 } 84 }
86 return connection_manager_->GetView(id); 85 return connection_manager_->GetView(id);
87 } 86 }
88 87
89 bool ViewTreeImpl::IsRoot(const ViewId& id) const { 88 bool ViewTreeImpl::IsRoot(const ViewId& id) const {
90 return root_.get() && *root_ == id; 89 return root_.get() && *root_ == id;
91 } 90 }
92 91
93 ViewTreeHostImpl* ViewTreeImpl::GetHost() { 92 ViewTreeHostImpl* ViewTreeImpl::GetHost() {
94 return root_.get() ? 93 return root_.get()
95 connection_manager_->GetViewTreeHostByView(GetView(*root_)) : nullptr; 94 ? connection_manager_->GetViewTreeHostByView(GetView(*root_))
95 : nullptr;
96 } 96 }
97 97
98 void ViewTreeImpl::OnWillDestroyViewTreeImpl( 98 void ViewTreeImpl::OnWillDestroyViewTreeImpl(ViewTreeImpl* connection) {
99 ViewTreeImpl* connection) {
100 if (creator_id_ == connection->id()) 99 if (creator_id_ == connection->id())
101 creator_id_ = kInvalidConnectionId; 100 creator_id_ = kInvalidConnectionId;
102 const ServerView* connection_root = 101 const ServerView* connection_root =
103 connection->root_ ? connection->GetView(*connection->root_) : nullptr; 102 connection->root_ ? connection->GetView(*connection->root_) : nullptr;
104 if (connection_root && 103 if (connection_root &&
105 ((connection_root->id().connection_id == id_ && 104 ((connection_root->id().connection_id == id_ &&
106 view_map_.count(connection_root->id().view_id) > 0) || 105 view_map_.count(connection_root->id().view_id) > 0) ||
107 (is_embed_root_ && IsViewKnown(connection_root)))) { 106 (is_embed_root_ && IsViewKnown(connection_root)))) {
108 client()->OnEmbeddedAppDisconnected( 107 client()->OnEmbeddedAppDisconnected(
109 ViewIdToTransportId(*connection->root_)); 108 ViewIdToTransportId(*connection->root_));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 return true; 167 return true;
169 } 168 }
170 169
171 void ViewTreeImpl::Embed(const ViewId& view_id, mojo::URLRequestPtr request) { 170 void ViewTreeImpl::Embed(const ViewId& view_id, mojo::URLRequestPtr request) {
172 if (!CanEmbed(view_id)) 171 if (!CanEmbed(view_id))
173 return; 172 return;
174 PrepareForEmbed(view_id); 173 PrepareForEmbed(view_id);
175 connection_manager_->EmbedAtView(id_, view_id, request.Pass()); 174 connection_manager_->EmbedAtView(id_, view_id, request.Pass());
176 } 175 }
177 176
178 void ViewTreeImpl::ProcessViewBoundsChanged( 177 void ViewTreeImpl::ProcessViewBoundsChanged(const ServerView* view,
179 const ServerView* view, 178 const gfx::Rect& old_bounds,
180 const gfx::Rect& old_bounds, 179 const gfx::Rect& new_bounds,
181 const gfx::Rect& new_bounds, 180 bool originated_change) {
182 bool originated_change) {
183 if (originated_change || !IsViewKnown(view)) 181 if (originated_change || !IsViewKnown(view))
184 return; 182 return;
185 client()->OnViewBoundsChanged(ViewIdToTransportId(view->id()), 183 client()->OnViewBoundsChanged(ViewIdToTransportId(view->id()),
186 Rect::From(old_bounds), 184 Rect::From(old_bounds), Rect::From(new_bounds));
187 Rect::From(new_bounds));
188 } 185 }
189 186
190 void ViewTreeImpl::ProcessViewportMetricsChanged( 187 void ViewTreeImpl::ProcessViewportMetricsChanged(
191 const mojo::ViewportMetrics& old_metrics, 188 const mojo::ViewportMetrics& old_metrics,
192 const mojo::ViewportMetrics& new_metrics, 189 const mojo::ViewportMetrics& new_metrics,
193 bool originated_change) { 190 bool originated_change) {
194 client()->OnViewViewportMetricsChanged(old_metrics.Clone(), 191 client()->OnViewViewportMetricsChanged(old_metrics.Clone(),
195 new_metrics.Clone()); 192 new_metrics.Clone());
196 } 193 }
197 194
198 void ViewTreeImpl::ProcessWillChangeViewHierarchy( 195 void ViewTreeImpl::ProcessWillChangeViewHierarchy(const ServerView* view,
199 const ServerView* view, 196 const ServerView* new_parent,
200 const ServerView* new_parent, 197 const ServerView* old_parent,
201 const ServerView* old_parent, 198 bool originated_change) {
202 bool originated_change) {
203 if (originated_change) 199 if (originated_change)
204 return; 200 return;
205 201
206 const bool old_drawn = view->IsDrawn(); 202 const bool old_drawn = view->IsDrawn();
207 const bool new_drawn = view->visible() && new_parent && new_parent->IsDrawn(); 203 const bool new_drawn = view->visible() && new_parent && new_parent->IsDrawn();
208 if (old_drawn == new_drawn) 204 if (old_drawn == new_drawn)
209 return; 205 return;
210 206
211 NotifyDrawnStateChanged(view, new_drawn); 207 NotifyDrawnStateChanged(view, new_drawn);
212 } 208 }
213 209
214 void ViewTreeImpl::ProcessViewPropertyChanged( 210 void ViewTreeImpl::ProcessViewPropertyChanged(
215 const ServerView* view, 211 const ServerView* view,
216 const std::string& name, 212 const std::string& name,
217 const std::vector<uint8_t>* new_data, 213 const std::vector<uint8_t>* new_data,
218 bool originated_change) { 214 bool originated_change) {
219 if (originated_change) 215 if (originated_change)
220 return; 216 return;
221 217
222 Array<uint8_t> data; 218 Array<uint8_t> data;
223 if (new_data) 219 if (new_data)
224 data = Array<uint8_t>::From(*new_data); 220 data = Array<uint8_t>::From(*new_data);
225 221
226 client()->OnViewSharedPropertyChanged(ViewIdToTransportId(view->id()), 222 client()->OnViewSharedPropertyChanged(ViewIdToTransportId(view->id()),
227 String(name), data.Pass()); 223 String(name), data.Pass());
228 } 224 }
229 225
230 void ViewTreeImpl::ProcessViewHierarchyChanged( 226 void ViewTreeImpl::ProcessViewHierarchyChanged(const ServerView* view,
231 const ServerView* view, 227 const ServerView* new_parent,
232 const ServerView* new_parent, 228 const ServerView* old_parent,
233 const ServerView* old_parent, 229 bool originated_change) {
234 bool originated_change) {
235 if (originated_change && !IsViewKnown(view) && new_parent && 230 if (originated_change && !IsViewKnown(view) && new_parent &&
236 IsViewKnown(new_parent)) { 231 IsViewKnown(new_parent)) {
237 std::vector<const ServerView*> unused; 232 std::vector<const ServerView*> unused;
238 GetUnknownViewsFrom(view, &unused); 233 GetUnknownViewsFrom(view, &unused);
239 } 234 }
240 if (originated_change || connection_manager_->is_processing_delete_view() || 235 if (originated_change || connection_manager_->is_processing_delete_view() ||
241 connection_manager_->DidConnectionMessageClient(id_)) { 236 connection_manager_->DidConnectionMessageClient(id_)) {
242 return; 237 return;
243 } 238 }
244 239
245 if (!access_policy_->ShouldNotifyOnHierarchyChange( 240 if (!access_policy_->ShouldNotifyOnHierarchyChange(view, &new_parent,
246 view, &new_parent, &old_parent)) { 241 &old_parent)) {
247 return; 242 return;
248 } 243 }
249 // Inform the client of any new views and update the set of views we know 244 // Inform the client of any new views and update the set of views we know
250 // about. 245 // about.
251 std::vector<const ServerView*> to_send; 246 std::vector<const ServerView*> to_send;
252 if (!IsViewKnown(view)) 247 if (!IsViewKnown(view))
253 GetUnknownViewsFrom(view, &to_send); 248 GetUnknownViewsFrom(view, &to_send);
254 const ViewId new_parent_id(new_parent ? new_parent->id() : ViewId()); 249 const ViewId new_parent_id(new_parent ? new_parent->id() : ViewId());
255 const ViewId old_parent_id(old_parent ? old_parent->id() : ViewId()); 250 const ViewId old_parent_id(old_parent ? old_parent->id() : ViewId());
256 client()->OnViewHierarchyChanged(ViewIdToTransportId(view->id()), 251 client()->OnViewHierarchyChanged(
257 ViewIdToTransportId(new_parent_id), 252 ViewIdToTransportId(view->id()), ViewIdToTransportId(new_parent_id),
258 ViewIdToTransportId(old_parent_id), 253 ViewIdToTransportId(old_parent_id), ViewsToViewDatas(to_send));
259 ViewsToViewDatas(to_send));
260 connection_manager_->OnConnectionMessagedClient(id_); 254 connection_manager_->OnConnectionMessagedClient(id_);
261 } 255 }
262 256
263 void ViewTreeImpl::ProcessViewReorder(const ServerView* view, 257 void ViewTreeImpl::ProcessViewReorder(const ServerView* view,
264 const ServerView* relative_view, 258 const ServerView* relative_view,
265 OrderDirection direction, 259 OrderDirection direction,
266 bool originated_change) { 260 bool originated_change) {
267 if (originated_change || !IsViewKnown(view) || !IsViewKnown(relative_view)) 261 if (originated_change || !IsViewKnown(view) || !IsViewKnown(relative_view))
268 return; 262 return;
269 263
(...skipping 14 matching lines...) Expand all
284 278
285 if (originated_change) 279 if (originated_change)
286 return; 280 return;
287 281
288 if (in_known) { 282 if (in_known) {
289 client()->OnViewDeleted(ViewIdToTransportId(view)); 283 client()->OnViewDeleted(ViewIdToTransportId(view));
290 connection_manager_->OnConnectionMessagedClient(id_); 284 connection_manager_->OnConnectionMessagedClient(id_);
291 } 285 }
292 } 286 }
293 287
294 void ViewTreeImpl::ProcessWillChangeViewVisibility( 288 void ViewTreeImpl::ProcessWillChangeViewVisibility(const ServerView* view,
295 const ServerView* view, 289 bool originated_change) {
296 bool originated_change) {
297 if (originated_change) 290 if (originated_change)
298 return; 291 return;
299 292
300 if (IsViewKnown(view)) { 293 if (IsViewKnown(view)) {
301 client()->OnViewVisibilityChanged(ViewIdToTransportId(view->id()), 294 client()->OnViewVisibilityChanged(ViewIdToTransportId(view->id()),
302 !view->visible()); 295 !view->visible());
303 return; 296 return;
304 } 297 }
305 298
306 bool view_target_drawn_state; 299 bool view_target_drawn_state;
307 if (view->visible()) { 300 if (view->visible()) {
308 // View is being hidden, won't be drawn. 301 // View is being hidden, won't be drawn.
309 view_target_drawn_state = false; 302 view_target_drawn_state = false;
310 } else { 303 } else {
311 // View is being shown. View will be drawn if its parent is drawn. 304 // View is being shown. View will be drawn if its parent is drawn.
312 view_target_drawn_state = view->parent() && view->parent()->IsDrawn(); 305 view_target_drawn_state = view->parent() && view->parent()->IsDrawn();
313 } 306 }
314 307
315 NotifyDrawnStateChanged(view, view_target_drawn_state); 308 NotifyDrawnStateChanged(view, view_target_drawn_state);
316 } 309 }
317 310
318 void ViewTreeImpl::ProcessFocusChanged( 311 void ViewTreeImpl::ProcessFocusChanged(const ServerView* old_focused_view,
319 const ServerView* old_focused_view, 312 const ServerView* new_focused_view) {
320 const ServerView* new_focused_view) {
321 const ServerView* view = 313 const ServerView* view =
322 new_focused_view ? access_policy_->GetViewForFocusChange(new_focused_view) 314 new_focused_view ? access_policy_->GetViewForFocusChange(new_focused_view)
323 : nullptr; 315 : nullptr;
324 client()->OnViewFocused(view ? ViewIdToTransportId(view->id()) 316 client()->OnViewFocused(view ? ViewIdToTransportId(view->id())
325 : ViewIdToTransportId(ViewId())); 317 : ViewIdToTransportId(ViewId()));
326 } 318 }
327 319
328 bool ViewTreeImpl::IsViewKnown(const ServerView* view) const { 320 bool ViewTreeImpl::IsViewKnown(const ServerView* view) const {
329 return known_views_.count(ViewIdToTransportId(view->id())) > 0; 321 return known_views_.count(ViewIdToTransportId(view->id())) > 0;
330 } 322 }
(...skipping 25 matching lines...) Expand all
356 } 348 }
357 349
358 bool ViewTreeImpl::DeleteViewImpl(ViewTreeImpl* source, ServerView* view) { 350 bool ViewTreeImpl::DeleteViewImpl(ViewTreeImpl* source, ServerView* view) {
359 DCHECK(view); 351 DCHECK(view);
360 DCHECK_EQ(view->id().connection_id, id_); 352 DCHECK_EQ(view->id().connection_id, id_);
361 ConnectionManager::ScopedChange change(source, connection_manager_, true); 353 ConnectionManager::ScopedChange change(source, connection_manager_, true);
362 delete view; 354 delete view;
363 return true; 355 return true;
364 } 356 }
365 357
366 void ViewTreeImpl::GetUnknownViewsFrom( 358 void ViewTreeImpl::GetUnknownViewsFrom(const ServerView* view,
367 const ServerView* view, 359 std::vector<const ServerView*>* views) {
368 std::vector<const ServerView*>* views) {
369 if (IsViewKnown(view) || !access_policy_->CanGetViewTree(view)) 360 if (IsViewKnown(view) || !access_policy_->CanGetViewTree(view))
370 return; 361 return;
371 views->push_back(view); 362 views->push_back(view);
372 known_views_.insert(ViewIdToTransportId(view->id())); 363 known_views_.insert(ViewIdToTransportId(view->id()));
373 if (!access_policy_->CanDescendIntoViewForViewTree(view)) 364 if (!access_policy_->CanDescendIntoViewForViewTree(view))
374 return; 365 return;
375 std::vector<const ServerView*> children(view->GetChildren()); 366 std::vector<const ServerView*> children(view->GetChildren());
376 for (size_t i = 0 ; i < children.size(); ++i) 367 for (size_t i = 0; i < children.size(); ++i)
377 GetUnknownViewsFrom(children[i], views); 368 GetUnknownViewsFrom(children[i], views);
378 } 369 }
379 370
380 void ViewTreeImpl::RemoveFromKnown( 371 void ViewTreeImpl::RemoveFromKnown(const ServerView* view,
381 const ServerView* view, 372 std::vector<ServerView*>* local_views) {
382 std::vector<ServerView*>* local_views) {
383 if (view->id().connection_id == id_) { 373 if (view->id().connection_id == id_) {
384 if (local_views) 374 if (local_views)
385 local_views->push_back(GetView(view->id())); 375 local_views->push_back(GetView(view->id()));
386 return; 376 return;
387 } 377 }
388 known_views_.erase(ViewIdToTransportId(view->id())); 378 known_views_.erase(ViewIdToTransportId(view->id()));
389 std::vector<const ServerView*> children = view->GetChildren(); 379 std::vector<const ServerView*> children = view->GetChildren();
390 for (size_t i = 0; i < children.size(); ++i) 380 for (size_t i = 0; i < children.size(); ++i)
391 RemoveFromKnown(children[i], local_views); 381 RemoveFromKnown(children[i], local_views);
392 } 382 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 436
447 if (!access_policy_->CanGetViewTree(view)) 437 if (!access_policy_->CanGetViewTree(view))
448 return; 438 return;
449 439
450 views->push_back(view); 440 views->push_back(view);
451 441
452 if (!access_policy_->CanDescendIntoViewForViewTree(view)) 442 if (!access_policy_->CanDescendIntoViewForViewTree(view))
453 return; 443 return;
454 444
455 std::vector<const ServerView*> children(view->GetChildren()); 445 std::vector<const ServerView*> children(view->GetChildren());
456 for (size_t i = 0 ; i < children.size(); ++i) 446 for (size_t i = 0; i < children.size(); ++i)
457 GetViewTreeImpl(children[i], views); 447 GetViewTreeImpl(children[i], views);
458 } 448 }
459 449
460 void ViewTreeImpl::NotifyDrawnStateChanged(const ServerView* view, 450 void ViewTreeImpl::NotifyDrawnStateChanged(const ServerView* view,
461 bool new_drawn_value) { 451 bool new_drawn_value) {
462 // Even though we don't know about view, it may be an ancestor of our root, in 452 // Even though we don't know about view, it may be an ancestor of our root, in
463 // which case the change may effect our roots drawn state. 453 // which case the change may effect our roots drawn state.
464 if (!root_.get()) 454 if (!root_.get())
465 return; 455 return;
466 456
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 498
509 void ViewTreeImpl::RemoveChildrenAsPartOfEmbed(const ViewId& view_id) { 499 void ViewTreeImpl::RemoveChildrenAsPartOfEmbed(const ViewId& view_id) {
510 ServerView* view = GetView(view_id); 500 ServerView* view = GetView(view_id);
511 CHECK(view); 501 CHECK(view);
512 CHECK(view->id().connection_id == view_id.connection_id); 502 CHECK(view->id().connection_id == view_id.connection_id);
513 std::vector<ServerView*> children = view->GetChildren(); 503 std::vector<ServerView*> children = view->GetChildren();
514 for (size_t i = 0; i < children.size(); ++i) 504 for (size_t i = 0; i < children.size(); ++i)
515 view->Remove(children[i]); 505 view->Remove(children[i]);
516 } 506 }
517 507
518 void ViewTreeImpl::CreateView( 508 void ViewTreeImpl::CreateView(Id transport_view_id,
519 Id transport_view_id, 509 const Callback<void(mojo::ErrorCode)>& callback) {
520 const Callback<void(mojo::ErrorCode)>& callback) {
521 callback.Run(CreateView(ViewIdFromTransportId(transport_view_id))); 510 callback.Run(CreateView(ViewIdFromTransportId(transport_view_id)));
522 } 511 }
523 512
524 void ViewTreeImpl::DeleteView( 513 void ViewTreeImpl::DeleteView(Id transport_view_id,
525 Id transport_view_id, 514 const Callback<void(bool)>& callback) {
526 const Callback<void(bool)>& callback) {
527 ServerView* view = GetView(ViewIdFromTransportId(transport_view_id)); 515 ServerView* view = GetView(ViewIdFromTransportId(transport_view_id));
528 bool success = false; 516 bool success = false;
529 if (view && access_policy_->CanDeleteView(view)) { 517 if (view && access_policy_->CanDeleteView(view)) {
530 ViewTreeImpl* connection = 518 ViewTreeImpl* connection =
531 connection_manager_->GetConnection(view->id().connection_id); 519 connection_manager_->GetConnection(view->id().connection_id);
532 success = connection && connection->DeleteViewImpl(this, view); 520 success = connection && connection->DeleteViewImpl(this, view);
533 } 521 }
534 callback.Run(success); 522 callback.Run(success);
535 } 523 }
536 524
537 void ViewTreeImpl::AddView( 525 void ViewTreeImpl::AddView(Id parent_id,
538 Id parent_id, 526 Id child_id,
539 Id child_id, 527 const Callback<void(bool)>& callback) {
540 const Callback<void(bool)>& callback) {
541 callback.Run(AddView(ViewIdFromTransportId(parent_id), 528 callback.Run(AddView(ViewIdFromTransportId(parent_id),
542 ViewIdFromTransportId(child_id))); 529 ViewIdFromTransportId(child_id)));
543 } 530 }
544 531
545 void ViewTreeImpl::RemoveViewFromParent( 532 void ViewTreeImpl::RemoveViewFromParent(Id view_id,
546 Id view_id, 533 const Callback<void(bool)>& callback) {
547 const Callback<void(bool)>& callback) {
548 bool success = false; 534 bool success = false;
549 ServerView* view = GetView(ViewIdFromTransportId(view_id)); 535 ServerView* view = GetView(ViewIdFromTransportId(view_id));
550 if (view && view->parent() && access_policy_->CanRemoveViewFromParent(view)) { 536 if (view && view->parent() && access_policy_->CanRemoveViewFromParent(view)) {
551 success = true; 537 success = true;
552 ConnectionManager::ScopedChange change(this, connection_manager_, false); 538 ConnectionManager::ScopedChange change(this, connection_manager_, false);
553 view->parent()->Remove(view); 539 view->parent()->Remove(view);
554 } 540 }
555 callback.Run(success); 541 callback.Run(success);
556 } 542 }
557 543
(...skipping 14 matching lines...) Expand all
572 } 558 }
573 559
574 void ViewTreeImpl::GetViewTree( 560 void ViewTreeImpl::GetViewTree(
575 Id view_id, 561 Id view_id,
576 const Callback<void(Array<ViewDataPtr>)>& callback) { 562 const Callback<void(Array<ViewDataPtr>)>& callback) {
577 std::vector<const ServerView*> views( 563 std::vector<const ServerView*> views(
578 GetViewTree(ViewIdFromTransportId(view_id))); 564 GetViewTree(ViewIdFromTransportId(view_id)));
579 callback.Run(ViewsToViewDatas(views)); 565 callback.Run(ViewsToViewDatas(views));
580 } 566 }
581 567
582 void ViewTreeImpl::SetViewBounds( 568 void ViewTreeImpl::SetViewBounds(Id view_id,
583 Id view_id, 569 mojo::RectPtr bounds,
584 mojo::RectPtr bounds, 570 const Callback<void(bool)>& callback) {
585 const Callback<void(bool)>& callback) {
586 ServerView* view = GetView(ViewIdFromTransportId(view_id)); 571 ServerView* view = GetView(ViewIdFromTransportId(view_id));
587 const bool success = view && access_policy_->CanSetViewBounds(view); 572 const bool success = view && access_policy_->CanSetViewBounds(view);
588 if (success) { 573 if (success) {
589 ConnectionManager::ScopedChange change(this, connection_manager_, false); 574 ConnectionManager::ScopedChange change(this, connection_manager_, false);
590 view->SetBounds(bounds.To<gfx::Rect>()); 575 view->SetBounds(bounds.To<gfx::Rect>());
591 } 576 }
592 callback.Run(success); 577 callback.Run(success);
593 } 578 }
594 579
595 void ViewTreeImpl::SetViewVisibility( 580 void ViewTreeImpl::SetViewVisibility(Id transport_view_id,
596 Id transport_view_id, 581 bool visible,
597 bool visible, 582 const Callback<void(bool)>& callback) {
598 const Callback<void(bool)>& callback) {
599 callback.Run( 583 callback.Run(
600 SetViewVisibility(ViewIdFromTransportId(transport_view_id), visible)); 584 SetViewVisibility(ViewIdFromTransportId(transport_view_id), visible));
601 } 585 }
602 586
603 void ViewTreeImpl::SetViewProperty( 587 void ViewTreeImpl::SetViewProperty(uint32_t view_id,
604 uint32_t view_id, 588 const mojo::String& name,
605 const mojo::String& name, 589 mojo::Array<uint8_t> value,
606 mojo::Array<uint8_t> value, 590 const mojo::Callback<void(bool)>& callback) {
607 const mojo::Callback<void(bool)>& callback) {
608 ServerView* view = GetView(ViewIdFromTransportId(view_id)); 591 ServerView* view = GetView(ViewIdFromTransportId(view_id));
609 const bool success = view && access_policy_->CanSetViewProperties(view); 592 const bool success = view && access_policy_->CanSetViewProperties(view);
610 if (success) { 593 if (success) {
611 ConnectionManager::ScopedChange change(this, connection_manager_, false); 594 ConnectionManager::ScopedChange change(this, connection_manager_, false);
612 595
613 if (value.is_null()) { 596 if (value.is_null()) {
614 view->SetProperty(name, nullptr); 597 view->SetProperty(name, nullptr);
615 } else { 598 } else {
616 std::vector<uint8_t> data = value.To<std::vector<uint8_t>>(); 599 std::vector<uint8_t> data = value.To<std::vector<uint8_t>>();
617 view->SetProperty(name, &data); 600 view->SetProperty(name, &data);
618 } 601 }
619 } 602 }
620 callback.Run(success); 603 callback.Run(success);
621 } 604 }
622 605
623 void ViewTreeImpl::RequestSurface( 606 void ViewTreeImpl::RequestSurface(mojo::Id view_id,
624 mojo::Id view_id, 607 mojo::InterfaceRequest<mojo::Surface> surface,
625 mojo::InterfaceRequest<mojo::Surface> surface, 608 mojo::SurfaceClientPtr client) {
626 mojo::SurfaceClientPtr client) {
627 ServerView* view = GetView(ViewIdFromTransportId(view_id)); 609 ServerView* view = GetView(ViewIdFromTransportId(view_id));
628 const bool success = view && access_policy_->CanSetViewSurfaceId(view); 610 const bool success = view && access_policy_->CanSetViewSurfaceId(view);
629 if (!success) 611 if (!success)
630 return; 612 return;
631 view->Bind(surface.Pass(), client.Pass()); 613 view->Bind(surface.Pass(), client.Pass());
632 } 614 }
633 615
634 void ViewTreeImpl::SetViewTextInputState( 616 void ViewTreeImpl::SetViewTextInputState(uint32_t view_id,
635 uint32_t view_id, 617 mojo::TextInputStatePtr state) {
636 mojo::TextInputStatePtr state) {
637 ServerView* view = GetView(ViewIdFromTransportId(view_id)); 618 ServerView* view = GetView(ViewIdFromTransportId(view_id));
638 bool success = view && access_policy_->CanSetViewTextInputState(view); 619 bool success = view && access_policy_->CanSetViewTextInputState(view);
639 if (success) 620 if (success)
640 view->SetTextInputState(state.To<ui::TextInputState>()); 621 view->SetTextInputState(state.To<ui::TextInputState>());
641 } 622 }
642 623
643 void ViewTreeImpl::SetImeVisibility(Id transport_view_id, 624 void ViewTreeImpl::SetImeVisibility(Id transport_view_id,
644 bool visible, 625 bool visible,
645 mojo::TextInputStatePtr state) { 626 mojo::TextInputStatePtr state) {
646 ServerView* view = GetView(ViewIdFromTransportId(transport_view_id)); 627 ServerView* view = GetView(ViewIdFromTransportId(transport_view_id));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 ViewTreeImpl* connection = 686 ViewTreeImpl* connection =
706 connection_manager_->GetConnectionWithRoot(view->id()); 687 connection_manager_->GetConnectionWithRoot(view->id());
707 return connection && connection != this; 688 return connection && connection != this;
708 } 689 }
709 690
710 bool ViewTreeImpl::IsDescendantOfEmbedRoot(const ServerView* view) { 691 bool ViewTreeImpl::IsDescendantOfEmbedRoot(const ServerView* view) {
711 return is_embed_root_ && root_ && GetView(*root_)->Contains(view); 692 return is_embed_root_ && root_ && GetView(*root_)->Contains(view);
712 } 693 }
713 694
714 } // namespace view_manager 695 } // namespace view_manager
OLDNEW
« no previous file with comments | « components/mus/view_tree_impl.h ('k') | components/mus/view_tree_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698