Index: mojo/public/tools/bindings/generators/js_templates/struct_definition.tmpl |
diff --git a/mojo/public/tools/bindings/generators/js_templates/struct_definition.tmpl b/mojo/public/tools/bindings/generators/js_templates/struct_definition.tmpl |
index ae1ccb079afc63819a9862ec795f04743362f059..e4fcc84b15dda9bbc4def344eb0440d6e4a6bbeb 100644 |
--- a/mojo/public/tools/bindings/generators/js_templates/struct_definition.tmpl |
+++ b/mojo/public/tools/bindings/generators/js_templates/struct_definition.tmpl |
@@ -21,6 +21,42 @@ |
{%- endfor %} |
}; |
+{#--- Validation #} |
+ |
+ {{struct.name}}.validate = function(messageValidator, offset) { |
+ var err; |
+ |
+ err = messageValidator.validateStructHeader(offset, {{struct.name}}.encodedSize, {{struct.packed.packed_fields|length}}); |
yzshen1
2014/08/14 18:02:22
80 chars, please. (here and elsewhere)
hansmuller
2014/08/14 23:51:46
See earlier comments
|
+ if (err !== validator.validationError.NONE) |
+ return err; |
+{%- for packed_field in struct.packed.packed_fields %} |
+{%- set fieldName = packed_field.field.name %} |
yzshen1
2014/08/14 18:02:22
nit: I think the naming convention is field_name (
hansmuller
2014/08/14 23:51:46
Done.
|
+{%- if packed_field.field|is_string_pointer_field %} |
+ // validate {{struct.name}}.{{fieldName}} |
+ err = messageValidator.validateStringPointer({{packed_field|field_offset}}) |
+ if (err !== validator.validationError.NONE) |
yzshen1
2014/08/14 18:02:22
I think line 37-38 can be moved outside of the {%i
hansmuller
2014/08/14 23:51:46
Yes! That makes this template much easier to read.
|
+ return err; |
+{%- elif packed_field.field|is_array_pointer_field %} |
+ // validate {{struct.name}}.{{fieldName}} |
+ err = messageValidator.validateArrayPointer({{packed_field|validate_array_params}}); |
+ if (err !== validator.validationError.NONE) |
+ return err; |
+{%- elif packed_field.field|is_struct_pointer_field %} |
+ // validate {{struct.name}}.{{fieldName}} |
+ err = messageValidator.validateStructPointer({{packed_field|validate_struct_params}}); |
+ if (err !== validator.validationError.NONE) |
+ return err; |
+{%- elif packed_field.field|is_handle_field %} |
+ // validate {{struct.name}}.{{fieldName}} |
+ err = messageValidator.validateHandle({{packed_field|field_offset}}) |
+ if (err !== validator.validationError.NONE) |
+ return err; |
+{%- endif %} |
+{%- endfor %} |
+ |
+ return validator.validationError.NONE; |
+ }; |
+ |
{#--- Encoding and decoding #} |
{{struct.name}}.encodedSize = codec.kStructHeaderSize + {{struct.packed|payload_size}}; |