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

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

Issue 1154943009: bindings: Remove [EventConstructor] and [InitializedByEventConstructor] (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 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 | Annotate | Revision Log
OLDNEW
1 {% extends 'interface_base.cpp' %} 1 {% extends 'interface_base.cpp' %}
2 2
3 3
4 {##############################################################################} 4 {##############################################################################}
5 {% block indexed_property_getter %} 5 {% block indexed_property_getter %}
6 {% if indexed_property_getter and not indexed_property_getter.is_custom %} 6 {% if indexed_property_getter and not indexed_property_getter.is_custom %}
7 {% set getter = indexed_property_getter %} 7 {% set getter = indexed_property_getter %}
8 static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo <v8::Value>& info) 8 static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo <v8::Value>& info)
9 { 9 {
10 {{cpp_class}}* impl = {{v8_class}}::toImpl(info.Holder()); 10 {{cpp_class}}* impl = {{v8_class}}::toImpl(info.Holder());
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 {# No match, throw error #} 538 {# No match, throw error #}
539 exceptionState.throwTypeError("No matching constructor signature."); 539 exceptionState.throwTypeError("No matching constructor signature.");
540 exceptionState.throwIfNeeded(); 540 exceptionState.throwIfNeeded();
541 } 541 }
542 542
543 {% endif %} 543 {% endif %}
544 {% endblock %} 544 {% endblock %}
545 545
546 546
547 {##############################################################################} 547 {##############################################################################}
548 {% block event_constructor %}
549 {% if has_event_constructor %}
550 static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info)
551 {
552 ExceptionState exceptionState(ExceptionState::ConstructionContext, "{{interf ace_name}}", info.Holder(), info.GetIsolate());
553 if (info.Length() < 1) {
554 exceptionState.throwTypeError("An event name must be provided.");
555 exceptionState.throwIfNeeded();
556 return;
557 }
558
559 V8StringResource<> type(info[0]);
560 if (!type.prepare())
561 return;
562 {% for attribute in any_type_attributes %}
563 v8::Local<v8::Value> {{attribute.name}};
564 {% endfor %}
565 {{cpp_class}}Init eventInit;
566 if (info.Length() >= 2) {
567 Dictionary options(info[1], info.GetIsolate(), exceptionState);
568 if (!initialize{{cpp_class}}(eventInit, options, exceptionState, info)) {
569 exceptionState.throwIfNeeded();
570 return;
571 }
572 {# Store attributes of type |any| on the wrapper to avoid leaking them
573 between isolated worlds. #}
574 {% for attribute in any_type_attributes %}
575 options.get("{{attribute.name}}", {{attribute.name}});
576 if (!{{attribute.name}}.IsEmpty())
577 V8HiddenValue::setHiddenValue(info.GetIsolate(), info.Holder(), v8At omicString(info.GetIsolate(), "{{attribute.name}}"), {{attribute.name}});
578 {% endfor %}
579 }
580 {% if is_constructor_raises_exception %}
581 RefPtrWillBeRawPtr<{{cpp_class}}> event = {{cpp_class}}::create(type, eventI nit, exceptionState);
582 if (exceptionState.throwIfNeeded())
583 return;
584 {% else %}
585 RefPtrWillBeRawPtr<{{cpp_class}}> event = {{cpp_class}}::create(type, eventI nit);
586 {% endif %}
587 {% if any_type_attributes %}
588 {# If we're in an isolated world, create a SerializedScriptValue and store
589 it in the event for later cloning if the property is accessed from
590 another world. The main world case is handled lazily (in custom code). #}
591 if (DOMWrapperWorld::current(info.GetIsolate()).isIsolatedWorld()) {
592 {% for attribute in any_type_attributes %}
593 if (!{{attribute.name}}.IsEmpty())
594 event->setSerialized{{attribute.name | blink_capitalize}}(Serialized ScriptValueFactory::instance().createAndSwallowExceptions(info.GetIsolate(), {{a ttribute.name}}));
595 {% endfor %}
596 }
597
598 {% endif %}
599 v8::Local<v8::Object> wrapper = info.Holder();
600 event->associateWithWrapper(info.GetIsolate(), &{{v8_class}}::wrapperTypeInf o, wrapper);
601 v8SetReturnValue(info, wrapper);
602 }
603
604 {% endif %}
605 {% endblock %}
606
607
608 {##############################################################################}
609 {% block visit_dom_wrapper %} 548 {% block visit_dom_wrapper %}
610 {% if reachable_node_function or set_wrapper_reference_to_list %} 549 {% if reachable_node_function or set_wrapper_reference_to_list %}
611 void {{v8_class}}::visitDOMWrapper(v8::Isolate* isolate, ScriptWrappable* script Wrappable, const v8::Persistent<v8::Object>& wrapper) 550 void {{v8_class}}::visitDOMWrapper(v8::Isolate* isolate, ScriptWrappable* script Wrappable, const v8::Persistent<v8::Object>& wrapper)
612 { 551 {
613 {{cpp_class}}* impl = scriptWrappable->toImpl<{{cpp_class}}>(); 552 {{cpp_class}}* impl = scriptWrappable->toImpl<{{cpp_class}}>();
614 {% if set_wrapper_reference_to_list %} 553 {% if set_wrapper_reference_to_list %}
615 v8::Local<v8::Object> creationContext = v8::Local<v8::Object>::New(isolate, wrapper); 554 v8::Local<v8::Object> creationContext = v8::Local<v8::Object>::New(isolate, wrapper);
616 V8WrapperInstantiationScope scope(creationContext, isolate); 555 V8WrapperInstantiationScope scope(creationContext, isolate);
617 {% for set_wrapper_reference_to in set_wrapper_reference_to_list %} 556 {% for set_wrapper_reference_to in set_wrapper_reference_to_list %}
618 {{set_wrapper_reference_to.cpp_type}} {{set_wrapper_reference_to.name}} = im pl->{{set_wrapper_reference_to.name}}(); 557 {{set_wrapper_reference_to.cpp_type}} {{set_wrapper_reference_to.name}} = im pl->{{set_wrapper_reference_to.name}}();
(...skipping 27 matching lines...) Expand all
646 {% for attribute in attributes if attribute.is_unforgeable and attribute.sho uld_be_exposed_to_script %} 585 {% for attribute in attributes if attribute.is_unforgeable and attribute.sho uld_be_exposed_to_script %}
647 {{attribute_configuration(attribute)}}, 586 {{attribute_configuration(attribute)}},
648 {% endfor %} 587 {% endfor %}
649 }; 588 };
650 589
651 {% endif %} 590 {% endif %}
652 {% endblock %} 591 {% endblock %}
653 592
654 593
655 {##############################################################################} 594 {##############################################################################}
656 {% block initialize_event %}
657 {% if has_event_constructor %}
658 {{exported}}bool initialize{{cpp_class}}({{cpp_class}}Init& eventInit, const Dic tionary& options, ExceptionState& exceptionState, const v8::FunctionCallbackInfo <v8::Value>& info)
659 {
660 Dictionary::ConversionContext conversionContext(exceptionState);
661 {% if parent_interface %}{# any Event interface except Event itself #}
662 if (!initialize{{parent_interface}}(eventInit, options, exceptionState, info ))
663 return false;
664
665 {% endif %}
666 {% for attribute in attributes
667 if (attribute.is_initialized_by_event_constructor and
668 not attribute.idl_type == 'any')%}
669 {% set is_nullable = 'true' if attribute.is_nullable else 'false' %}
670 {% if attribute.deprecate_as %}
671 if (DictionaryHelper::convert(options, conversionContext.setConversionType(" {{attribute.idl_type}}", {{is_nullable}}), "{{attribute.name}}", eventInit.{{att ribute.cpp_name}})) {
672 if (options.hasProperty("{{attribute.name}}"))
673 UseCounter::countDeprecationIfNotPrivateScript(info.GetIsolate(), ca llingExecutionContext(info.GetIsolate()), UseCounter::{{attribute.deprecate_as}} );
674 } else {
675 return false;
676 }
677 {% else %}
678 if (!DictionaryHelper::convert(options, conversionContext.setConversionType( "{{attribute.idl_type}}", {{is_nullable}}), "{{attribute.name}}", eventInit.{{at tribute.cpp_name}}))
679 return false;
680 {% endif %}
681 {% endfor %}
682 return true;
683 }
684
685 {% endif %}
686 {% endblock %}
687
688
689 {##############################################################################}
690 {% block constructor_callback %} 595 {% block constructor_callback %}
691 {% if constructors or has_custom_constructor or has_event_constructor %} 596 {% if constructors or has_custom_constructor or has_event_constructor %}
692 void {{v8_class}}::constructorCallback(const v8::FunctionCallbackInfo<v8::Value> & info) 597 void {{v8_class}}::constructorCallback(const v8::FunctionCallbackInfo<v8::Value> & info)
693 { 598 {
694 TRACE_EVENT_SCOPED_SAMPLING_STATE("blink", "DOMConstructor"); 599 TRACE_EVENT_SCOPED_SAMPLING_STATE("blink", "DOMConstructor");
695 {% if measure_as %} 600 {% if measure_as %}
696 UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionConte xt(info.GetIsolate()), UseCounter::{{measure_as('Constructor')}}); 601 UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionConte xt(info.GetIsolate()), UseCounter::{{measure_as('Constructor')}});
697 {% endif %} 602 {% endif %}
698 if (!info.IsConstructCall()) { 603 if (!info.IsConstructCall()) {
699 V8ThrowException::throwTypeError(info.GetIsolate(), ExceptionMessages::c onstructorNotCallableAsFunction("{{interface_name}}")); 604 V8ThrowException::throwTypeError(info.GetIsolate(), ExceptionMessages::c onstructorNotCallableAsFunction("{{interface_name}}"));
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 } 943 }
1039 944
1040 {% for method in methods if method.overloads and method.overloads.has_partial_ov erloads %} 945 {% for method in methods if method.overloads and method.overloads.has_partial_ov erloads %}
1041 void {{v8_class}}::register{{method.name | blink_capitalize}}MethodForPartialInt erface(void (*method)(const v8::FunctionCallbackInfo<v8::Value>&)) 946 void {{v8_class}}::register{{method.name | blink_capitalize}}MethodForPartialInt erface(void (*method)(const v8::FunctionCallbackInfo<v8::Value>&))
1042 { 947 {
1043 {{cpp_class}}V8Internal::{{method.name}}MethodForPartialInterface = method; 948 {{cpp_class}}V8Internal::{{method.name}}MethodForPartialInterface = method;
1044 } 949 }
1045 {% endfor %} 950 {% endfor %}
1046 {% endif %} 951 {% endif %}
1047 {% endblock %} 952 {% endblock %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698