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)#ifndef MOJO_SERVICES_VIEW_MANAGER_ACCESS_POLICY_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define MOJO_SERVICES_VIEW_MANAGER_ACCESS_POLICY_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "mojo/services/public/interfaces/view_manager/view_manager_constants.mojom.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "mojo/services/view_manager/ids.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace mojo { 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace service { 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass ServerView; 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// AccessPolicy is used by ViewManagerServiceImpl to determine what a connection 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// is allowed to do. 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class AccessPolicy { 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~AccessPolicy() {} 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Unless otherwise mentioned all arguments have been validated. That is the 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // |view| arguments are non-null unless otherwise stated (eg CanSetView() is 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // allowed to take a NULL view). 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanRemoveViewFromParent(const ServerView* view) const = 0; 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanAddView(const ServerView* parent, 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* child) const = 0; 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanReorderView(const ServerView* view, 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* relative_view, 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) OrderDirection direction) const = 0; 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanDeleteView(const ServerView* view) const = 0; 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanGetViewTree(const ServerView* view) const = 0; 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Used when building a view tree (GetViewTree()) to decide if we should 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // descend into |view|. 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanDescendIntoViewForViewTree(const ServerView* view) const = 0; 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanEmbed(const ServerView* view) const = 0; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanChangeViewVisibility(const ServerView* view) const = 0; 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanSetViewSurfaceId(const ServerView* view) const = 0; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanSetViewBounds(const ServerView* view) const = 0; 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Returns whether the connection should notify on a hierarchy change. 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // |new_parent| and |old_parent| are initially set to the new and old parents 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // but may be altered so that the client only sees a certain set of views. 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual bool ShouldNotifyOnHierarchyChange( 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView* view, 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView** new_parent, 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServerView** old_parent) const = 0; 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace service 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace mojo 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // MOJO_SERVICES_VIEW_MANAGER_ACCESS_POLICY_H_ 54