| Index: components/policy/core/common/schema_unittest.cc | 
| diff --git a/components/policy/core/common/schema_unittest.cc b/components/policy/core/common/schema_unittest.cc | 
| index 3e0fd261f758c1e47334a7a82ae757505ba69799..8a3ba90b1bd09876b9f0f98900fb11a9ddd50b6c 100644 | 
| --- a/components/policy/core/common/schema_unittest.cc | 
| +++ b/components/policy/core/common/schema_unittest.cc | 
| @@ -48,6 +48,23 @@ const char kTestSchema[] = | 
| "        \"two\": { \"type\": \"integer\" }" | 
| "      }," | 
| "      \"additionalProperties\": { \"type\": \"string\" }" | 
| +    "    }," | 
| +    "    \"IntegerWithEnums\": {" | 
| +    "      \"type\": \"integer\"," | 
| +    "      \"enum\": [1, 2, 3]" | 
| +    "    }," | 
| +    "    \"IntegerWithEnumsGaps\": {" | 
| +    "      \"type\": \"integer\"," | 
| +    "      \"enum\": [10, 20, 30]" | 
| +    "    }," | 
| +    "    \"StringWithEnums\": {" | 
| +    "      \"type\": \"string\"," | 
| +    "      \"enum\": [\"one\", \"two\", \"three\"]" | 
| +    "    }," | 
| +    "    \"IntegerWithRange\": {" | 
| +    "      \"type\": \"integer\"," | 
| +    "      \"minimum\": 1," | 
| +    "      \"maximum\": 3" | 
| "    }" | 
| "  }" | 
| "}"; | 
| @@ -238,19 +255,39 @@ TEST(SchemaTest, ValidSchema) { | 
| ASSERT_TRUE(subsub.valid()); | 
| EXPECT_EQ(base::Value::TYPE_STRING, subsub.type()); | 
|  | 
| +  sub = schema.GetProperty("IntegerWithEnums"); | 
| +  ASSERT_TRUE(sub.valid()); | 
| +  ASSERT_EQ(base::Value::TYPE_INTEGER, sub.type()); | 
| + | 
| +  sub = schema.GetProperty("IntegerWithEnumsGaps"); | 
| +  ASSERT_TRUE(sub.valid()); | 
| +  ASSERT_EQ(base::Value::TYPE_INTEGER, sub.type()); | 
| + | 
| +  sub = schema.GetProperty("StringWithEnums"); | 
| +  ASSERT_TRUE(sub.valid()); | 
| +  ASSERT_EQ(base::Value::TYPE_STRING, sub.type()); | 
| + | 
| +  sub = schema.GetProperty("IntegerWithRange"); | 
| +  ASSERT_TRUE(sub.valid()); | 
| +  ASSERT_EQ(base::Value::TYPE_INTEGER, sub.type()); | 
| + | 
| struct { | 
| const char* expected_key; | 
| base::Value::Type expected_type; | 
| } kExpectedProperties[] = { | 
| -    { "Array",            base::Value::TYPE_LIST }, | 
| -    { "ArrayOfArray",     base::Value::TYPE_LIST }, | 
| -    { "ArrayOfObjects",   base::Value::TYPE_LIST }, | 
| -    { "Boolean",          base::Value::TYPE_BOOLEAN }, | 
| -    { "Integer",          base::Value::TYPE_INTEGER }, | 
| -    { "Null",             base::Value::TYPE_NULL }, | 
| -    { "Number",           base::Value::TYPE_DOUBLE }, | 
| -    { "Object",           base::Value::TYPE_DICTIONARY }, | 
| -    { "String",           base::Value::TYPE_STRING }, | 
| +    { "Array",                base::Value::TYPE_LIST }, | 
| +    { "ArrayOfArray",         base::Value::TYPE_LIST }, | 
| +    { "ArrayOfObjects",       base::Value::TYPE_LIST }, | 
| +    { "Boolean",              base::Value::TYPE_BOOLEAN }, | 
| +    { "Integer",              base::Value::TYPE_INTEGER }, | 
| +    { "IntegerWithEnums",     base::Value::TYPE_INTEGER }, | 
| +    { "IntegerWithEnumsGaps", base::Value::TYPE_INTEGER }, | 
| +    { "IntegerWithRange",     base::Value::TYPE_INTEGER }, | 
| +    { "Null",                 base::Value::TYPE_NULL }, | 
| +    { "Number",               base::Value::TYPE_DOUBLE }, | 
| +    { "Object",               base::Value::TYPE_DICTIONARY }, | 
| +    { "String",               base::Value::TYPE_STRING }, | 
| +    { "StringWithEnums",      base::Value::TYPE_STRING }, | 
| }; | 
| Schema::Iterator it = schema.GetPropertiesIterator(); | 
| for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kExpectedProperties); ++i) { | 
| @@ -503,10 +540,50 @@ TEST(SchemaTest, Validate) { | 
| bundle.Set("Object", dict.DeepCopy()); | 
| } | 
|  | 
| +  bundle.SetInteger("IntegerWithEnums", 1); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 20); | 
| +  bundle.SetString("StringWithEnums", "two"); | 
| +  bundle.SetInteger("IntegerWithRange", 3); | 
| + | 
| EXPECT_TRUE(schema.Validate(bundle)); | 
|  | 
| bundle.SetString("boom", "bang"); | 
| EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.Remove("boom", NULL); | 
| + | 
| +  bundle.SetInteger("IntegerWithEnums", 0); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnums", 1); | 
| + | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 0); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 9); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 10); | 
| +  EXPECT_TRUE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 11); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 19); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 21); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 29); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 30); | 
| +  EXPECT_TRUE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 31); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 100); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithEnumsGaps", 20); | 
| + | 
| +  bundle.SetString("StringWithEnums", "FOUR"); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetString("StringWithEnums", "two"); | 
| + | 
| +  bundle.SetInteger("IntegerWithRange", 4); | 
| +  EXPECT_FALSE(schema.Validate(bundle)); | 
| +  bundle.SetInteger("IntegerWithRange", 3); | 
|  | 
| } | 
| TEST(SchemaTest, InvalidReferences) { | 
|  |