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

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

Issue 196343011: document.location bindings fix (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: + bindings update Created 6 years, 9 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
« no previous file with comments | « no previous file | Source/bindings/tests/results/V8TestObject.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 {# Type checking for interface types (if interface not implemented, throw 225 {# Type checking for interface types (if interface not implemented, throw
226 TypeError), per http://www.w3.org/TR/WebIDL/#es-interface #} 226 TypeError), per http://www.w3.org/TR/WebIDL/#es-interface #}
227 if (!isUndefinedOrNull(jsValue) && !V8{{attribute.idl_type}}::hasInstance(js Value, info.GetIsolate())) { 227 if (!isUndefinedOrNull(jsValue) && !V8{{attribute.idl_type}}::hasInstance(js Value, info.GetIsolate())) {
228 exceptionState.throwTypeError("The provided value is not of type '{{attr ibute.idl_type}}'."); 228 exceptionState.throwTypeError("The provided value is not of type '{{attr ibute.idl_type}}'.");
229 exceptionState.throwIfNeeded(); 229 exceptionState.throwIfNeeded();
230 return; 230 return;
231 } 231 }
232 {% endif %} 232 {% endif %}
233 {% if attribute.put_forwards %} 233 {% if attribute.put_forwards %}
234 {{cpp_class}}* proxyImp = {{v8_class}}::toNative(info.Holder()); 234 {{cpp_class}}* proxyImp = {{v8_class}}::toNative(info.Holder());
235 {{attribute.idl_type}}* imp = WTF::getPtr(proxyImp->{{attribute.name}}()); 235 RefPtr<{{attribute.idl_type}}> imp = WTF::getPtr(proxyImp->{{attribute.name} }());
236 if (!imp) 236 if (!imp)
237 return; 237 return;
238 {% elif not attribute.is_static %} 238 {% elif not attribute.is_static %}
239 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); 239 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder());
240 {% endif %}{# imp #} 240 {% endif %}{# imp #}
241 {# FIXME: move ASSERT(imp) here. #} 241 {# FIXME: move ASSERT(imp) here. #}
242 {% if attribute.idl_type == 'EventHandler' and interface_name == 'Window' %} 242 {% if attribute.idl_type == 'EventHandler' and interface_name == 'Window' %}
243 if (!imp->document()) 243 if (!imp->document())
244 return; 244 return;
245 {% endif %} 245 {% endif %}
246 {% if attribute.idl_type != 'EventHandler' %} 246 {% if attribute.idl_type != 'EventHandler' %}
247 {{attribute.v8_value_to_local_cpp_value}}; 247 {{attribute.v8_value_to_local_cpp_value}};
jochen (gone - plz use gerrit) 2014/03/13 23:26:49 alternatively, we could just move this up, no?
Nils Barth (inactive) 2014/03/20 07:20:29 How would this help? (Honest question; might be a
jochen (gone - plz use gerrit) 2014/03/20 07:42:13 this executes arbitrary javascript. Local variable
Nils Barth (inactive) 2014/03/24 05:06:09 Ok, so rearranging the generated code wouldn't hel
248 {% elif not is_node %}{# EventHandler hack #} 248 {% elif not is_node %}{# EventHandler hack #}
249 {# FIXME: duplicate of below; remove #} 249 {# FIXME: duplicate of below; remove #}
250 {% if attribute.is_implemented_by and not attribute.is_static %} 250 {% if attribute.is_implemented_by and not attribute.is_static %}
251 ASSERT(imp); 251 ASSERT(imp);
252 {% endif %} 252 {% endif %}
253 moveEventListenerToNewWrapper(info.Holder(), {{attribute.event_handler_gette r_expression}}, jsValue, {{v8_class}}::eventListenerCacheIndex, info.GetIsolate( )); 253 moveEventListenerToNewWrapper(info.Holder(), {{attribute.event_handler_gette r_expression}}, jsValue, {{v8_class}}::eventListenerCacheIndex, info.GetIsolate( ));
254 {% endif %} 254 {% endif %}
255 {% if attribute.enum_validation_expression %} 255 {% if attribute.enum_validation_expression %}
256 {# Setter ignores invalid enum values: http://www.w3.org/TR/WebIDL/#idl-enum s #} 256 {# Setter ignores invalid enum values: http://www.w3.org/TR/WebIDL/#idl-enum s #}
257 String string = cppValue; 257 String string = cppValue;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 {% endif %} 315 {% endif %}
316 {% if attribute.has_custom_setter %} 316 {% if attribute.has_custom_setter %}
317 {{v8_class}}::{{attribute.name}}AttributeSetterCustom(jsValue, info); 317 {{v8_class}}::{{attribute.name}}AttributeSetterCustom(jsValue, info);
318 {% else %} 318 {% else %}
319 {{cpp_class}}V8Internal::{{attribute.name}}AttributeSetter{{world_suffix}}(j sValue, info); 319 {{cpp_class}}V8Internal::{{attribute.name}}AttributeSetter{{world_suffix}}(j sValue, info);
320 {% endif %} 320 {% endif %}
321 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); 321 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution");
322 } 322 }
323 {% endfilter %} 323 {% endfilter %}
324 {% endmacro %} 324 {% endmacro %}
OLDNEW
« no previous file with comments | « no previous file | Source/bindings/tests/results/V8TestObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698