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

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

Issue 299203002: Support per-overload [RuntimeEnabled] extended attribute (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: refactor runtime_enabled() filtering Created 6 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 | « Source/bindings/scripts/v8_interface.py ('k') | Source/bindings/templates/methods.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 {% extends 'interface_base.cpp' %} 1 {% extends 'interface_base.cpp' %}
2 2
3 3
4 {##############################################################################} 4 {##############################################################################}
5 {% macro attribute_configuration(attribute) %} 5 {% macro attribute_configuration(attribute) %}
6 {% set getter_callback = 6 {% set getter_callback =
7 '%sV8Internal::%sAttributeGetterCallback' % 7 '%sV8Internal::%sAttributeGetterCallback' %
8 (cpp_class, attribute.name) 8 (cpp_class, attribute.name)
9 if not attribute.constructor_type else 9 if not attribute.constructor_type else
10 ('%sV8Internal::%sConstructorGetterCallback' % 10 ('%sV8Internal::%sConstructorGetterCallback' %
(...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 functionTemplate->{{set_on_template}}()->SetNamedPropertyHandler({{named_pro perty_getter_callback}}, {{named_property_setter_callback}}, {{named_property_qu ery_callback}}, {{named_property_deleter_callback}}, {{named_property_enumerator _callback}}); 979 functionTemplate->{{set_on_template}}()->SetNamedPropertyHandler({{named_pro perty_getter_callback}}, {{named_property_setter_callback}}, {{named_property_qu ery_callback}}, {{named_property_deleter_callback}}, {{named_property_enumerator _callback}});
980 {% endif %} 980 {% endif %}
981 {# End special operations #} 981 {# End special operations #}
982 {% if has_custom_legacy_call_as_function %} 982 {% if has_custom_legacy_call_as_function %}
983 functionTemplate->InstanceTemplate()->SetCallAsFunctionHandler({{v8_class}}: :legacyCallCustom); 983 functionTemplate->InstanceTemplate()->SetCallAsFunctionHandler({{v8_class}}: :legacyCallCustom);
984 {% endif %} 984 {% endif %}
985 {% if interface_name == 'HTMLAllCollection' %} 985 {% if interface_name == 'HTMLAllCollection' %}
986 {# Needed for legacy support of document.all #} 986 {# Needed for legacy support of document.all #}
987 functionTemplate->InstanceTemplate()->MarkAsUndetectable(); 987 functionTemplate->InstanceTemplate()->MarkAsUndetectable();
988 {% endif %} 988 {% endif %}
989 {% for method in methods if not method.do_not_check_signature %} 989 {% for method in methods %}
990 {# install_custom_signature #} 990 {# install_custom_signature #}
991 {% if not method.overload_index or method.overload_index == 1 %} 991 {% if not(method.overloads.do_not_check_signature_all if method.overloads el se
992 (method.overload_index or method.do_not_check_signature)) %}
992 {# For overloaded methods, only generate one accessor #} 993 {# For overloaded methods, only generate one accessor #}
993 {% filter conditional(method.conditional_string) %} 994 {% filter conditional(method.conditional_string) %}
995 {% filter runtime_enabled(method.overloads.runtime_enabled_function_all if m ethod.overloads else
Jens Widell 2014/06/04 11:20:28 This is wrong if all overloads are runtime enabled
Jens Widell 2014/06/05 08:51:51 It occurs to me that the "Function.length is dynam
996 method.runtime_enabled_function) %}
994 {% if method.is_do_not_check_security %} 997 {% if method.is_do_not_check_security %}
995 {% if method.is_per_world_bindings %} 998 {% if method.is_per_world_bindings %}
996 if (DOMWrapperWorld::current(isolate).isMainWorld()) { 999 if (DOMWrapperWorld::current(isolate).isMainWorld()) {
997 {{install_do_not_check_security_signature(method, 'ForMainWorld')}} 1000 {{install_do_not_check_security_signature(method, 'ForMainWorld')}}
998 } else { 1001 } else {
999 {{install_do_not_check_security_signature(method)}} 1002 {{install_do_not_check_security_signature(method)}}
1000 } 1003 }
1001 {% else %} 1004 {% else %}
1002 {{install_do_not_check_security_signature(method)}} 1005 {{install_do_not_check_security_signature(method)}}
1003 {% endif %} 1006 {% endif %}
1004 {% else %}{# is_do_not_check_security #} 1007 {% else %}{# is_do_not_check_security #}
1005 {% if method.is_per_world_bindings %} 1008 {% if method.is_per_world_bindings %}
1006 if (DOMWrapperWorld::current(isolate).isMainWorld()) { 1009 if (DOMWrapperWorld::current(isolate).isMainWorld()) {
1007 {% filter runtime_enabled(method.runtime_enabled_function) %}
1008 {{install_custom_signature(method, 'ForMainWorld')}} 1010 {{install_custom_signature(method, 'ForMainWorld')}}
1009 {% endfilter %}
1010 } else { 1011 } else {
1011 {% filter runtime_enabled(method.runtime_enabled_function) %}
1012 {{install_custom_signature(method)}} 1012 {{install_custom_signature(method)}}
1013 {% endfilter %}
1014 } 1013 }
1015 {% else %} 1014 {% else %}
1016 {% filter runtime_enabled(method.runtime_enabled_function) %}
1017 {{install_custom_signature(method)}} 1015 {{install_custom_signature(method)}}
1018 {% endfilter %}
1019 {% endif %} 1016 {% endif %}
1020 {% endif %}{# is_do_not_check_security #} 1017 {% endif %}{# is_do_not_check_security #}
1021 {% endfilter %} 1018 {% endfilter %}{# runtime_enabled() #}
1019 {% endfilter %}{# conditional() #}
1022 {% endif %}{# install_custom_signature #} 1020 {% endif %}{# install_custom_signature #}
1023 {% endfor %} 1021 {% endfor %}
1024 {% for attribute in attributes if attribute.is_static %} 1022 {% for attribute in attributes if attribute.is_static %}
1025 {% set getter_callback = '%sV8Internal::%sAttributeGetterCallback' % 1023 {% set getter_callback = '%sV8Internal::%sAttributeGetterCallback' %
1026 (cpp_class, attribute.name) %} 1024 (cpp_class, attribute.name) %}
1027 {% filter conditional(attribute.conditional_string) %} 1025 {% filter conditional(attribute.conditional_string) %}
1028 functionTemplate->SetNativeDataProperty(v8AtomicString(isolate, "{{attribute .name}}"), {{getter_callback}}, {{attribute.setter_callback}}, v8::External::New (isolate, 0), static_cast<v8::PropertyAttribute>(v8::None), v8::Handle<v8::Acces sorSignature>(), static_cast<v8::AccessControl>(v8::DEFAULT)); 1026 functionTemplate->SetNativeDataProperty(v8AtomicString(isolate, "{{attribute .name}}"), {{getter_callback}}, {{attribute.setter_callback}}, v8::External::New (isolate, 0), static_cast<v8::PropertyAttribute>(v8::None), v8::Handle<v8::Acces sorSignature>(), static_cast<v8::AccessControl>(v8::DEFAULT));
1029 {% endfilter %} 1027 {% endfilter %}
1030 {% endfor %} 1028 {% endfor %}
1031 {# Special interfaces #} 1029 {# Special interfaces #}
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
1335 {% endif %} 1333 {% endif %}
1336 } 1334 }
1337 1335
1338 template<> 1336 template<>
1339 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c reationContext, v8::Isolate* isolate) 1337 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c reationContext, v8::Isolate* isolate)
1340 { 1338 {
1341 return toV8(impl, creationContext, isolate); 1339 return toV8(impl, creationContext, isolate);
1342 } 1340 }
1343 1341
1344 {% endblock %} 1342 {% endblock %}
OLDNEW
« no previous file with comments | « Source/bindings/scripts/v8_interface.py ('k') | Source/bindings/templates/methods.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698