| OLD | NEW | 
|    1 {% filter format_blink_cpp_source_code %} |    1 {% filter format_blink_cpp_source_code %} | 
|    2  |    2  | 
|    3 {% include 'copyright_block.txt' %} |    3 {% include 'copyright_block.txt' %} | 
|    4 #include "{{v8_class_or_partial}}.h" |    4 #include "{{v8_class_or_partial}}.h" | 
|    5  |    5  | 
|    6 {% for filename in cpp_includes if filename != '%s.h' % cpp_class_or_partial %} |    6 {% for filename in cpp_includes if filename != '%s.h' % cpp_class_or_partial %} | 
|    7 #include "{{filename}}" |    7 #include "{{filename}}" | 
|    8 {% endfor %} |    8 {% endfor %} | 
|    9  |    9  | 
|   10 namespace blink { |   10 namespace blink { | 
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  112 {% if not attribute.has_custom_setter %} |  112 {% if not attribute.has_custom_setter %} | 
|  113 {{attribute_setter(attribute, world_suffix)}} |  113 {{attribute_setter(attribute, world_suffix)}} | 
|  114 {% endif %} |  114 {% endif %} | 
|  115 {{attribute_setter_callback(attribute, world_suffix)}} |  115 {{attribute_setter_callback(attribute, world_suffix)}} | 
|  116 {% endif %} |  116 {% endif %} | 
|  117 {% endfor %} |  117 {% endfor %} | 
|  118 {% endfor %} |  118 {% endfor %} | 
|  119 {##############################################################################} |  119 {##############################################################################} | 
|  120 {% block security_check_functions %} |  120 {% block security_check_functions %} | 
|  121 {% if has_access_check_callbacks and not is_partial %} |  121 {% if has_access_check_callbacks and not is_partial %} | 
|  122 bool securityCheck(v8::Local<v8::Context> accessingContext, v8::Local<v8::Object
     > accessedObject, v8::Local<v8::Value> data) |  122 bool securityCheck(v8::Local<v8::Context> accessingContext, v8::Local<v8::Object
     > accessedObject, v8::Local<v8::Value> data) { | 
|  123 { |  123   {% if interface_name == 'Window' %} | 
|  124     {% if interface_name == 'Window' %} |  124   v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 
|  125     v8::Isolate* isolate = v8::Isolate::GetCurrent(); |  125   v8::Local<v8::Object> window = V8Window::findInstanceInPrototypeChain(accessed
     Object, isolate); | 
|  126     v8::Local<v8::Object> window = V8Window::findInstanceInPrototypeChain(access
     edObject, isolate); |  126   if (window.IsEmpty()) | 
|  127     if (window.IsEmpty()) |  127     return false; // the frame is gone. | 
|  128         return false; // the frame is gone. |  | 
|  129  |  128  | 
|  130     const DOMWindow* targetWindow = V8Window::toImpl(window); |  129   const DOMWindow* targetWindow = V8Window::toImpl(window); | 
|  131     return BindingSecurity::shouldAllowAccessTo(toLocalDOMWindow(toDOMWindow(acc
     essingContext)), targetWindow, BindingSecurity::ErrorReportOption::DoNotReport); |  130   return BindingSecurity::shouldAllowAccessTo(toLocalDOMWindow(toDOMWindow(acces
     singContext)), targetWindow, BindingSecurity::ErrorReportOption::DoNotReport); | 
|  132     {% else %}{# if interface_name == 'Window' #} |  131   {% else %}{# if interface_name == 'Window' #} | 
|  133     {# Not 'Window' means it\'s Location. #} |  132   {# Not 'Window' means it\'s Location. #} | 
|  134     {{cpp_class}}* impl = {{v8_class}}::toImpl(accessedObject); |  133   {{cpp_class}}* impl = {{v8_class}}::toImpl(accessedObject); | 
|  135     return BindingSecurity::shouldAllowAccessTo(toLocalDOMWindow(toDOMWindow(acc
     essingContext)), impl, BindingSecurity::ErrorReportOption::DoNotReport); |  134   return BindingSecurity::shouldAllowAccessTo(toLocalDOMWindow(toDOMWindow(acces
     singContext)), impl, BindingSecurity::ErrorReportOption::DoNotReport); | 
|  136     {% endif %}{# if interface_name == 'Window' #} |  135   {% endif %}{# if interface_name == 'Window' #} | 
|  137 } |  136 } | 
|  138  |  137  | 
|  139 {% endif %} |  138 {% endif %} | 
|  140 {% endblock %} |  139 {% endblock %} | 
|  141 {##############################################################################} |  140 {##############################################################################} | 
|  142 {# Methods #} |  141 {# Methods #} | 
|  143 {% from 'methods.cpp.tmpl' import generate_method, overload_resolution_method, |  142 {% from 'methods.cpp.tmpl' import generate_method, overload_resolution_method, | 
|  144        method_callback, origin_safe_method_getter, generate_constructor, |  143        method_callback, origin_safe_method_getter, generate_constructor, | 
|  145        method_implemented_in_private_script, generate_post_message_impl, |  144        method_implemented_in_private_script, generate_post_message_impl, | 
|  146        runtime_determined_length_method, runtime_determined_maxarg_method |  145        runtime_determined_length_method, runtime_determined_maxarg_method | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
|  159 {% endif %} |  158 {% endif %} | 
|  160 {% if method.overloads.runtime_determined_maxargs %} |  159 {% if method.overloads.runtime_determined_maxargs %} | 
|  161 {{runtime_determined_maxarg_method(method.overloads)}} |  160 {{runtime_determined_maxarg_method(method.overloads)}} | 
|  162 {% endif %} |  161 {% endif %} | 
|  163 {{overload_resolution_method(method.overloads, world_suffix)}} |  162 {{overload_resolution_method(method.overloads, world_suffix)}} | 
|  164 {% endif %} |  163 {% endif %} | 
|  165 {% if not method.overload_index or method.overloads %} |  164 {% if not method.overload_index or method.overloads %} | 
|  166 {# Document about the following condition: #} |  165 {# Document about the following condition: #} | 
|  167 {# https://docs.google.com/document/d/1qBC7Therp437Jbt_QYAtNYMZs6zQ_7_tnMkNUG_AC
     qs/edit?usp=sharing #} |  166 {# https://docs.google.com/document/d/1qBC7Therp437Jbt_QYAtNYMZs6zQ_7_tnMkNUG_AC
     qs/edit?usp=sharing #} | 
|  168 {% if (method.overloads and method.overloads.visible and |  167 {% if (method.overloads and method.overloads.visible and | 
|  169         (not method.overloads.has_partial_overloads or not is_partial)) or |  168        (not method.overloads.has_partial_overloads or not is_partial)) or | 
|  170       (not method.overloads and method.visible) %} |  169       (not method.overloads and method.visible) %} | 
|  171 {# A single callback is generated for overloaded methods #} |  170 {# A single callback is generated for overloaded methods #} | 
|  172 {# with considering partial overloads #} |  171 {# with considering partial overloads #} | 
|  173 {{method_callback(method, world_suffix)}} |  172 {{method_callback(method, world_suffix)}} | 
|  174 {% endif %} |  173 {% endif %} | 
|  175 {% endif %} |  174 {% endif %} | 
|  176 {% if method.is_do_not_check_security and method.visible %} |  175 {% if method.is_do_not_check_security and method.visible %} | 
|  177 {{origin_safe_method_getter(method, world_suffix)}} |  176 {{origin_safe_method_getter(method, world_suffix)}} | 
|  178 {% endif %} |  177 {% endif %} | 
|  179 {% endfor %} |  178 {% endfor %} | 
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  259 {% block named_constructor %}{% endblock %} |  258 {% block named_constructor %}{% endblock %} | 
|  260 {% block constructor_callback %}{% endblock %} |  259 {% block constructor_callback %}{% endblock %} | 
|  261 {##############################################################################} |  260 {##############################################################################} | 
|  262 {% block install_dom_template %} |  261 {% block install_dom_template %} | 
|  263 {% if not is_array_buffer_or_view %} |  262 {% if not is_array_buffer_or_view %} | 
|  264 {% from 'methods.cpp.tmpl' import install_custom_signature with context %} |  263 {% from 'methods.cpp.tmpl' import install_custom_signature with context %} | 
|  265 {% from 'attributes.cpp.tmpl' import attribute_configuration with context %} |  264 {% from 'attributes.cpp.tmpl' import attribute_configuration with context %} | 
|  266 {% from 'constants.cpp.tmpl' import install_constants with context %} |  265 {% from 'constants.cpp.tmpl' import install_constants with context %} | 
|  267 {% from 'methods.cpp.tmpl' import method_configuration with context %} |  266 {% from 'methods.cpp.tmpl' import method_configuration with context %} | 
|  268 {% if has_partial_interface or is_partial %} |  267 {% if has_partial_interface or is_partial %} | 
|  269 void {{v8_class_or_partial}}::install{{v8_class}}Template(v8::Isolate* isolate, 
     const DOMWrapperWorld& world, v8::Local<v8::FunctionTemplate> interfaceTemplate) |  268 void {{v8_class_or_partial}}::install{{v8_class}}Template(v8::Isolate* isolate, 
     const DOMWrapperWorld& world, v8::Local<v8::FunctionTemplate> interfaceTemplate)
      { | 
|  270 {% else %} |  269 {% else %} | 
|  271 static void install{{v8_class}}Template(v8::Isolate* isolate, const DOMWrapperWo
     rld& world, v8::Local<v8::FunctionTemplate> interfaceTemplate) |  270 static void install{{v8_class}}Template(v8::Isolate* isolate, const DOMWrapperWo
     rld& world, v8::Local<v8::FunctionTemplate> interfaceTemplate) { | 
|  272 {% endif %} |  271 {% endif %} | 
|  273 { |  272   {% set newline = '' %} | 
|  274     {% set newline = '' %} |  273   // Initialize the interface object's template. | 
|  275     // Initialize the interface object's template. |  274   {% if is_partial %} | 
|  276     {% if is_partial %} |  275   {{v8_class}}::install{{v8_class}}Template(isolate, world, interfaceTemplate); | 
|  277     {{v8_class}}::install{{v8_class}}Template(isolate, world, interfaceTemplate)
     ; |  276   {% else %} | 
 |  277   {% set parent_interface_template = | 
 |  278          '%s::domTemplateForNamedPropertiesObject(isolate, world)' % v8_class | 
 |  279          if has_named_properties_object else | 
 |  280          'V8%s::domTemplate(isolate, world)' % parent_interface | 
 |  281          if parent_interface else | 
 |  282          'v8::Local<v8::FunctionTemplate>()' %} | 
 |  283   V8DOMConfiguration::initializeDOMInterfaceTemplate(isolate, interfaceTemplate,
      {{v8_class}}::wrapperTypeInfo.interfaceName, {{parent_interface_template}}, {{v
     8_class}}::internalFieldCount); | 
 |  284   {% if constructors or has_custom_constructor or has_event_constructor or has_h
     tml_constructor %} | 
 |  285   interfaceTemplate->SetCallHandler({{v8_class}}::constructorCallback); | 
 |  286   interfaceTemplate->SetLength({{interface_length}}); | 
 |  287   {% endif %} | 
 |  288   {% endif %}{# is_partial #} | 
 |  289   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTemp
     late); | 
 |  290   ALLOW_UNUSED_LOCAL(signature); | 
 |  291   v8::Local<v8::ObjectTemplate> instanceTemplate = interfaceTemplate->InstanceTe
     mplate(); | 
 |  292   ALLOW_UNUSED_LOCAL(instanceTemplate); | 
 |  293   v8::Local<v8::ObjectTemplate> prototypeTemplate = interfaceTemplate->Prototype
     Template(); | 
 |  294   ALLOW_UNUSED_LOCAL(prototypeTemplate); | 
 |  295  | 
 |  296   {%- if interface_name == 'Window' and not is_partial %}{{newline}} | 
 |  297   prototypeTemplate->SetInternalFieldCount(V8Window::internalFieldCount); | 
 |  298   {% endif %} | 
 |  299  | 
 |  300   // Register DOM constants, attributes and operations. | 
 |  301   {% filter runtime_enabled(runtime_enabled_function) %} | 
 |  302   {% if constants %} | 
 |  303   {{install_constants() | indent(2)}} | 
 |  304   {% endif %} | 
 |  305   {% if attributes | has_attribute_configuration %} | 
 |  306   V8DOMConfiguration::installAttributes(isolate, world, instanceTemplate, protot
     ypeTemplate, {{'%sAttributes' % v8_class}}, {{'WTF_ARRAY_LENGTH(%sAttributes)' %
      v8_class}}); | 
 |  307   {% endif %} | 
 |  308   {% if attributes | has_accessor_configuration %} | 
 |  309   V8DOMConfiguration::installAccessors(isolate, world, instanceTemplate, prototy
     peTemplate, interfaceTemplate, signature, {{'%sAccessors' % v8_class}}, {{'WTF_A
     RRAY_LENGTH(%sAccessors)' % v8_class}}); | 
 |  310   {% endif %} | 
 |  311   {% if methods | has_method_configuration(is_partial) %} | 
 |  312   V8DOMConfiguration::installMethods(isolate, world, instanceTemplate, prototype
     Template, interfaceTemplate, signature, {{'%sMethods' % v8_class}}, {{'WTF_ARRAY
     _LENGTH(%sMethods)' % v8_class}}); | 
 |  313   {% endif %} | 
 |  314   {% endfilter %} | 
 |  315   {%- if has_access_check_callbacks and not is_partial %}{{newline}} | 
 |  316   // Cross-origin access check | 
 |  317   instanceTemplate->SetAccessCheckCallback({{cpp_class}}V8Internal::securityChec
     k, v8::External::New(isolate, const_cast<WrapperTypeInfo*>(&{{v8_class}}::wrappe
     rTypeInfo))); | 
 |  318   {% endif %} | 
 |  319  | 
 |  320   {%- for group in attributes | purely_runtime_enabled_attributes | groupby('run
     time_feature_name') %}{{newline}} | 
 |  321   if ({{group.list[0].runtime_enabled_function}}()) { | 
 |  322     {% for attribute in group.list | unique_by('name') | sort %} | 
 |  323     {% if attribute.is_data_type_property %} | 
 |  324     const V8DOMConfiguration::AttributeConfiguration attribute{{attribute.name}}
     Configuration = {{attribute_configuration(attribute)}}; | 
 |  325     V8DOMConfiguration::installAttribute(isolate, world, instanceTemplate, proto
     typeTemplate, attribute{{attribute.name}}Configuration); | 
|  278     {% else %} |  326     {% else %} | 
|  279     {% set parent_interface_template = |  327     const V8DOMConfiguration::AccessorConfiguration accessor{{attribute.name}}Co
     nfiguration = {{attribute_configuration(attribute)}}; | 
|  280            '%s::domTemplateForNamedPropertiesObject(isolate, world)' % v8_class |  328     V8DOMConfiguration::installAccessor(isolate, world, instanceTemplate, protot
     ypeTemplate, interfaceTemplate, signature, accessor{{attribute.name}}Configurati
     on); | 
|  281            if has_named_properties_object else |  | 
|  282            'V8%s::domTemplate(isolate, world)' % parent_interface |  | 
|  283            if parent_interface else |  | 
|  284            'v8::Local<v8::FunctionTemplate>()' %} |  | 
|  285     V8DOMConfiguration::initializeDOMInterfaceTemplate(isolate, interfaceTemplat
     e, {{v8_class}}::wrapperTypeInfo.interfaceName, {{parent_interface_template}}, {
     {v8_class}}::internalFieldCount); |  | 
|  286     {% if constructors or has_custom_constructor or has_event_constructor or has
     _html_constructor %} |  | 
|  287     interfaceTemplate->SetCallHandler({{v8_class}}::constructorCallback); |  | 
|  288     interfaceTemplate->SetLength({{interface_length}}); |  | 
|  289     {% endif %} |  329     {% endif %} | 
|  290     {% endif %}{# is_partial #} |  330     {% endfor %} | 
|  291     v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTe
     mplate); |  331   } | 
|  292     ALLOW_UNUSED_LOCAL(signature); |  332   {% endfor %} | 
|  293     v8::Local<v8::ObjectTemplate> instanceTemplate = interfaceTemplate->Instance
     Template(); |  | 
|  294     ALLOW_UNUSED_LOCAL(instanceTemplate); |  | 
|  295     v8::Local<v8::ObjectTemplate> prototypeTemplate = interfaceTemplate->Prototy
     peTemplate(); |  | 
|  296     ALLOW_UNUSED_LOCAL(prototypeTemplate); |  | 
|  297  |  333  | 
|  298     {%- if interface_name == 'Window' and not is_partial %}{{newline}} |  334   {% if (indexed_property_getter or named_property_getter) and not is_partial %} | 
|  299     prototypeTemplate->SetInternalFieldCount(V8Window::internalFieldCount); |  335   // Indexed properties | 
|  300     {% endif %} |  336   {{install_indexed_property_handler('instanceTemplate') | indent(2)}} | 
 |  337   {% endif %} | 
 |  338   {% if named_property_getter and not is_partial and not has_named_properties_ob
     ject %} | 
 |  339   // Named properties | 
 |  340   {{install_named_property_handler('instanceTemplate') | indent(2)}} | 
 |  341   {% endif %} | 
|  301  |  342  | 
|  302     // Register DOM constants, attributes and operations. |  343   {% if has_array_iterator and not is_partial %} | 
|  303     {% filter runtime_enabled(runtime_enabled_function) %} |  344   // Array iterator (@@iterator) | 
|  304     {% if constants %} |  345   {%+ if is_global %}instanceTemplate{% else %}prototypeTemplate{% endif %}->Set
     IntrinsicDataProperty(v8::Symbol::GetIterator(isolate), v8::kArrayProto_values, 
     v8::DontEnum); | 
|  305     {{install_constants() | indent}} |  346   {% endif %} | 
|  306     {% endif %} |  | 
|  307     {% if attributes | has_attribute_configuration %} |  | 
|  308     V8DOMConfiguration::installAttributes(isolate, world, instanceTemplate, prot
     otypeTemplate, {{'%sAttributes' % v8_class}}, {{'WTF_ARRAY_LENGTH(%sAttributes)'
      % v8_class}}); |  | 
|  309     {% endif %} |  | 
|  310     {% if attributes | has_accessor_configuration %} |  | 
|  311     V8DOMConfiguration::installAccessors(isolate, world, instanceTemplate, proto
     typeTemplate, interfaceTemplate, signature, {{'%sAccessors' % v8_class}}, {{'WTF
     _ARRAY_LENGTH(%sAccessors)' % v8_class}}); |  | 
|  312     {% endif %} |  | 
|  313     {% if methods | has_method_configuration(is_partial) %} |  | 
|  314     V8DOMConfiguration::installMethods(isolate, world, instanceTemplate, prototy
     peTemplate, interfaceTemplate, signature, {{'%sMethods' % v8_class}}, {{'WTF_ARR
     AY_LENGTH(%sMethods)' % v8_class}}); |  | 
|  315     {% endif %} |  | 
|  316     {% endfilter %} |  | 
|  317     {%- if has_access_check_callbacks and not is_partial %}{{newline}} |  | 
|  318     // Cross-origin access check |  | 
|  319     instanceTemplate->SetAccessCheckCallback({{cpp_class}}V8Internal::securityCh
     eck, v8::External::New(isolate, const_cast<WrapperTypeInfo*>(&{{v8_class}}::wrap
     perTypeInfo))); |  | 
|  320     {% endif %} |  | 
|  321  |  347  | 
|  322     {%- for group in attributes | purely_runtime_enabled_attributes | groupby('r
     untime_feature_name') %}{{newline}} |  348   {% if iterator_method %} | 
|  323     if ({{group.list[0].runtime_enabled_function}}()) { |  349   {% filter exposed(iterator_method.exposed_test) %} | 
|  324         {% for attribute in group.list | unique_by('name') | sort %} |  350   {% filter runtime_enabled(iterator_method.runtime_enabled_function) %} | 
|  325         {% if attribute.is_data_type_property %} |  351   // Iterator (@@iterator) | 
|  326         const V8DOMConfiguration::AttributeConfiguration attribute{{attribute.na
     me}}Configuration = \ |  352   const V8DOMConfiguration::SymbolKeyedMethodConfiguration symbolKeyedIteratorCo
     nfiguration = { v8::Symbol::GetIterator, {{cpp_class_or_partial}}V8Internal::ite
     ratorMethodCallback, 0, v8::DontEnum, V8DOMConfiguration::ExposedToAllScripts, V
     8DOMConfiguration::OnPrototype }; | 
|  327         {{attribute_configuration(attribute)}}; |  353   V8DOMConfiguration::installMethod(isolate, world, prototypeTemplate, signature
     , symbolKeyedIteratorConfiguration); | 
|  328         V8DOMConfiguration::installAttribute(isolate, world, instanceTemplate, p
     rototypeTemplate, attribute{{attribute.name}}Configuration); |  354   {% endfilter %} | 
|  329         {% else %} |  355   {% endfilter %} | 
|  330         const V8DOMConfiguration::AccessorConfiguration accessor{{attribute.name
     }}Configuration = \ |  356   {% endif %} | 
|  331         {{attribute_configuration(attribute)}}; |  | 
|  332         V8DOMConfiguration::installAccessor(isolate, world, instanceTemplate, pr
     ototypeTemplate, interfaceTemplate, signature, accessor{{attribute.name}}Configu
     ration); |  | 
|  333         {% endif %} |  | 
|  334         {% endfor %} |  | 
|  335     } |  | 
|  336     {% endfor %} |  | 
|  337  |  357  | 
|  338     {% if (indexed_property_getter or named_property_getter) and not is_partial 
     %} |  358   {%- if has_custom_legacy_call_as_function and not is_partial %}{{newline}} | 
|  339     // Indexed properties |  359   instanceTemplate->SetCallAsFunctionHandler({{v8_class}}::legacyCallCustom); | 
|  340     {{install_indexed_property_handler('instanceTemplate') | indent}} |  360   {% endif %} | 
|  341     {% endif %} |  | 
|  342     {% if named_property_getter and not is_partial and not has_named_properties_
     object %} |  | 
|  343     // Named properties |  | 
|  344     {{install_named_property_handler('instanceTemplate') | indent}} |  | 
|  345     {% endif %} |  | 
|  346  |  361  | 
|  347     {% if has_array_iterator and not is_partial %} |  362   {%- if interface_name == 'HTMLAllCollection' and not is_partial %}{{newline}} | 
|  348     // Array iterator (@@iterator) |  363   // Needed for legacy support of document.all | 
|  349     {%+ if is_global %}instanceTemplate{% else %}prototypeTemplate{% endif %}->S
     etIntrinsicDataProperty(v8::Symbol::GetIterator(isolate), v8::kArrayProto_values
     , v8::DontEnum); |  364   instanceTemplate->MarkAsUndetectable(); | 
|  350     {% endif %} |  365   {% endif %} | 
|  351  |  366  | 
|  352     {% if iterator_method %} |  367   {%- if methods | custom_registration(is_partial) %}{{newline}} | 
|  353     {% filter exposed(iterator_method.exposed_test) %} |  368   {% for method in methods | custom_registration(is_partial) %} | 
|  354     {% filter runtime_enabled(iterator_method.runtime_enabled_function) %} |  369   {# install_custom_signature #} | 
|  355     // Iterator (@@iterator) |  370   {% filter exposed(method.overloads.exposed_test_all | 
|  356     const V8DOMConfiguration::SymbolKeyedMethodConfiguration symbolKeyedIterator
     Configuration = { v8::Symbol::GetIterator, {{cpp_class_or_partial}}V8Internal::i
     teratorMethodCallback, 0, v8::DontEnum, V8DOMConfiguration::ExposedToAllScripts,
      V8DOMConfiguration::OnPrototype }; |  371                     if method.overloads else method.exposed_test) %} | 
|  357     V8DOMConfiguration::installMethod(isolate, world, prototypeTemplate, signatu
     re, symbolKeyedIteratorConfiguration); |  372   {% filter runtime_enabled(method.overloads.runtime_enabled_function_all | 
|  358     {% endfilter %} |  373                             if method.overloads else method.runtime_enabled_func
     tion) %} | 
|  359     {% endfilter %} |  374   {% if method.is_do_not_check_security %} | 
|  360     {% endif %} |  375   {{install_do_not_check_security_method(method, '', 'instanceTemplate', 'protot
     ypeTemplate') | indent(2)}} | 
|  361  |  376   {% else %} | 
|  362     {%- if has_custom_legacy_call_as_function and not is_partial %}{{newline}} |  377   {{install_custom_signature(method, 'instanceTemplate', 'prototypeTemplate', 'i
     nterfaceTemplate', 'signature') | indent(2)}} | 
|  363     instanceTemplate->SetCallAsFunctionHandler({{v8_class}}::legacyCallCustom); |  378   {% endif %} | 
|  364     {% endif %} |  379   {% endfilter %} | 
|  365  |  380   {% endfilter %} | 
|  366     {%- if interface_name == 'HTMLAllCollection' and not is_partial %}{{newline}
     } |  381   {% endfor %} | 
|  367     // Needed for legacy support of document.all |  382   {% endif %} | 
|  368     instanceTemplate->MarkAsUndetectable(); |  | 
|  369     {% endif %} |  | 
|  370  |  | 
|  371     {%- if methods | custom_registration(is_partial) %}{{newline}} |  | 
|  372     {% for method in methods | custom_registration(is_partial) %} |  | 
|  373     {# install_custom_signature #} |  | 
|  374     {% filter exposed(method.overloads.exposed_test_all |  | 
|  375                       if method.overloads else |  | 
|  376                       method.exposed_test) %} |  | 
|  377     {% filter runtime_enabled(method.overloads.runtime_enabled_function_all |  | 
|  378                               if method.overloads else |  | 
|  379                               method.runtime_enabled_function) %} |  | 
|  380     {% if method.is_do_not_check_security %} |  | 
|  381     {{install_do_not_check_security_method(method, '', 'instanceTemplate', 'prot
     otypeTemplate') | indent}} |  | 
|  382     {% else %} |  | 
|  383     {{install_custom_signature(method, 'instanceTemplate', 'prototypeTemplate', 
     'interfaceTemplate', 'signature') | indent}} |  | 
|  384     {% endif %} |  | 
|  385     {% endfilter %} |  | 
|  386     {% endfilter %} |  | 
|  387     {% endfor %} |  | 
|  388     {% endif %} |  | 
|  389 } |  383 } | 
|  390  |  384  | 
|  391 {% endif %}{# not is_array_buffer_or_view #} |  385 {% endif %}{# not is_array_buffer_or_view #} | 
|  392 {% endblock %} |  386 {% endblock %} | 
|  393 {##############################################################################} |  387 {##############################################################################} | 
|  394 {% block origin_trials %} |  388 {% block origin_trials %} | 
|  395 {% from 'attributes.cpp.tmpl' import attribute_configuration with context %} |  389 {% from 'attributes.cpp.tmpl' import attribute_configuration with context %} | 
|  396 {% from 'constants.cpp.tmpl' import constant_configuration with context %} |  390 {% from 'constants.cpp.tmpl' import constant_configuration with context %} | 
|  397 {% from 'methods.cpp.tmpl' import method_configuration with context %} |  391 {% from 'methods.cpp.tmpl' import method_configuration with context %} | 
|  398 {% for origin_trial_feature in origin_trial_features %}{{newline}} |  392 {% for origin_trial_feature in origin_trial_features %}{{newline}} | 
|  399 void {{v8_class_or_partial}}::install{{origin_trial_feature.name}}(v8::Isolate* 
     isolate, const DOMWrapperWorld& world, v8::Local<v8::Object> instance, v8::Local
     <v8::Object> prototype, v8::Local<v8::Function> interface) |  393 void {{v8_class_or_partial}}::install{{origin_trial_feature.name}}(v8::Isolate* 
     isolate, const DOMWrapperWorld& world, v8::Local<v8::Object> instance, v8::Local
     <v8::Object> prototype, v8::Local<v8::Function> interface) { | 
|  400 { |  394   {% if attributes | for_origin_trial_feature(origin_trial_feature.name) or | 
|  401     {% if attributes | for_origin_trial_feature(origin_trial_feature.name) or |  395         methods | method_for_origin_trial_feature(origin_trial_feature.name, is_
     partial) %} | 
|  402           methods | method_for_origin_trial_feature(origin_trial_feature.name, i
     s_partial) %} |  396   v8::Local<v8::FunctionTemplate> interfaceTemplate = {{v8_class}}::wrapperTypeI
     nfo.domTemplate(isolate, world); | 
|  403     v8::Local<v8::FunctionTemplate> interfaceTemplate = {{v8_class}}::wrapperTyp
     eInfo.domTemplate(isolate, world); |  397   v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTemp
     late); | 
|  404     v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTe
     mplate); |  398   ALLOW_UNUSED_LOCAL(signature); | 
|  405     ALLOW_UNUSED_LOCAL(signature); |  399   {% endif %} | 
|  406     {% endif %} |  400   {# Origin-Trial-enabled attributes #} | 
|  407     {# Origin-Trial-enabled attributes #} |  401   {% for attribute in attributes | for_origin_trial_feature(origin_trial_feature
     .name) | unique_by('name') | sort %} | 
|  408     {% for attribute in attributes | for_origin_trial_feature(origin_trial_featu
     re.name) | unique_by('name') | sort %} |  402   {% if attribute.is_data_type_property %} | 
|  409     {% if attribute.is_data_type_property %} |  403   const V8DOMConfiguration::AttributeConfiguration attribute{{attribute.name}}Co
     nfiguration = {{attribute_configuration(attribute)}}; | 
|  410     const V8DOMConfiguration::AttributeConfiguration attribute{{attribute.name}}
     Configuration = \ |  404   V8DOMConfiguration::installAttribute(isolate, world, instance, prototype, attr
     ibute{{attribute.name}}Configuration); | 
|  411         {{attribute_configuration(attribute)}}; |  405   {% else %} | 
|  412     V8DOMConfiguration::installAttribute(isolate, world, instance, prototype, at
     tribute{{attribute.name}}Configuration); |  406   const V8DOMConfiguration::AccessorConfiguration accessor{{attribute.name}}Conf
     iguration = {{attribute_configuration(attribute)}}; | 
|  413     {% else %} |  407   V8DOMConfiguration::installAccessor(isolate, world, instance, prototype, inter
     face, signature, accessor{{attribute.name}}Configuration); | 
|  414     const V8DOMConfiguration::AccessorConfiguration accessor{{attribute.name}}Co
     nfiguration = \ |  408   {% endif %} | 
|  415         {{attribute_configuration(attribute)}}; |  409   {% endfor %} | 
|  416     V8DOMConfiguration::installAccessor(isolate, world, instance, prototype, int
     erface, signature, accessor{{attribute.name}}Configuration); |  410   {# Origin-Trial-enabled constants #} | 
|  417     {% endif %} |  411   {% for constant in constants | for_origin_trial_feature(origin_trial_feature.n
     ame) | unique_by('name') | sort %} | 
|  418     {% endfor %} |  412   {% set constant_name = constant.name.title().replace('_', '') %} | 
|  419     {# Origin-Trial-enabled constants #} |  413   const V8DOMConfiguration::ConstantConfiguration constant{{constant_name}}Confi
     guration = {{constant_configuration(constant)}}; | 
|  420     {% for constant in constants | for_origin_trial_feature(origin_trial_feature
     .name) | unique_by('name') | sort %} |  414   V8DOMConfiguration::installConstant(isolate, interface, prototype, constant{{c
     onstant_name}}Configuration); | 
|  421     {% set constant_name = constant.name.title().replace('_', '') %} |  415   {% endfor %} | 
|  422     const V8DOMConfiguration::ConstantConfiguration constant{{constant_name}}Con
     figuration = {{constant_configuration(constant)}}; |  416   {# Origin-Trial-enabled methods (no overloads) #} | 
|  423     V8DOMConfiguration::installConstant(isolate, interface, prototype, constant{
     {constant_name}}Configuration); |  417   {% for method in methods | method_for_origin_trial_feature(origin_trial_featur
     e.name, is_partial) | unique_by('name') | sort %} | 
|  424     {% endfor %} |  418   {% set method_name = method.name.title().replace('_', '') %} | 
|  425     {# Origin-Trial-enabled methods (no overloads) #} |  419   const V8DOMConfiguration::MethodConfiguration method{{method_name}}Configurati
     on = {{method_configuration(method)}}; | 
|  426     {% for method in methods | method_for_origin_trial_feature(origin_trial_feat
     ure.name, is_partial) | unique_by('name') | sort %} |  420   V8DOMConfiguration::installMethod(isolate, world, instance, prototype, interfa
     ce, signature, method{{method_name}}Configuration); | 
|  427     {% set method_name = method.name.title().replace('_', '') %} |  421   {% endfor %} | 
|  428     const V8DOMConfiguration::MethodConfiguration method{{method_name}}Configura
     tion = {{method_configuration(method)}}; |  | 
|  429     V8DOMConfiguration::installMethod(isolate, world, instance, prototype, inter
     face, signature, method{{method_name}}Configuration); |  | 
|  430     {% endfor %} |  | 
|  431 } |  422 } | 
|  432  |  423  | 
|  433 void {{v8_class_or_partial}}::install{{origin_trial_feature.name}}(ScriptState* 
     scriptState, v8::Local<v8::Object> instance) |  424 void {{v8_class_or_partial}}::install{{origin_trial_feature.name}}(ScriptState* 
     scriptState, v8::Local<v8::Object> instance) { | 
|  434 { |  425   V8PerContextData* perContextData = V8PerContextData::from(scriptState->context
     ()); | 
|  435     V8PerContextData* perContextData = V8PerContextData::from(scriptState->conte
     xt()); |  426   v8::Local<v8::Object> prototype = perContextData->prototypeForType(&{{v8_class
     }}::wrapperTypeInfo); | 
|  436     v8::Local<v8::Object> prototype = perContextData->prototypeForType(&{{v8_cla
     ss}}::wrapperTypeInfo); |  427   v8::Local<v8::Function> interface = perContextData->constructorForType(&{{v8_c
     lass}}::wrapperTypeInfo); | 
|  437     v8::Local<v8::Function> interface = perContextData->constructorForType(&{{v8
     _class}}::wrapperTypeInfo); |  428   ALLOW_UNUSED_LOCAL(interface); | 
|  438     ALLOW_UNUSED_LOCAL(interface); |  429   install{{origin_trial_feature.name}}(scriptState->isolate(), scriptState->worl
     d(), instance, prototype, interface); | 
|  439     install{{origin_trial_feature.name}}(scriptState->isolate(), scriptState->wo
     rld(), instance, prototype, interface); |  | 
|  440 } |  430 } | 
|  441 {% if not origin_trial_feature.needs_instance %} |  431 {% if not origin_trial_feature.needs_instance %} | 
|  442  |  432  | 
|  443 void {{v8_class_or_partial}}::install{{origin_trial_feature.name}}(ScriptState* 
     scriptState) |  433 void {{v8_class_or_partial}}::install{{origin_trial_feature.name}}(ScriptState* 
     scriptState) { | 
|  444 { |  434   install{{origin_trial_feature.name}}(scriptState, v8::Local<v8::Object>()); | 
|  445     install{{origin_trial_feature.name}}(scriptState, v8::Local<v8::Object>()); |  | 
|  446 } |  435 } | 
|  447 {% endif %} |  436 {% endif %} | 
|  448 {% endfor %} |  437 {% endfor %} | 
|  449 {% endblock %} |  438 {% endblock %} | 
|  450 {##############################################################################} |  439 {##############################################################################} | 
|  451 {% block get_dom_template %}{% endblock %} |  440 {% block get_dom_template %}{% endblock %} | 
|  452 {% block get_dom_template_for_named_properties_object %}{% endblock %} |  441 {% block get_dom_template_for_named_properties_object %}{% endblock %} | 
|  453 {% block has_instance %}{% endblock %} |  442 {% block has_instance %}{% endblock %} | 
|  454 {% block to_impl %}{% endblock %} |  443 {% block to_impl %}{% endblock %} | 
|  455 {% block to_impl_with_type_check %}{% endblock %} |  444 {% block to_impl_with_type_check %}{% endblock %} | 
|  456 {##############################################################################} |  445 {##############################################################################} | 
|  457 {% block prepare_prototype_and_interface_object %}{% endblock %} |  446 {% block prepare_prototype_and_interface_object %}{% endblock %} | 
|  458 {##############################################################################} |  447 {##############################################################################} | 
|  459 {% for method in methods if method.is_implemented_in_private_script and method.v
     isible %} |  448 {% for method in methods if method.is_implemented_in_private_script and method.v
     isible %} | 
|  460 {{method_implemented_in_private_script(method)}} |  449 {{method_implemented_in_private_script(method)}} | 
|  461 {% endfor %} |  450 {% endfor %} | 
|  462 {% for attribute in attributes if attribute.is_implemented_in_private_script %} |  451 {% for attribute in attributes if attribute.is_implemented_in_private_script %} | 
|  463 {{attribute_getter_implemented_in_private_script(attribute)}} |  452 {{attribute_getter_implemented_in_private_script(attribute)}} | 
|  464 {% if attribute.has_setter %} |  453 {% if attribute.has_setter %} | 
|  465 {{attribute_setter_implemented_in_private_script(attribute)}} |  454 {{attribute_setter_implemented_in_private_script(attribute)}} | 
|  466 {% endif %} |  455 {% endif %} | 
|  467 {% endfor %} |  456 {% endfor %} | 
|  468 {% block partial_interface %}{% endblock %} |  457 {% block partial_interface %}{% endblock %} | 
|  469 } // namespace blink |  458 }  // namespace blink | 
|  470  |  459  | 
|  471 {% endfilter %}{# format_blink_cpp_source_code #} |  460 {% endfilter %}{# format_blink_cpp_source_code #} | 
| OLD | NEW |