Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / mojo / services / view_manager / access_policy.h
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_