| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "components/view_manager/window_manager_access_policy.h" | |
| 6 | |
| 7 #include "components/view_manager/access_policy_delegate.h" | |
| 8 #include "components/view_manager/server_view.h" | |
| 9 | |
| 10 namespace view_manager { | |
| 11 | |
| 12 // TODO(sky): document why this differs from default for each case. Maybe want | |
| 13 // to subclass DefaultAccessPolicy. | |
| 14 | |
| 15 WindowManagerAccessPolicy::WindowManagerAccessPolicy( | |
| 16 mojo::ConnectionSpecificId connection_id, | |
| 17 AccessPolicyDelegate* delegate) | |
| 18 : connection_id_(connection_id), delegate_(delegate) { | |
| 19 } | |
| 20 | |
| 21 WindowManagerAccessPolicy::~WindowManagerAccessPolicy() { | |
| 22 } | |
| 23 | |
| 24 bool WindowManagerAccessPolicy::CanRemoveViewFromParent( | |
| 25 const ServerView* view) const { | |
| 26 return true; | |
| 27 } | |
| 28 | |
| 29 bool WindowManagerAccessPolicy::CanAddView(const ServerView* parent, | |
| 30 const ServerView* child) const { | |
| 31 return true; | |
| 32 } | |
| 33 | |
| 34 bool WindowManagerAccessPolicy::CanReorderView( | |
| 35 const ServerView* view, | |
| 36 const ServerView* relative_view, | |
| 37 mojo::OrderDirection direction) const { | |
| 38 return true; | |
| 39 } | |
| 40 | |
| 41 bool WindowManagerAccessPolicy::CanDeleteView(const ServerView* view) const { | |
| 42 return view->id().connection_id == connection_id_; | |
| 43 } | |
| 44 | |
| 45 bool WindowManagerAccessPolicy::CanGetViewTree(const ServerView* view) const { | |
| 46 return true; | |
| 47 } | |
| 48 | |
| 49 bool WindowManagerAccessPolicy::CanDescendIntoViewForViewTree( | |
| 50 const ServerView* view) const { | |
| 51 return true; | |
| 52 } | |
| 53 | |
| 54 bool WindowManagerAccessPolicy::CanEmbed(const ServerView* view) const { | |
| 55 return !delegate_->IsRootForAccessPolicy(view->id()); | |
| 56 } | |
| 57 | |
| 58 bool WindowManagerAccessPolicy::CanChangeViewVisibility( | |
| 59 const ServerView* view) const { | |
| 60 // The WindowManager can change the visibility of the root too. | |
| 61 return view->id().connection_id == connection_id_ || | |
| 62 (view->GetRoot() == view); | |
| 63 } | |
| 64 | |
| 65 bool WindowManagerAccessPolicy::CanSetViewSurfaceId( | |
| 66 const ServerView* view) const { | |
| 67 if (delegate_->IsViewRootOfAnotherConnectionForAccessPolicy(view)) | |
| 68 return false; | |
| 69 return view->id().connection_id == connection_id_ || | |
| 70 (delegate_->IsRootForAccessPolicy(view->id())); | |
| 71 } | |
| 72 | |
| 73 bool WindowManagerAccessPolicy::CanSetViewBounds(const ServerView* view) const { | |
| 74 return view->id().connection_id == connection_id_; | |
| 75 } | |
| 76 | |
| 77 bool WindowManagerAccessPolicy::CanSetViewProperties( | |
| 78 const ServerView* view) const { | |
| 79 return view->id().connection_id == connection_id_; | |
| 80 } | |
| 81 | |
| 82 bool WindowManagerAccessPolicy::CanSetViewTextInputState( | |
| 83 const ServerView* view) const { | |
| 84 return view->id().connection_id == connection_id_; | |
| 85 } | |
| 86 | |
| 87 bool WindowManagerAccessPolicy::CanSetFocus(const ServerView* view) const { | |
| 88 return true; | |
| 89 } | |
| 90 | |
| 91 bool WindowManagerAccessPolicy::CanSetAccessPolicy( | |
| 92 const ServerView* view) const { | |
| 93 return true; | |
| 94 } | |
| 95 | |
| 96 bool WindowManagerAccessPolicy::ShouldNotifyOnHierarchyChange( | |
| 97 const ServerView* view, | |
| 98 const ServerView** new_parent, | |
| 99 const ServerView** old_parent) const { | |
| 100 // Notify if we've already told the window manager about the view, or if we've | |
| 101 // already told the window manager about the parent. The later handles the | |
| 102 // case of a view that wasn't parented to the root getting added to the root. | |
| 103 return IsViewKnown(view) || (*new_parent && IsViewKnown(*new_parent)); | |
| 104 } | |
| 105 | |
| 106 const ServerView* WindowManagerAccessPolicy::GetViewForFocusChange( | |
| 107 const ServerView* focused) { | |
| 108 return focused; | |
| 109 } | |
| 110 | |
| 111 bool WindowManagerAccessPolicy::IsViewKnown(const ServerView* view) const { | |
| 112 return delegate_->IsViewKnownForAccessPolicy(view); | |
| 113 } | |
| 114 | |
| 115 } // namespace view_manager | |
| OLD | NEW |