12c7479387c8df074cda20545d62277879b7b1e9
[platform/framework/web/crosswalk.git] / src / mojo / services / view_manager / access_policy_delegate.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_DELEGATE_H_
6 #define MOJO_SERVICES_VIEW_MANAGER_ACCESS_POLICY_DELEGATE_H_
7
8 #include <vector>
9
10 #include "base/containers/hash_tables.h"
11 #include "mojo/services/view_manager/ids.h"
12
13 namespace mojo {
14 namespace service {
15
16 class ServerView;
17
18 // Delegate used by the AccessPolicy implementations to get state.
19 class AccessPolicyDelegate {
20  public:
21   // Returns the ids of the roots views for this connection. That is, this is
22   // the set of views the connection was embedded at.
23   virtual const base::hash_set<Id>& GetRootsForAccessPolicy() const = 0;
24
25   // Returns true if |view| has been exposed to the client.
26   virtual bool IsViewKnownForAccessPolicy(const ServerView* view) const = 0;
27
28   // Returns true if Embed(view) has been invoked on |view|.
29   virtual bool IsViewRootOfAnotherConnectionForAccessPolicy(
30       const ServerView* view) const = 0;
31
32  protected:
33   virtual ~AccessPolicyDelegate() {}
34 };
35
36 }  // namespace service
37 }  // namespace mojo
38
39 #endif  // MOJO_SERVICES_VIEW_MANAGER_ACCESS_POLICY_DELEGATE_H_