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_WINDOW_MANAGER_ACCESS_POLICY_H_
6#define MOJO_SERVICES_VIEW_MANAGER_WINDOW_MANAGER_ACCESS_POLICY_H_
7
8#include "base/basictypes.h"
9#include "mojo/services/view_manager/access_policy.h"
10
11namespace mojo {
12namespace service {
13
14class AccessPolicyDelegate;
15
16class WindowManagerAccessPolicy : public AccessPolicy {
17 public:
18  WindowManagerAccessPolicy(ConnectionSpecificId connection_id,
19                            AccessPolicyDelegate* delegate);
20  virtual ~WindowManagerAccessPolicy();
21
22  // AccessPolicy:
23  virtual bool CanRemoveViewFromParent(const ServerView* view) const OVERRIDE;
24  virtual bool CanAddView(const ServerView* parent,
25                          const ServerView* child) const OVERRIDE;
26  virtual bool CanReorderView(const ServerView* view,
27                              const ServerView* relative_view,
28                              OrderDirection direction) const OVERRIDE;
29  virtual bool CanDeleteView(const ServerView* view) const OVERRIDE;
30  virtual bool CanGetViewTree(const ServerView* view) const OVERRIDE;
31  virtual bool CanDescendIntoViewForViewTree(
32      const ServerView* view) const OVERRIDE;
33  virtual bool CanEmbed(const ServerView* view) const OVERRIDE;
34  virtual bool CanChangeViewVisibility(const ServerView* view) const OVERRIDE;
35  virtual bool CanSetViewSurfaceId(const ServerView* view) const OVERRIDE;
36  virtual bool CanSetViewBounds(const ServerView* view) const OVERRIDE;
37  virtual bool ShouldNotifyOnHierarchyChange(
38      const ServerView* view,
39      const ServerView** new_parent,
40      const ServerView** old_parent) const OVERRIDE;
41
42 private:
43  bool IsViewKnown(const ServerView* view) const;
44
45  const ConnectionSpecificId connection_id_;
46  AccessPolicyDelegate* delegate_;
47
48  DISALLOW_COPY_AND_ASSIGN(WindowManagerAccessPolicy);
49};
50
51}  // namespace service
52}  // namespace mojo
53
54#endif  // MOJO_SERVICES_VIEW_MANAGER_WINDOW_MANAGER_ACCESS_POLICY_H_
55