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

Side by Side Diff: Source/bindings/templates/attributes.cpp

Issue 152043003: IDL compiler: [ReflectMissing], [ReflectInvalid] (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
OLDNEW
1 {##############################################################################} 1 {##############################################################################}
2 {% macro attribute_getter(attribute, world_suffix) %} 2 {% macro attribute_getter(attribute, world_suffix) %}
3 {% filter conditional(attribute.conditional_string) %} 3 {% filter conditional(attribute.conditional_string) %}
4 static void {{attribute.name}}AttributeGetter{{world_suffix}}( 4 static void {{attribute.name}}AttributeGetter{{world_suffix}}(
5 {%- if attribute.is_expose_js_accessors %} 5 {%- if attribute.is_expose_js_accessors %}
6 const v8::FunctionCallbackInfo<v8::Value>& info 6 const v8::FunctionCallbackInfo<v8::Value>& info
7 {%- else %} 7 {%- else %}
8 const v8::PropertyCallbackInfo<v8::Value>& info 8 const v8::PropertyCallbackInfo<v8::Value>& info
9 {%- endif %}) 9 {%- endif %})
10 { 10 {
(...skipping 16 matching lines...) Expand all
27 if (!jsValue.IsEmpty()) { 27 if (!jsValue.IsEmpty()) {
28 v8SetReturnValue(info, jsValue); 28 v8SetReturnValue(info, jsValue);
29 return; 29 return;
30 } 30 }
31 } 31 }
32 {% elif not (attribute.is_static or attribute.is_unforgeable) %} 32 {% elif not (attribute.is_static or attribute.is_unforgeable) %}
33 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); 33 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder());
34 {% endif %} 34 {% endif %}
35 {% if attribute.reflect_only %} 35 {% if attribute.reflect_only %}
36 {{attribute.cpp_type}} {{attribute.cpp_value}} = {{attribute.cpp_value_origi nal}}; 36 {{attribute.cpp_type}} {{attribute.cpp_value}} = {{attribute.cpp_value_origi nal}};
37 {{release_only_check(attribute.reflect_only) | indent}} 37 {{release_only_check(attribute.reflect_only, attribute.reflect_missing,
38 attribute.reflect_invalid) | indent}}
38 {% endif %} 39 {% endif %}
39 {% if attribute.is_call_with_execution_context %} 40 {% if attribute.is_call_with_execution_context %}
40 ExecutionContext* scriptContext = currentExecutionContext(info.GetIsolate()) ; 41 ExecutionContext* scriptContext = currentExecutionContext(info.GetIsolate()) ;
41 {% endif %} 42 {% endif %}
42 {# Special cases #} 43 {# Special cases #}
43 {% if attribute.is_check_security_for_node or 44 {% if attribute.is_check_security_for_node or
44 attribute.is_getter_raises_exception %} 45 attribute.is_getter_raises_exception %}
45 ExceptionState exceptionState(ExceptionState::GetterContext, "{{attribute.na me}}", "{{interface_name}}", info.Holder(), info.GetIsolate()); 46 ExceptionState exceptionState(ExceptionState::GetterContext, "{{attribute.na me}}", "{{interface_name}}", info.Holder(), info.GetIsolate());
46 {% endif %} 47 {% endif %}
47 {% if attribute.is_check_security_for_node %} 48 {% if attribute.is_check_security_for_node %}
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 {{attribute.v8_set_return_value_for_main_world}}; 89 {{attribute.v8_set_return_value_for_main_world}};
89 {% else %} 90 {% else %}
90 {{attribute.v8_set_return_value}}; 91 {{attribute.v8_set_return_value}};
91 {% endif %} 92 {% endif %}
92 {% endif %} 93 {% endif %}
93 } 94 }
94 {% endfilter %} 95 {% endfilter %}
95 {% endmacro %} 96 {% endmacro %}
96 97
97 {######################################} 98 {######################################}
98 {% macro release_only_check(reflect_only_values) %} 99 {% macro release_only_check(reflect_only_values, reflect_missing,
100 reflect_invalid) %}
99 {# Attribute is limited to only known values: check that the attribute value is 101 {# Attribute is limited to only known values: check that the attribute value is
100 one of those. If not, set it to the empty string. 102 one of those. If not, set it to the empty string.
101 http://www.whatwg.org/specs/web-apps/current-work/#limited-to-only-known-valu es #} 103 http://www.whatwg.org/specs/web-apps/current-work/#limited-to-only-known-valu es #}
102 if (resultValue.isEmpty()) { 104 if (resultValue.isEmpty()) {
105 {% if reflect_missing %}
106 resultValue = "{{reflect_missing}}";
107 {% else %}
103 ; 108 ;
109 {% endif %}
104 {% for value in reflect_only_values %} 110 {% for value in reflect_only_values %}
105 } else if (equalIgnoringCase(resultValue, "{{value}}")) { 111 } else if (equalIgnoringCase(resultValue, "{{value}}")) {
106 resultValue = "{{value}}"; 112 resultValue = "{{value}}";
107 {% endfor %} 113 {% endfor %}
108 } else { 114 } else {
109 resultValue = ""; 115 resultValue = "{{reflect_invalid}}";
110 } 116 }
111 {% endmacro %} 117 {% endmacro %}
112 118
113 119
114 {##############################################################################} 120 {##############################################################################}
115 {% macro attribute_getter_callback(attribute, world_suffix) %} 121 {% macro attribute_getter_callback(attribute, world_suffix) %}
116 {% filter conditional(attribute.conditional_string) %} 122 {% filter conditional(attribute.conditional_string) %}
117 static void {{attribute.name}}AttributeGetterCallback{{world_suffix}}( 123 static void {{attribute.name}}AttributeGetterCallback{{world_suffix}}(
118 {%- if attribute.is_expose_js_accessors %} 124 {%- if attribute.is_expose_js_accessors %}
119 const v8::FunctionCallbackInfo<v8::Value>& info 125 const v8::FunctionCallbackInfo<v8::Value>& info
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 {% endif %} 255 {% endif %}
250 {% if attribute.has_custom_setter %} 256 {% if attribute.has_custom_setter %}
251 {{v8_class}}::{{attribute.name}}AttributeSetterCustom(jsValue, info); 257 {{v8_class}}::{{attribute.name}}AttributeSetterCustom(jsValue, info);
252 {% else %} 258 {% else %}
253 {{cpp_class}}V8Internal::{{attribute.name}}AttributeSetter{{world_suffix}}(j sValue, info); 259 {{cpp_class}}V8Internal::{{attribute.name}}AttributeSetter{{world_suffix}}(j sValue, info);
254 {% endif %} 260 {% endif %}
255 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); 261 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution");
256 } 262 }
257 {% endfilter %} 263 {% endfilter %}
258 {% endmacro %} 264 {% endmacro %}
OLDNEW
« no previous file with comments | « Source/bindings/scripts/unstable/v8_attributes.py ('k') | Source/bindings/tests/idls/TestObjectPython.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698