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