Index: chrome/browser/policy/profile_policy_connector_factory.cc |
diff --git a/chrome/browser/policy/profile_policy_connector_factory.cc b/chrome/browser/policy/profile_policy_connector_factory.cc |
index e5ec872b53680c03e51665bcc701bfb776b2968c..9c91e00654ac1cce22610b63540d519e5d532a4c 100644 |
--- a/chrome/browser/policy/profile_policy_connector_factory.cc |
+++ b/chrome/browser/policy/profile_policy_connector_factory.cc |
@@ -9,10 +9,12 @@ |
#include "chrome/browser/policy/profile_policy_connector.h" |
#include "chrome/browser/profiles/profile.h" |
#include "components/keyed_service/content/browser_context_dependency_manager.h" |
+#include "components/policy/core/common/policy_service.h" |
#if defined(ENABLE_CONFIGURATION_POLICY) |
#include "chrome/browser/policy/schema_registry_service.h" |
#include "chrome/browser/policy/schema_registry_service_factory.h" |
+#include "components/policy/core/common/policy_service_impl.h" |
#if defined(OS_CHROMEOS) |
#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" |
#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chromeos.h" |
@@ -52,6 +54,13 @@ void ProfilePolicyConnectorFactory::SetServiceForTesting( |
map_entry = connector; |
} |
+#if defined(ENABLE_CONFIGURATION_POLICY) |
+void ProfilePolicyConnectorFactory::PushProviderForTesting( |
+ ConfigurationPolicyProvider* provider) { |
+ test_providers_.push_back(provider); |
+} |
+#endif |
+ |
ProfilePolicyConnectorFactory::ProfilePolicyConnectorFactory() |
: BrowserContextKeyedBaseFactory( |
"ProfilePolicyConnector", |
@@ -108,12 +117,26 @@ ProfilePolicyConnectorFactory::CreateForProfileInternal( |
#endif // defined(ENABLE_CONFIGURATION_POLICY) |
ProfilePolicyConnector* connector = new ProfilePolicyConnector(); |
- connector->Init(force_immediate_load, |
-#if defined(ENABLE_CONFIGURATION_POLICY) && defined(OS_CHROMEOS) |
- user, |
+ |
+#if defined(ENABLE_CONFIGURATION_POLICY) |
+ if (test_providers_.empty()) { |
+ connector->Init(force_immediate_load, |
+#if defined(OS_CHROMEOS) |
+ user, |
#endif |
- schema_registry, |
- user_cloud_policy_manager); |
+ schema_registry, |
+ user_cloud_policy_manager); |
+ } else { |
+ PolicyServiceImpl::Providers providers; |
+ providers.push_back(test_providers_.front()); |
+ test_providers_.pop_front(); |
+ scoped_ptr<PolicyService> service(new PolicyServiceImpl(providers)); |
+ connector->InitForTesting(service.Pass()); |
+ } |
+#else |
+ connector->Init(false, NULL, NULL); |
+#endif |
+ |
connectors_[profile] = connector; |
return make_scoped_ptr(connector); |
} |