Index: mojo/public/cpp/bindings/lib/validate_params.h |
diff --git a/mojo/public/cpp/bindings/lib/validate_params.h b/mojo/public/cpp/bindings/lib/validate_params.h |
index 2509b6bb0a6457d227739ff5de14fba3bf0b507f..ee6e1f31e41af0cfc22f0ad209b9d3b4e2307b0c 100644 |
--- a/mojo/public/cpp/bindings/lib/validate_params.h |
+++ b/mojo/public/cpp/bindings/lib/validate_params.h |
@@ -14,44 +14,68 @@ namespace internal { |
using ValidateEnumFunc = bool (*)(int32_t); |
+// TODO(tibell): Rename to ContainerValidateParams. |
class ArrayValidateParams { |
public: |
+ // Validates a map. A map is validated as a pair of arrays, one for the keys |
+ // and one for the values. Both arguments must be non-null. |
+ // |
+ // ArrayValidateParams takes ownership of |in_key_validate params| and |
+ // |in_element_validate params|. |
+ ArrayValidateParams(ArrayValidateParams* in_key_validate_params, |
+ ArrayValidateParams* in_element_validate_params) |
+ : key_validate_params(in_key_validate_params), |
+ element_validate_params(in_element_validate_params) { |
+ DCHECK(in_key_validate_params) |
+ << "Map validate params require key validate params"; |
+ DCHECK(in_element_validate_params) |
+ << "Map validate params require element validate params"; |
+ } |
+ |
+ // Validates an array. |
+ // |
// ArrayValidateParams takes ownership of |in_element_validate params|. |
ArrayValidateParams(uint32_t in_expected_num_elements, |
bool in_element_is_nullable, |
ArrayValidateParams* in_element_validate_params) |
: expected_num_elements(in_expected_num_elements), |
element_is_nullable(in_element_is_nullable), |
- element_validate_params(in_element_validate_params), |
- validate_enum_func(nullptr) {} |
+ element_validate_params(in_element_validate_params) {} |
// Validates an array of enums. |
ArrayValidateParams(uint32_t in_expected_num_elements, |
ValidateEnumFunc in_validate_enum_func) |
: expected_num_elements(in_expected_num_elements), |
- element_is_nullable(false), |
- element_validate_params(nullptr), |
validate_enum_func(in_validate_enum_func) {} |
~ArrayValidateParams() { |
if (element_validate_params) |
delete element_validate_params; |
+ if (key_validate_params) |
+ delete key_validate_params; |
} |
// If |expected_num_elements| is not 0, the array is expected to have exactly |
// that number of elements. |
- uint32_t expected_num_elements; |
+ uint32_t expected_num_elements = 0; |
// Whether the elements are nullable. |
- bool element_is_nullable; |
+ bool element_is_nullable = false; |
+ |
+ // Validation information for the map key array. May contain other |
+ // ArrayValidateParams e.g. if the keys are strings. |
+ ArrayValidateParams* key_validate_params = nullptr; |
- // Validation information for elements. It is either a pointer to another |
- // instance of ArrayValidateParams (if elements are arrays or maps), or |
- // nullptr. In the case of maps, this is used to validate the value array. |
- ArrayValidateParams* element_validate_params; |
+ // For arrays: validation information for elements. It is either a pointer to |
+ // another instance of ArrayValidateParams (if elements are arrays or maps), |
+ // or nullptr. |
+ // |
+ // For maps: validation information for the whole value array. May contain |
+ // other ArrayValidateParams e.g. if the values are arrays or maps. |
+ ArrayValidateParams* element_validate_params = nullptr; |
// Validation function for enum elements. |
- ValidateEnumFunc validate_enum_func; |
+ ValidateEnumFunc validate_enum_func = nullptr; |
private: |
DISALLOW_COPY_AND_ASSIGN(ArrayValidateParams); |