Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(648)

Side by Side Diff: mojo/public/tools/bindings/generators/cpp_templates/validation_macros.tmpl

Issue 2064903002: Mojo: Report bindings validation errors via MojoNotifyBadMessage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 {#- Validates the specified field, which is supposed to be an object 1 {#- Validates the specified field, which is supposed to be an object
2 (struct/array/string/map/union). If it is a union, |union_is_inlined| 2 (struct/array/string/map/union). If it is a union, |union_is_inlined|
3 indicates whether the union is inlined. (Nested unions are not inlined.) 3 indicates whether the union is inlined. (Nested unions are not inlined.)
4 This macro is expanded by the Validate() method. #} 4 This macro is expanded by the Validate() method. #}
5 {%- macro validate_object(field, field_expr, object_name, union_is_inlined) %} 5 {%- macro validate_object(field, field_expr, object_name, union_is_inlined) %}
6 {%- set name = field.name %} 6 {%- set name = field.name %}
7 {%- set kind = field.kind %} 7 {%- set kind = field.kind %}
8 {%- if not kind|is_nullable_kind %} 8 {%- if not kind|is_nullable_kind %}
9 {%- if kind|is_union_kind and union_is_inlined %} 9 {%- if kind|is_union_kind and union_is_inlined %}
10 if (!mojo::internal::ValidateInlinedUnionNonNullable( 10 if (!mojo::internal::ValidateInlinedUnionNonNullable(
11 {{field_expr}}, "null {{name}} field in {{object_name}}")) { 11 {{field_expr}}, "null {{name}} field in {{object_name}}",
12 validation_context)) {
12 return false; 13 return false;
13 } 14 }
14 {%- else %} 15 {%- else %}
15 if (!mojo::internal::ValidatePointerNonNullable( 16 if (!mojo::internal::ValidatePointerNonNullable(
16 {{field_expr}}, "null {{name}} field in {{object_name}}")) { 17 {{field_expr}}, "null {{name}} field in {{object_name}}",
18 validation_context)) {
17 return false; 19 return false;
18 } 20 }
19 {%- endif %} 21 {%- endif %}
20 {%- endif %} 22 {%- endif %}
21 {%- if kind|is_array_kind or kind|is_string_kind %} 23 {%- if kind|is_array_kind or kind|is_string_kind %}
22 const mojo::internal::ContainerValidateParams {{name}}_validate_params( 24 const mojo::internal::ContainerValidateParams {{name}}_validate_params(
23 {{kind|get_container_validate_params_ctor_args|indent(6)}}); 25 {{kind|get_container_validate_params_ctor_args|indent(6)}});
24 if (!mojo::internal::ValidateArray({{field_expr}}, bounds_checker, 26 if (!mojo::internal::ValidateArray({{field_expr}}, validation_context,
25 &{{name}}_validate_params)) { 27 &{{name}}_validate_params)) {
26 return false; 28 return false;
27 } 29 }
28 {%- elif kind|is_map_kind %} 30 {%- elif kind|is_map_kind %}
29 const mojo::internal::ContainerValidateParams {{name}}_validate_params( 31 const mojo::internal::ContainerValidateParams {{name}}_validate_params(
30 {{kind|get_container_validate_params_ctor_args|indent(6)}}); 32 {{kind|get_container_validate_params_ctor_args|indent(6)}});
31 if (!mojo::internal::ValidateMap({{field_expr}}, bounds_checker, 33 if (!mojo::internal::ValidateMap({{field_expr}}, validation_context,
32 &{{name}}_validate_params)) { 34 &{{name}}_validate_params)) {
33 return false; 35 return false;
34 } 36 }
35 {%- elif kind|is_struct_kind %} 37 {%- elif kind|is_struct_kind %}
36 if (!mojo::internal::ValidateStruct({{field_expr}}, bounds_checker)) 38 if (!mojo::internal::ValidateStruct({{field_expr}}, validation_context))
37 return false; 39 return false;
38 {%- elif kind|is_union_kind %} 40 {%- elif kind|is_union_kind %}
39 {%- if union_is_inlined %} 41 {%- if union_is_inlined %}
40 if (!mojo::internal::ValidateInlinedUnion({{field_expr}}, bounds_checker)) 42 if (!mojo::internal::ValidateInlinedUnion({{field_expr}}, validation_context))
41 return false; 43 return false;
42 {%- else %} 44 {%- else %}
43 if (!mojo::internal::ValidateNonInlinedUnion({{field_expr}}, bounds_checker)) 45 if (!mojo::internal::ValidateNonInlinedUnion({{field_expr}},
46 validation_context))
44 return false; 47 return false;
45 {%- endif %} 48 {%- endif %}
46 {%- else %} 49 {%- else %}
47 #error Not reached! 50 #error Not reached!
48 {%- endif %} 51 {%- endif %}
49 {%- endmacro %} 52 {%- endmacro %}
50 53
51 {#- Validates the specified field, which is supposed to be a handle or contain a 54 {#- Validates the specified field, which is supposed to be a handle or contain a
52 handle (in the case of interfaces). 55 handle (in the case of interfaces).
53 This macro is expanded by the Validate() method. #} 56 This macro is expanded by the Validate() method. #}
54 {%- macro validate_handle(field, field_expr, object_name) %} 57 {%- macro validate_handle(field, field_expr, object_name) %}
55 {%- set name = field.name %} 58 {%- set name = field.name %}
56 {%- set kind = field.kind %} 59 {%- set kind = field.kind %}
57 {%- if kind|is_interface_kind %} 60 {%- if kind|is_interface_kind %}
58 const mojo::internal::Handle_Data {{name}}_handle = {{field_expr}}.handle; 61 const mojo::internal::Handle_Data {{name}}_handle = {{field_expr}}.handle;
59 {%- else %} 62 {%- else %}
60 const mojo::internal::Handle_Data {{name}}_handle = {{field_expr}}; 63 const mojo::internal::Handle_Data {{name}}_handle = {{field_expr}};
61 {%- endif %} 64 {%- endif %}
62 {%- if not kind|is_nullable_kind %} 65 {%- if not kind|is_nullable_kind %}
63 if (!mojo::internal::ValidateHandleNonNullable( 66 if (!mojo::internal::ValidateHandleNonNullable(
64 {{name}}_handle, 67 {{name}}_handle,
65 "invalid {{name}} field in {{object_name}}")) { 68 "invalid {{name}} field in {{object_name}}", validation_context)) {
66 return false; 69 return false;
67 } 70 }
68 {%- endif %} 71 {%- endif %}
69 if (!mojo::internal::ValidateHandle({{name}}_handle, bounds_checker)) 72 if (!mojo::internal::ValidateHandle({{name}}_handle, validation_context))
70 return false; 73 return false;
71 {%- endmacro %} 74 {%- endmacro %}
72 75
73 {#- Validates the specified field, which is supposed to be an associated 76 {#- Validates the specified field, which is supposed to be an associated
74 interface or an associated interface request. 77 interface or an associated interface request.
75 This macro is expanded by the Validate() method. #} 78 This macro is expanded by the Validate() method. #}
76 {%- macro validate_associated(field, field_expr, object_name) %} 79 {%- macro validate_associated(field, field_expr, object_name) %}
77 {%- set name = field.name %} 80 {%- set name = field.name %}
78 {%- set kind = field.kind %} 81 {%- set kind = field.kind %}
79 {%- if kind|is_associated_interface_kind %} 82 {%- if kind|is_associated_interface_kind %}
80 const mojo::internal::InterfaceId {{name}}_interface_id = 83 const mojo::internal::InterfaceId {{name}}_interface_id =
81 {{field_expr}}.interface_id; 84 {{field_expr}}.interface_id;
82 {%- else %} 85 {%- else %}
83 const mojo::internal::InterfaceId {{name}}_interface_id = {{field_expr}}; 86 const mojo::internal::InterfaceId {{name}}_interface_id = {{field_expr}};
84 {%- endif %} 87 {%- endif %}
85 {%- if not kind|is_nullable_kind %} 88 {%- if not kind|is_nullable_kind %}
86 if (!mojo::internal::ValidateInterfaceIdNonNullable( 89 if (!mojo::internal::ValidateInterfaceIdNonNullable(
87 {{name}}_interface_id, 90 {{name}}_interface_id,
88 "invalid {{name}} field in {{object_name}}")) { 91 "invalid {{name}} field in {{object_name}}", validation_context)) {
89 return false; 92 return false;
90 } 93 }
91 {%- endif %} 94 {%- endif %}
92 if (!mojo::internal::ValidateAssociatedInterfaceId({{name}}_interface_id)) 95 if (!mojo::internal::ValidateAssociatedInterfaceId({{name}}_interface_id,
96 validation_context)) {
93 return false; 97 return false;
98 }
94 {%- endmacro %} 99 {%- endmacro %}
95 100
96 {#- Validates the specified field, which is supposed to be an enum. 101 {#- Validates the specified field, which is supposed to be an enum.
97 This macro is expanded by the Validate() method. #} 102 This macro is expanded by the Validate() method. #}
98 {%- macro validate_enum(field, field_expr) %} 103 {%- macro validate_enum(field, field_expr) %}
99 if (!{{field.kind|get_qualified_name_for_kind(internal=True)}}::Validate({{fie ld_expr}})) 104 if (!{{field.kind|get_qualified_name_for_kind(internal=True)}}
105 ::Validate({{field_expr}}, validation_context))
100 return false; 106 return false;
101 {%- endmacro %} 107 {%- endmacro %}
102 108
103 {%- macro validate_field(field, field_expr, object_name, union_is_inlined) %} 109 {%- macro validate_field(field, field_expr, object_name, union_is_inlined) %}
104 {%- if field.kind|is_object_kind -%} 110 {%- if field.kind|is_object_kind -%}
105 {{validate_object(field, field_expr, object_name, union_is_inlined)}} 111 {{validate_object(field, field_expr, object_name, union_is_inlined)}}
106 {%- elif field.kind|is_any_handle_kind or field.kind|is_interface_kind -%} 112 {%- elif field.kind|is_any_handle_kind or field.kind|is_interface_kind -%}
107 {{validate_handle(field, field_expr, object_name)}} 113 {{validate_handle(field, field_expr, object_name)}}
108 {%- elif field.kind|is_associated_kind %} 114 {%- elif field.kind|is_associated_kind %}
109 {{validate_associated(field, field_expr, object_name)}} 115 {{validate_associated(field, field_expr, object_name)}}
110 {%- elif field.kind|is_enum_kind %} 116 {%- elif field.kind|is_enum_kind %}
111 {{validate_enum(field, field_expr)}} 117 {{validate_enum(field, field_expr)}}
112 {%- endif %} 118 {%- endif %}
113 {%- endmacro %} 119 {%- endmacro %}
OLDNEW
« no previous file with comments | « mojo/public/tools/bindings/generators/cpp_templates/union_definition.tmpl ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698