1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef COMPONENTS_POLICY_CORE_COMMON_POLICY_TEST_UTILS_H_ 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define COMPONENTS_POLICY_CORE_COMMON_POLICY_TEST_UTILS_H_ 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <map> 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <ostream> 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <string> 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/basictypes.h" 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_details.h" 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_map.h" 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/policy_service.h" 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_types.h" 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace policy { 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class PolicyBundle; 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct PolicyNamespace; 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// A mapping of policy names to PolicyDetails that can be used to set the 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// PolicyDetails for test policies. 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class PolicyDetailsMap { 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PolicyDetailsMap(); 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ~PolicyDetailsMap(); 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // The returned callback's lifetime is tied to |this| object. 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) GetChromePolicyDetailsCallback GetCallback() const; 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Does not take ownership of |details|. 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void SetDetails(const std::string& policy, const PolicyDetails* details); 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private: 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) typedef std::map<std::string, const PolicyDetails*> PolicyDetailsMapping; 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const PolicyDetails* Lookup(const std::string& policy) const; 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PolicyDetailsMapping map_; 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PolicyDetailsMap); 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Returns true if |service| is not serving any policies. Otherwise logs the 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// current policies and returns false. 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool PolicyServiceIsEmpty(const PolicyService* service); 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_IOS) || defined(OS_MACOSX) 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Converts a base::Value to the equivalent CFPropertyListRef. 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// The returned value is owned by the caller. 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)CFPropertyListRef ValueToProperty(const base::Value* value); 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace policy 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)std::ostream& operator<<(std::ostream& os, const policy::PolicyBundle& bundle); 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)std::ostream& operator<<(std::ostream& os, policy::PolicyScope scope); 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)std::ostream& operator<<(std::ostream& os, policy::PolicyLevel level); 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)std::ostream& operator<<(std::ostream& os, policy::PolicyDomain domain); 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)std::ostream& operator<<(std::ostream& os, const policy::PolicyMap& policies); 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)std::ostream& operator<<(std::ostream& os, const policy::PolicyMap::Entry& e); 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)std::ostream& operator<<(std::ostream& os, const policy::PolicyNamespace& ns); 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 68a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // COMPONENTS_POLICY_CORE_COMMON_POLICY_TEST_UTILS_H_ 69