Home | History | Annotate | Download | only in view_manager
      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 #ifndef MOJO_SERVICES_VIEW_MANAGER_ACCESS_POLICY_H_
      6 #define MOJO_SERVICES_VIEW_MANAGER_ACCESS_POLICY_H_
      7 
      8 #include "mojo/services/public/interfaces/view_manager/view_manager_constants.mojom.h"
      9 #include "mojo/services/view_manager/ids.h"
     10 
     11 namespace mojo {
     12 namespace service {
     13 
     14 class ServerView;
     15 
     16 // AccessPolicy is used by ViewManagerServiceImpl to determine what a connection
     17 // is allowed to do.
     18 class AccessPolicy {
     19  public:
     20   virtual ~AccessPolicy() {}
     21 
     22   // Unless otherwise mentioned all arguments have been validated. That is the
     23   // |view| arguments are non-null unless otherwise stated (eg CanSetView() is
     24   // allowed to take a NULL view).
     25   virtual bool CanRemoveViewFromParent(const ServerView* view) const = 0;
     26   virtual bool CanAddView(const ServerView* parent,
     27                           const ServerView* child) const = 0;
     28   virtual bool CanReorderView(const ServerView* view,
     29                               const ServerView* relative_view,
     30                               OrderDirection direction) const = 0;
     31   virtual bool CanDeleteView(const ServerView* view) const = 0;
     32   virtual bool CanGetViewTree(const ServerView* view) const = 0;
     33   // Used when building a view tree (GetViewTree()) to decide if we should
     34   // descend into |view|.
     35   virtual bool CanDescendIntoViewForViewTree(const ServerView* view) const = 0;
     36   virtual bool CanEmbed(const ServerView* view) const = 0;
     37   virtual bool CanChangeViewVisibility(const ServerView* view) const = 0;
     38   virtual bool CanSetViewSurfaceId(const ServerView* view) const = 0;
     39   virtual bool CanSetViewBounds(const ServerView* view) const = 0;
     40 
     41   // Returns whether the connection should notify on a hierarchy change.
     42   // |new_parent| and |old_parent| are initially set to the new and old parents
     43   // but may be altered so that the client only sees a certain set of views.
     44   virtual bool ShouldNotifyOnHierarchyChange(
     45       const ServerView* view,
     46       const ServerView** new_parent,
     47       const ServerView** old_parent) const = 0;
     48 };
     49 
     50 }  // namespace service
     51 }  // namespace mojo
     52 
     53 #endif  // MOJO_SERVICES_VIEW_MANAGER_ACCESS_POLICY_H_
     54