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

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

Issue 1281663002: Mandoline: Allow submitting CompositorFrames directly to mojo::Views (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased + added uip::Surface 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 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/view_manager/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/view_manager/connection_manager.h"
10 #include "components/view_manager/default_access_policy.h" 10 #include "components/view_manager/default_access_policy.h"
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 } 645 }
646 646
647 void ViewTreeImpl::GetViewTree( 647 void ViewTreeImpl::GetViewTree(
648 Id view_id, 648 Id view_id,
649 const Callback<void(Array<ViewDataPtr>)>& callback) { 649 const Callback<void(Array<ViewDataPtr>)>& callback) {
650 std::vector<const ServerView*> views( 650 std::vector<const ServerView*> views(
651 GetViewTree(ViewIdFromTransportId(view_id))); 651 GetViewTree(ViewIdFromTransportId(view_id)));
652 callback.Run(ViewsToViewDatas(views)); 652 callback.Run(ViewsToViewDatas(views));
653 } 653 }
654 654
655 void ViewTreeImpl::SetViewSurfaceId(
656 Id view_id,
657 mojo::SurfaceIdPtr surface_id,
658 const Callback<void(bool)>& callback) {
659 // TODO(sky): add coverage of not being able to set for random node.
660 ServerView* view = GetView(ViewIdFromTransportId(view_id));
661 if (!view || !access_policy_->CanSetViewSurfaceId(view)) {
662 callback.Run(false);
663 return;
664 }
665 view->SetSurfaceId(surface_id.To<cc::SurfaceId>());
666 callback.Run(true);
667 }
668
669 void ViewTreeImpl::SetViewBounds( 655 void ViewTreeImpl::SetViewBounds(
670 Id view_id, 656 Id view_id,
671 mojo::RectPtr bounds, 657 mojo::RectPtr bounds,
672 const Callback<void(bool)>& callback) { 658 const Callback<void(bool)>& callback) {
673 ServerView* view = GetView(ViewIdFromTransportId(view_id)); 659 ServerView* view = GetView(ViewIdFromTransportId(view_id));
674 const bool success = view && access_policy_->CanSetViewBounds(view); 660 const bool success = view && access_policy_->CanSetViewBounds(view);
675 if (success) { 661 if (success) {
676 ConnectionManager::ScopedChange change(this, connection_manager_, false); 662 ConnectionManager::ScopedChange change(this, connection_manager_, false);
677 view->SetBounds(bounds.To<gfx::Rect>()); 663 view->SetBounds(bounds.To<gfx::Rect>());
678 } 664 }
(...skipping 21 matching lines...) Expand all
700 if (value.is_null()) { 686 if (value.is_null()) {
701 view->SetProperty(name, nullptr); 687 view->SetProperty(name, nullptr);
702 } else { 688 } else {
703 std::vector<uint8_t> data = value.To<std::vector<uint8_t>>(); 689 std::vector<uint8_t> data = value.To<std::vector<uint8_t>>();
704 view->SetProperty(name, &data); 690 view->SetProperty(name, &data);
705 } 691 }
706 } 692 }
707 callback.Run(success); 693 callback.Run(success);
708 } 694 }
709 695
696 void ViewTreeImpl::RequestSurface(
697 mojo::Id view_id,
698 mojo::InterfaceRequest<mojo::Surface> surface,
699 mojo::SurfaceClientPtr client) {
700 ServerView* view = GetView(ViewIdFromTransportId(view_id));
sky 2015/08/26 22:58:03 You'll want to reset the surface/client if this is
Fady Samuel 2015/08/26 23:51:01 Done.
701 const bool success = view && access_policy_->CanSetViewSurfaceId(view);
702 if (!success)
703 return;
704 view->Bind(surface.Pass(), client.Pass());
705 }
706
710 void ViewTreeImpl::SetViewTextInputState( 707 void ViewTreeImpl::SetViewTextInputState(
711 uint32_t view_id, 708 uint32_t view_id,
712 mojo::TextInputStatePtr state) { 709 mojo::TextInputStatePtr state) {
713 ServerView* view = GetView(ViewIdFromTransportId(view_id)); 710 ServerView* view = GetView(ViewIdFromTransportId(view_id));
714 bool success = view && access_policy_->CanSetViewTextInputState(view); 711 bool success = view && access_policy_->CanSetViewTextInputState(view);
715 if (success) 712 if (success)
716 view->SetTextInputState(state.To<ui::TextInputState>()); 713 view->SetTextInputState(state.To<ui::TextInputState>());
717 } 714 }
718 715
719 void ViewTreeImpl::SetImeVisibility(uint32_t view_id, 716 void ViewTreeImpl::SetImeVisibility(uint32_t view_id,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 ViewTreeImpl* connection = 767 ViewTreeImpl* connection =
771 connection_manager_->GetConnectionWithRoot(view->id()); 768 connection_manager_->GetConnectionWithRoot(view->id());
772 return connection && connection != this; 769 return connection && connection != this;
773 } 770 }
774 771
775 bool ViewTreeImpl::IsDescendantOfEmbedRoot(const ServerView* view) { 772 bool ViewTreeImpl::IsDescendantOfEmbedRoot(const ServerView* view) {
776 return is_embed_root_ && root_ && GetView(*root_)->Contains(view); 773 return is_embed_root_ && root_ && GetView(*root_)->Contains(view);
777 } 774 }
778 775
779 } // namespace view_manager 776 } // namespace view_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698