| 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 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 {##############################################################################} | 414 {##############################################################################} |
| 415 {% block install_dom_template %} | 415 {% block install_dom_template %} |
| 416 {% if not is_array_buffer_or_view %} | 416 {% if not is_array_buffer_or_view %} |
| 417 {% from 'methods.cpp.tmpl' import install_custom_signature with context %} | 417 {% from 'methods.cpp.tmpl' import install_custom_signature with context %} |
| 418 {% from 'attributes.cpp.tmpl' import accessor_configuration, | 418 {% from 'attributes.cpp.tmpl' import accessor_configuration, |
| 419 attribute_configuration, | 419 attribute_configuration, |
| 420 with context %} | 420 with context %} |
| 421 {% from 'constants.cpp.tmpl' import install_constants with context %} | 421 {% from 'constants.cpp.tmpl' import install_constants with context %} |
| 422 {% from 'methods.cpp.tmpl' import method_configuration with context %} | 422 {% from 'methods.cpp.tmpl' import method_configuration with context %} |
| 423 {% if has_partial_interface or is_partial %} | 423 {% if has_partial_interface or is_partial %} |
| 424 void {{v8_class_or_partial}}::install{{v8_class}}Template(v8::Isolate* isolate,
const DOMWrapperWorld& world, v8::Local<v8::FunctionTemplate> interfaceTemplate)
{ | 424 void {{v8_class_or_partial}}::install{{v8_class}}Template( |
| 425 v8::Isolate* isolate, |
| 426 const DOMWrapperWorld& world, |
| 427 v8::Local<v8::FunctionTemplate> interfaceTemplate) { |
| 425 {% else %} | 428 {% else %} |
| 426 static void install{{v8_class}}Template(v8::Isolate* isolate, const DOMWrapperWo
rld& world, v8::Local<v8::FunctionTemplate> interfaceTemplate) { | 429 static void install{{v8_class}}Template( |
| 430 v8::Isolate* isolate, |
| 431 const DOMWrapperWorld& world, |
| 432 v8::Local<v8::FunctionTemplate> interfaceTemplate) { |
| 427 {% endif %} | 433 {% endif %} |
| 428 // Initialize the interface object's template. | 434 // Initialize the interface object's template. |
| 429 {% if is_partial %} | 435 {% if is_partial %} |
| 430 {{v8_class}}::install{{v8_class}}Template(isolate, world, interfaceTemplate); | 436 {{v8_class}}::install{{v8_class}}Template(isolate, world, interfaceTemplate); |
| 431 {% else %} | 437 {% else %} |
| 432 {% set parent_interface_template = | 438 {% set parent_interface_template = |
| 433 '%s::domTemplateForNamedPropertiesObject(isolate, world)' % v8_class | 439 '%s::domTemplateForNamedPropertiesObject(isolate, world)' % v8_class |
| 434 if has_named_properties_object else | 440 if has_named_properties_object else |
| 435 'V8%s::domTemplate(isolate, world)' % parent_interface | 441 'V8%s::domTemplate(isolate, world)' % parent_interface |
| 436 if parent_interface else | 442 if parent_interface else |
| (...skipping 25 matching lines...) Expand all Loading... |
| 462 {% if is_immutable_prototype %} | 468 {% if is_immutable_prototype %} |
| 463 // Global object prototype chain consists of Immutable Prototype Exotic Object
s | 469 // Global object prototype chain consists of Immutable Prototype Exotic Object
s |
| 464 prototypeTemplate->SetImmutableProto(); | 470 prototypeTemplate->SetImmutableProto(); |
| 465 {% endif %} | 471 {% endif %} |
| 466 | 472 |
| 467 {% if is_global %} | 473 {% if is_global %} |
| 468 // Global objects are Immutable Prototype Exotic Objects | 474 // Global objects are Immutable Prototype Exotic Objects |
| 469 instanceTemplate->SetImmutableProto(); | 475 instanceTemplate->SetImmutableProto(); |
| 470 {% endif %} | 476 {% endif %} |
| 471 | 477 |
| 472 // Register DOM constants, attributes and operations. | 478 // Register IDL constants, attributes and operations. |
| 473 {% if constants %} | 479 {% if constants %} |
| 474 {{install_constants() | indent(2)}} | 480 {{install_constants() | indent(2)}} |
| 475 {% endif %} | 481 {% endif %} |
| 476 {% if data_attributes %} | 482 {% if data_attributes %} |
| 477 V8DOMConfiguration::InstallAttributes(isolate, world, instanceTemplate, protot
ypeTemplate, {{'%sAttributes' % v8_class}}, {{'WTF_ARRAY_LENGTH(%sAttributes)' %
v8_class}}); | 483 V8DOMConfiguration::InstallAttributes(isolate, world, instanceTemplate, protot
ypeTemplate, {{'%sAttributes' % v8_class}}, {{'WTF_ARRAY_LENGTH(%sAttributes)' %
v8_class}}); |
| 478 {% endif %} | 484 {% endif %} |
| 479 {% if lazy_data_attributes %} | 485 {% if lazy_data_attributes %} |
| 480 V8DOMConfiguration::InstallLazyDataAttributes(isolate, world, instanceTemplate
, prototypeTemplate, {{'%sLazyDataAttributes' % v8_class}}, {{'WTF_ARRAY_LENGTH(
%sLazyDataAttributes)' % v8_class}}); | 486 V8DOMConfiguration::InstallLazyDataAttributes(isolate, world, instanceTemplate
, prototypeTemplate, {{'%sLazyDataAttributes' % v8_class}}, {{'WTF_ARRAY_LENGTH(
%sLazyDataAttributes)' % v8_class}}); |
| 481 {% endif %} | 487 {% endif %} |
| 482 {% if accessors %} | 488 {% if accessors %} |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 | 641 |
| 636 {% endif %}{# not is_array_buffer_or_view #} | 642 {% endif %}{# not is_array_buffer_or_view #} |
| 637 {% endblock %} | 643 {% endblock %} |
| 638 {##############################################################################} | 644 {##############################################################################} |
| 639 {% block install_runtime_enabled %} | 645 {% block install_runtime_enabled %} |
| 640 {% if needs_runtime_enabled_installer %} | 646 {% if needs_runtime_enabled_installer %} |
| 641 {% from 'attributes.cpp.tmpl' import accessor_configuration, | 647 {% from 'attributes.cpp.tmpl' import accessor_configuration, |
| 642 attribute_configuration, | 648 attribute_configuration, |
| 643 with context %} | 649 with context %} |
| 644 {% from 'methods.cpp.tmpl' import install_custom_signature with context %} | 650 {% from 'methods.cpp.tmpl' import install_custom_signature with context %} |
| 645 void {{v8_class_or_partial}}::installRuntimeEnabledFeatures(v8::Isolate* isolate
, const DOMWrapperWorld& world, v8::Local<v8::Object> instance, v8::Local<v8::Ob
ject> prototype, v8::Local<v8::Function> interface) { | 651 void {{v8_class_or_partial}}::InstallRuntimeEnabledFeatures( |
| 652 v8::Isolate* isolate, |
| 653 const DOMWrapperWorld& world, |
| 654 v8::Local<v8::Object> instance, |
| 655 v8::Local<v8::Object> prototype, |
| 656 v8::Local<v8::Function> interface) { |
| 646 {% if runtime_enabled_feature_name %} | 657 {% if runtime_enabled_feature_name %} |
| 647 #error "We don't expect a runtime enabled interface {{v8_class_or_partial}} to h
ave installRuntimeEnabledFeatures()." | 658 #error "We don't expect a runtime enabled interface {{v8_class_or_partial}} to h
ave installRuntimeEnabledFeatures()." |
| 648 {% endif %} | 659 {% endif %} |
| 649 | 660 |
| 650 {% if is_partial %} | 661 {% if is_partial %} |
| 651 {{v8_class}}::installRuntimeEnabledFeatures(isolate, world, instance, prototyp
e, interface); | 662 {{v8_class}}::InstallRuntimeEnabledFeatures(isolate, world, instance, prototyp
e, interface); |
| 652 {% endif %} | 663 {% endif %} |
| 653 | 664 |
| 654 v8::Local<v8::FunctionTemplate> interfaceTemplate = {{v8_class}}::wrapperTypeI
nfo.domTemplate(isolate, world); | 665 v8::Local<v8::FunctionTemplate> interface_template = {{v8_class}}::wrapperType
Info.domTemplate(isolate, world); |
| 655 v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTemp
late); | 666 v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_tem
plate); |
| 656 ALLOW_UNUSED_LOCAL(signature); | 667 ALLOW_UNUSED_LOCAL(signature); |
| 657 | 668 |
| 658 {# TODO(peria): Generate code to install constants. It depends on runtime_enab
led_feaure of this interface. #} | 669 {# TODO(peria): Generate code to install constants. It depends on runtime_enab
led_feaure of this interface. #} |
| 659 | 670 |
| 660 {% for feature_name, attrs in runtime_enabled_attributes | selectattr('is_data
_type_property') | groupby('runtime_enabled_feature_name') %} | 671 {% for feature_name, attrs in runtime_enabled_attributes | selectattr('is_data
_type_property') | groupby('runtime_enabled_feature_name') %} |
| 661 {% filter runtime_enabled(feature_name) %} | 672 {% filter runtime_enabled(feature_name) %} |
| 662 static const V8DOMConfiguration::AttributeConfiguration attribute_configuratio
ns[] = { | 673 static const V8DOMConfiguration::AttributeConfiguration attribute_configuratio
ns[] = { |
| 663 {% for attribute in attrs | sort %} | 674 {% for attribute in attrs | sort %} |
| 664 {{attribute_configuration(attribute) | indent(6)}}, | 675 {{attribute_configuration(attribute) | indent(6)}}, |
| 665 {% endfor %} | 676 {% endfor %} |
| (...skipping 10 matching lines...) Expand all Loading... |
| 676 {{accessor_configuration(attribute) | indent(6)}}, | 687 {{accessor_configuration(attribute) | indent(6)}}, |
| 677 {% endfor %} | 688 {% endfor %} |
| 678 }; | 689 }; |
| 679 V8DOMConfiguration::InstallAccessors(isolate, world, instance, prototype, | 690 V8DOMConfiguration::InstallAccessors(isolate, world, instance, prototype, |
| 680 interface, signature, accessor_configurations, | 691 interface, signature, accessor_configurations, |
| 681 WTF_ARRAY_LENGTH(accessor_configurations)); | 692 WTF_ARRAY_LENGTH(accessor_configurations)); |
| 682 {% endfilter %} | 693 {% endfilter %} |
| 683 {% endfor %} | 694 {% endfor %} |
| 684 | 695 |
| 685 {% if iterator_method and iterator_method.runtime_enabled_feature_name %} | 696 {% if iterator_method and iterator_method.runtime_enabled_feature_name %} |
| 686 {% filter exposed(iterator_method.exposed_test) %} | 697 #error "{{v8_class_or_partial}} should not have runtime enabled iterator (@@iter
ator)." |
| 687 {% filter runtime_enabled(iterator_method.runtime_enabled_feature_name) %} | |
| 688 // Runtime enabled iterator (@@iterator) | |
| 689 #error "{{v8_class_or_partial}} should not have runtime enabled iterators." | |
| 690 {% endfilter %} | |
| 691 {% endfilter %} | |
| 692 {% endif %} | 698 {% endif %} |
| 693 | 699 |
| 694 {% if methods | custom_registration(is_partial) %} | 700 {% if methods | custom_registration(is_partial) %} |
| 695 {% for method in methods | custom_registration(is_partial) %} | 701 {% for method in methods | custom_registration(is_partial) %} |
| 696 {% filter exposed(method.overloads.exposed_test_all | 702 {% filter exposed(method.overloads.exposed_test_all |
| 697 if method.overloads else method.exposed_test) %} | 703 if method.overloads else method.exposed_test) %} |
| 698 {% set feature_name = (method.overloads.runtime_enabled_all | 704 {% set feature_name = (method.overloads.runtime_enabled_all |
| 699 if method.overloads else method.runtime_enabled_feature
_name) %} | 705 if method.overloads else method.runtime_enabled_feature
_name) %} |
| 700 {% if feature_name %} | 706 {% if feature_name %} |
| 701 {% filter runtime_enabled(feature_name) %} | 707 {% filter runtime_enabled(feature_name) %} |
| 702 {% if method.is_cross_origin %} | 708 {% if method.is_cross_origin %} |
| 703 #error "{{v8_class_or_partial}} should not have runtime enabled and cross origin
methods." | 709 #error "{{v8_class_or_partial}} should not have runtime enabled and cross origin
methods." |
| 704 {% else %} | 710 {% else %} |
| 705 {{install_custom_signature(method, 'instance', 'prototype', 'interface', 'sign
ature') | indent(2)}} | 711 {{install_custom_signature(method, 'instance', 'prototype', 'interface', 'sign
ature') | indent(2)}} |
| 706 {% endif %} | 712 {% endif %} |
| 707 {% endfilter %} | 713 {% endfilter %} |
| 708 {% endif %} | 714 {% endif %} |
| 709 {% endfilter %} | 715 {% endfilter %} |
| 710 {% endfor %} | 716 {% endfor %} |
| 711 {% endif %} | 717 {% endif %} |
| 712 } | 718 } |
| 713 | 719 |
| 720 void {{v8_class_or_partial}}::InstallRuntimeEnabledFeaturesOnTemplate( |
| 721 v8::Isolate* isolate, |
| 722 const DOMWrapperWorld& world, |
| 723 v8::Local<v8::FunctionTemplate> interface_template) { |
| 724 {% if runtime_enabled_feature_name %} |
| 725 #error "We don't expect a runtime enabled interface {{v8_class_or_partial}} to h
ave InstallRuntimeEnabledFeaturesOnTemplate()." |
| 726 {% endif %} |
| 727 |
| 728 {% if is_partial %} |
| 729 {{v8_class}}::InstallRuntimeEnabledFeaturesOnTemplate(isolate, world, interfac
e_template); |
| 730 {% endif %} |
| 731 |
| 732 v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interface_tem
plate); |
| 733 ALLOW_UNUSED_LOCAL(signature); |
| 734 v8::Local<v8::ObjectTemplate> instance_template = interface_template->Instance
Template(); |
| 735 ALLOW_UNUSED_LOCAL(instance_template); |
| 736 v8::Local<v8::ObjectTemplate> prototype_template = interface_template->Prototy
peTemplate(); |
| 737 ALLOW_UNUSED_LOCAL(prototype_template); |
| 738 |
| 739 // Register IDL constants, attributes and operations. |
| 740 {% for feature_name, constants_list in constants | selectattr('runtime_enabled
_feature_name') | groupby('runtime_enabled_feature_name') %} |
| 741 {% filter runtime_enabled(feature_name) %} |
| 742 static const V8DOMConfiguration::ConstantConfiguration constant_configurations
= { |
| 743 {% for constant in constants_list %} |
| 744 {{constant_configuration(constant) | indent(6)}}, |
| 745 {% endfor %} |
| 746 } |
| 747 V8DOMConfiguration::InstallConstants( |
| 748 isolate, interface_template, prototype_template, |
| 749 constant_configurations, WTF_ARRAY_LENGTH(constant_configurations)); |
| 750 {% endfilter %} |
| 751 {% endfor %} |
| 752 |
| 753 {% for feature_name, attribute_list in runtime_enabled_attributes | selectattr
('is_data_type_property') | groupby('runtime_enabled_feature_name') %} |
| 754 {% filter runtime_enabled(feature_name) %} |
| 755 static const V8DOMConfiguration::AttributeConfiguration attribute_configuratio
ns[] = { |
| 756 {% for attribute in attribute_list | sort %} |
| 757 {{attribute_configuration(attribute) | indent(6)}}, |
| 758 {% endfor %} |
| 759 }; |
| 760 V8DOMConfiguration::InstallAttributes( |
| 761 isolate, world, instance_template, prototype_template, |
| 762 attribute_configurations, WTF_ARRAY_LENGTH(attribute_configurations)); |
| 763 {% endfilter %} |
| 764 {% endfor %} |
| 765 |
| 766 {% for feature_name, attribute_list in runtime_enabled_attributes | selectattr
('is_data_type_property', 'equalto', False) | groupby('runtime_enabled_feature_n
ame') %} |
| 767 {% filter runtime_enabled(feature_name) %} |
| 768 static const V8DOMConfiguration::AccessorConfiguration accessor_configurations
[] = { |
| 769 {% for attribute in attribute_list | sort %} |
| 770 {{accessor_configuration(attribute) | indent(6)}}, |
| 771 {% endfor %} |
| 772 }; |
| 773 V8DOMConfiguration::InstallAccessors( |
| 774 isolate, world, instance_template, prototype_template, interface_template, |
| 775 signature, accessor_configurations, |
| 776 WTF_ARRAY_LENGTH(accessor_configurations)); |
| 777 {% endfilter %} |
| 778 {% endfor %} |
| 779 |
| 780 {% if iterator_method and iterator_method.runtime_enabled_feature_name %} |
| 781 {% filter exposed(iterator_method.exposed_test) %} |
| 782 {% filter runtime_enabled(iterator_method.runtime_enabled_feature_name) %} |
| 783 {% set symbol_alias = '"%s"' % iterator_method_alias |
| 784 if iterator_method_alias else 'nullptr' %} |
| 785 // Iterator (@@iterator) |
| 786 static const V8DOMConfiguration::SymbolKeyedMethodConfiguration |
| 787 symbol_keyed_iterator_configuration = { |
| 788 v8::Symbol::GetIterator, |
| 789 {{symbol_alias}}, |
| 790 {{v8_class_or_partial}}::iteratorMethodCallback, |
| 791 0, |
| 792 v8::DontEnum, |
| 793 V8DOMConfiguration::kOnPrototype, |
| 794 V8DOMConfiguration::kCheckHolder, |
| 795 V8DOMConfiguration::kDoNotCheckAccess |
| 796 }; |
| 797 V8DOMConfiguration::InstallMethod( |
| 798 isolate, world, prototype_template, signature, |
| 799 symbol_keyed_iterator_configuration); |
| 800 {% endfilter %} |
| 801 {% endfilter %} |
| 802 {% endif %} |
| 803 |
| 804 {% if methods | custom_registration(is_partial) %} |
| 805 {% for method in methods | custom_registration(is_partial) %} |
| 806 {% filter exposed(method.overloads.exposed_test_all |
| 807 if method.overloads else method.exposed_test) %} |
| 808 {% set feature_name = method.overloads.runtime_enabled_all |
| 809 if method.overloads else method.runtime_enabled_feature_name %} |
| 810 {% if feature_name %} |
| 811 {% filter runtime_enabled(feature_name) %} |
| 812 {% if method.is_cross_origin %} |
| 813 {{install_origin_safe_method(method, 'instance_template', 'prototype_template'
) | indent(2)}} |
| 814 {% else %} |
| 815 {{install_custom_signature(method, 'instance_template', 'prototype_template',
'interface_template', 'signature') | indent(2)}} |
| 816 {% endif %} |
| 817 {% endfilter %} |
| 818 {% endif %} |
| 819 {% endfilter %} |
| 820 {% endfor %} |
| 821 {% endif %} |
| 822 } |
| 823 |
| 714 {% endif %}{# needs_runtime_enabled_installer #} | 824 {% endif %}{# needs_runtime_enabled_installer #} |
| 715 {% endblock %} | 825 {% endblock %} |
| 716 {##############################################################################} | 826 {##############################################################################} |
| 717 {% block origin_trials %} | 827 {% block origin_trials %} |
| 718 {% from 'attributes.cpp.tmpl' import accessor_configuration, | 828 {% from 'attributes.cpp.tmpl' import accessor_configuration, |
| 719 attribute_configuration, | 829 attribute_configuration, |
| 720 with context %} | 830 with context %} |
| 721 {% from 'constants.cpp.tmpl' import constant_configuration with context %} | 831 {% from 'constants.cpp.tmpl' import constant_configuration with context %} |
| 722 {% from 'methods.cpp.tmpl' import method_configuration with context %} | 832 {% from 'methods.cpp.tmpl' import method_configuration with context %} |
| 723 {% for feature in optional_features %} | 833 {% for feature in optional_features %} |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 {% endif %} | 940 {% endif %} |
| 831 } | 941 } |
| 832 {% endif %} | 942 {% endif %} |
| 833 | 943 |
| 834 {% endblock %} | 944 {% endblock %} |
| 835 {##############################################################################} | 945 {##############################################################################} |
| 836 {% block partial_interface %}{% endblock %} | 946 {% block partial_interface %}{% endblock %} |
| 837 } // namespace blink | 947 } // namespace blink |
| 838 | 948 |
| 839 {% endfilter %}{# format_blink_cpp_source_code #} | 949 {% endfilter %}{# format_blink_cpp_source_code #} |
| OLD | NEW |