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 |