Index: components/policy/core/common/schema_internal.h |
diff --git a/components/policy/core/common/schema_internal.h b/components/policy/core/common/schema_internal.h |
index 40d557a408d72ff868b0bfd3bf58ce537e75f9e9..86e6a2b75b20f16e6d2e98c3840a5df9ad353c26 100644 |
--- a/components/policy/core/common/schema_internal.h |
+++ b/components/policy/core/common/schema_internal.h |
@@ -28,6 +28,11 @@ struct POLICY_EXPORT SchemaNode { |
// SchemaData::schema_nodes that indexes the SchemaNode describing the items |
// of this list. |
// |
+ // If |type| is TYPE_INTEGER or TYPE_STRING, and contains corresponding |
+ // restriction (enumeration of possible values, or range for integer), then |
+ // |extra| is an offset into SchemaData::restriction_nodes that indexes the |
+ // RestrictionNode describing the restriction on the value. |
+ // |
// Otherwise extra is -1 and is invalid. |
int extra; |
}; |
@@ -66,12 +71,40 @@ struct POLICY_EXPORT PropertiesNode { |
int additional; |
}; |
+// Represents the restriction on TYPE_INTEGER or TYPE_STRING instance of |
+// base::Value. |
+union POLICY_EXPORT RestrictionNode { |
+ // Offsets into SchemaData::int_enums or SchemaData::string_enums, the |
+ // entry of which describes the enumeration of all possible values of |
+ // corresponding integer or string value. |offset_begin| being strictly less |
+ // than |offset_end| is assumed. |
+ struct EnumerationRestriction { |
+ int offset_begin; |
+ int offset_end; |
+ } enumeration_restriction; |
+ |
+ // For integer type only, represents that all values between |min_value| |
+ // and |max_value| can be choosen. Note that integer type in base::Value |
+ // is bounded, so this can also be used if only one of |min_value| and |
+ // |max_value| is stated. |max_value| being greater or equal to |min_value| |
+ // is assumed. |
+ struct RangedRestriction { |
+ int max_value; |
+ int min_value; |
+ } ranged_restriction; |
+}; |
+ |
+ |
// Contains arrays of related nodes. All of the offsets in these nodes reference |
// other nodes in these arrays. |
struct POLICY_EXPORT SchemaData { |
const SchemaNode* schema_nodes; |
const PropertyNode* property_nodes; |
const PropertiesNode* properties_nodes; |
+ const RestrictionNode* restriction_nodes; |
+ |
+ const int* int_enums; |
+ const char** string_enums; |
}; |
} // namespace internal |