15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "mojo/services/view_manager/window_manager_access_policy.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "mojo/services/view_manager/access_policy_delegate.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/services/view_manager/server_view.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace mojo { 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace service { 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// TODO(sky): document why this differs from default for each case. Maybe want 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// to subclass DefaultAccessPolicy. 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)WindowManagerAccessPolicy::WindowManagerAccessPolicy( 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ConnectionSpecificId connection_id, 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) AccessPolicyDelegate* delegate) 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : connection_id_(connection_id), 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) delegate_(delegate) { 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)WindowManagerAccessPolicy::~WindowManagerAccessPolicy() { 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanRemoveViewFromParent( 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* view) const { 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanAddView(const ServerView* parent, 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* child) const { 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanReorderView(const ServerView* view, 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* relative_view, 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) OrderDirection direction) const { 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanDeleteView(const ServerView* view) const { 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return view->id().connection_id == connection_id_; 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanGetViewTree(const ServerView* view) const { 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanDescendIntoViewForViewTree( 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* view) const { 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanEmbed(const ServerView* view) const { 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return view->id().connection_id == connection_id_; 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanChangeViewVisibility( 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* view) const { 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return view->id().connection_id == connection_id_; 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanSetViewSurfaceId( 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* view) const { 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (delegate_->IsViewRootOfAnotherConnectionForAccessPolicy(view)) 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return false; 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return view->id().connection_id == connection_id_ || 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (delegate_->GetRootsForAccessPolicy().count( 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ViewIdToTransportId(view->id())) > 0); 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::CanSetViewBounds(const ServerView* view) const { 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return view->id().connection_id == connection_id_; 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool WindowManagerAccessPolicy::ShouldNotifyOnHierarchyChange( 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* view, 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView** new_parent, 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView** old_parent) const { 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Notify if we've already told the window manager about the view, or if we've 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // already told the window manager about the parent. The later handles the 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // case of a view that wasn't parented to the root getting added to the root. 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return IsViewKnown(view) || (*new_parent && IsViewKnown(*new_parent)); 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool WindowManagerAccessPolicy::IsViewKnown(const ServerView* view) const { 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return delegate_->IsViewKnownForAccessPolicy(view); 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace service 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace mojo 93