| Index: chrome/browser/extensions/api/storage/settings_apitest.cc
|
| diff --git a/chrome/browser/extensions/api/storage/settings_apitest.cc b/chrome/browser/extensions/api/storage/settings_apitest.cc
|
| index 00778a85cba34f63b616afabd92ef582d25ff93f..a8645f027717e125d75c47ae9733ece106ea5d5a 100644
|
| --- a/chrome/browser/extensions/api/storage/settings_apitest.cc
|
| +++ b/chrome/browser/extensions/api/storage/settings_apitest.cc
|
| @@ -6,6 +6,7 @@
|
| #include "base/json/json_writer.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/run_loop.h"
|
| +#include "base/values.h"
|
| #include "chrome/browser/extensions/api/storage/settings_frontend.h"
|
| #include "chrome/browser/extensions/api/storage/settings_namespace.h"
|
| #include "chrome/browser/extensions/api/storage/settings_sync_util.h"
|
| @@ -28,22 +29,23 @@
|
| #include "chrome/browser/policy/browser_policy_connector.h"
|
| #include "chrome/browser/policy/mock_configuration_policy_provider.h"
|
| #include "chrome/browser/policy/policy_bundle.h"
|
| -#include "chrome/browser/policy/policy_domain_descriptor.h"
|
| #include "chrome/browser/policy/policy_map.h"
|
| -#include "chrome/browser/policy/policy_service.h"
|
| -#include "chrome/browser/policy/profile_policy_connector.h"
|
| -#include "chrome/browser/policy/profile_policy_connector_factory.h"
|
| +#include "chrome/browser/policy/schema_map.h"
|
| +#include "chrome/browser/policy/schema_registry.h"
|
| +#include "chrome/browser/policy/schema_registry_service.h"
|
| +#include "chrome/browser/policy/schema_registry_service_factory.h"
|
| +#include "components/policy/core/common/policy_namespace.h"
|
| +#include "components/policy/core/common/schema.h"
|
| #endif
|
|
|
| namespace extensions {
|
|
|
| -using settings_namespace::FromString;
|
| using settings_namespace::LOCAL;
|
| using settings_namespace::MANAGED;
|
| using settings_namespace::Namespace;
|
| using settings_namespace::SYNC;
|
| using settings_namespace::ToString;
|
| -using testing::AnyNumber;
|
| +using testing::Mock;
|
| using testing::Return;
|
| using testing::_;
|
|
|
| @@ -100,6 +102,14 @@ class SyncChangeProcessorDelegate : public syncer::SyncChangeProcessor {
|
| DISALLOW_COPY_AND_ASSIGN(SyncChangeProcessorDelegate);
|
| };
|
|
|
| +class MockSchemaRegistryObserver : public policy::SchemaRegistry::Observer {
|
| + public:
|
| + MockSchemaRegistryObserver() {}
|
| + virtual ~MockSchemaRegistryObserver() {}
|
| +
|
| + MOCK_METHOD1(OnSchemaRegistryUpdated, void(bool));
|
| +};
|
| +
|
| } // namespace
|
|
|
| class ExtensionSettingsApiTest : public ExtensionApiTest {
|
| @@ -110,7 +120,6 @@ class ExtensionSettingsApiTest : public ExtensionApiTest {
|
| #if defined(ENABLE_CONFIGURATION_POLICY)
|
| EXPECT_CALL(policy_provider_, IsInitializationComplete(_))
|
| .WillRepeatedly(Return(true));
|
| - EXPECT_CALL(policy_provider_, RegisterPolicyDomain(_)).Times(AnyNumber());
|
| policy::BrowserPolicyConnector::SetPolicyProviderForTesting(
|
| &policy_provider_);
|
| #endif
|
| @@ -445,9 +454,8 @@ IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, IsStorageEnabled) {
|
|
|
| #if defined(ENABLE_CONFIGURATION_POLICY)
|
|
|
| -IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, PolicyDomainDescriptor) {
|
| - // Verifies that the PolicyDomainDescriptor for the extensions domain is
|
| - // created on startup.
|
| +IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, ExtensionsSchemas) {
|
| + // Verifies that the Schemas for the extensions domain are created on startup.
|
| Profile* profile = browser()->profile();
|
| ExtensionSystem* extension_system =
|
| ExtensionSystemFactory::GetForProfile(profile);
|
| @@ -459,12 +467,65 @@ IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, PolicyDomainDescriptor) {
|
| ASSERT_TRUE(extension_system->ready().is_signaled());
|
| }
|
|
|
| - policy::ProfilePolicyConnector* connector =
|
| - policy::ProfilePolicyConnectorFactory::GetForProfile(profile);
|
| - policy::PolicyService* service = connector->policy_service();
|
| - scoped_refptr<const policy::PolicyDomainDescriptor> descriptor =
|
| - service->GetPolicyDomainDescriptor(policy::POLICY_DOMAIN_EXTENSIONS);
|
| - EXPECT_TRUE(descriptor.get());
|
| + // This test starts without any test extensions installed.
|
| + EXPECT_FALSE(GetSingleLoadedExtension());
|
| + message_.clear();
|
| +
|
| + policy::SchemaRegistry* registry =
|
| + policy::SchemaRegistryServiceFactory::GetForContext(profile);
|
| + ASSERT_TRUE(registry);
|
| + EXPECT_FALSE(registry->schema_map()->GetSchema(policy::PolicyNamespace(
|
| + policy::POLICY_DOMAIN_EXTENSIONS, kManagedStorageExtensionId)));
|
| +
|
| + MockSchemaRegistryObserver observer;
|
| + registry->AddObserver(&observer);
|
| +
|
| + // Install a managed extension.
|
| + EXPECT_CALL(observer, OnSchemaRegistryUpdated(true));
|
| + const Extension* extension =
|
| + LoadExtension(test_data_dir_.AppendASCII("settings/managed_storage"));
|
| + ASSERT_TRUE(extension);
|
| + Mock::VerifyAndClearExpectations(&observer);
|
| + registry->RemoveObserver(&observer);
|
| +
|
| + // Verify that its schema has been published, and verify its contents.
|
| + const policy::Schema* schema =
|
| + registry->schema_map()->GetSchema(policy::PolicyNamespace(
|
| + policy::POLICY_DOMAIN_EXTENSIONS, kManagedStorageExtensionId));
|
| + ASSERT_TRUE(schema);
|
| +
|
| + ASSERT_TRUE(schema->valid());
|
| + ASSERT_EQ(base::Value::TYPE_DICTIONARY, schema->type());
|
| + ASSERT_TRUE(schema->GetKnownProperty("string-policy").valid());
|
| + EXPECT_EQ(base::Value::TYPE_STRING,
|
| + schema->GetKnownProperty("string-policy").type());
|
| + ASSERT_TRUE(schema->GetKnownProperty("int-policy").valid());
|
| + EXPECT_EQ(base::Value::TYPE_INTEGER,
|
| + schema->GetKnownProperty("int-policy").type());
|
| + ASSERT_TRUE(schema->GetKnownProperty("double-policy").valid());
|
| + EXPECT_EQ(base::Value::TYPE_DOUBLE,
|
| + schema->GetKnownProperty("double-policy").type());
|
| + ASSERT_TRUE(schema->GetKnownProperty("boolean-policy").valid());
|
| + EXPECT_EQ(base::Value::TYPE_BOOLEAN,
|
| + schema->GetKnownProperty("boolean-policy").type());
|
| +
|
| + policy::Schema list = schema->GetKnownProperty("list-policy");
|
| + ASSERT_TRUE(list.valid());
|
| + ASSERT_EQ(base::Value::TYPE_LIST, list.type());
|
| + ASSERT_TRUE(list.GetItems().valid());
|
| + EXPECT_EQ(base::Value::TYPE_STRING, list.GetItems().type());
|
| +
|
| + policy::Schema dict = schema->GetKnownProperty("dict-policy");
|
| + ASSERT_TRUE(dict.valid());
|
| + ASSERT_EQ(base::Value::TYPE_DICTIONARY, dict.type());
|
| + list = dict.GetKnownProperty("list");
|
| + ASSERT_TRUE(list.valid());
|
| + ASSERT_EQ(base::Value::TYPE_LIST, list.type());
|
| + dict = list.GetItems();
|
| + ASSERT_TRUE(dict.valid());
|
| + ASSERT_EQ(base::Value::TYPE_DICTIONARY, dict.type());
|
| + ASSERT_TRUE(dict.GetProperty("anything").valid());
|
| + EXPECT_EQ(base::Value::TYPE_INTEGER, dict.GetProperty("anything").type());
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(ExtensionSettingsApiTest, ManagedStorage) {
|
|
|