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_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_
     40