| OLD | NEW |
| 1 {% extends 'interface_base.cpp' %} | 1 {% extends 'interface_base.cpp' %} |
| 2 | 2 |
| 3 | 3 |
| 4 {##############################################################################} | 4 {##############################################################################} |
| 5 {% block constructor_getter %} | 5 {% block constructor_getter %} |
| 6 {% if has_constructor_attributes %} | 6 {% if has_constructor_attributes %} |
| 7 static void {{cpp_class}}ConstructorGetter(v8::Local<v8::String>, const v8::Prop
ertyCallbackInfo<v8::Value>& info) | 7 static void {{cpp_class}}ConstructorGetter(v8::Local<v8::String>, const v8::Prop
ertyCallbackInfo<v8::Value>& info) |
| 8 { | 8 { |
| 9 v8::Handle<v8::Value> data = info.Data(); | 9 v8::Handle<v8::Value> data = info.Data(); |
| 10 ASSERT(data->IsExternal()); | 10 ASSERT(data->IsExternal()); |
| (...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 exceptionState.throwTypeError("An event name must be provided."); | 575 exceptionState.throwTypeError("An event name must be provided."); |
| 576 exceptionState.throwIfNeeded(); | 576 exceptionState.throwIfNeeded(); |
| 577 return; | 577 return; |
| 578 } | 578 } |
| 579 | 579 |
| 580 TOSTRING_VOID(V8StringResource<>, type, info[0]); | 580 TOSTRING_VOID(V8StringResource<>, type, info[0]); |
| 581 {% for attribute in any_type_attributes %} | 581 {% for attribute in any_type_attributes %} |
| 582 v8::Local<v8::Value> {{attribute.name}}; | 582 v8::Local<v8::Value> {{attribute.name}}; |
| 583 {% endfor %} | 583 {% endfor %} |
| 584 {{cpp_class}}Init eventInit; | 584 {{cpp_class}}Init eventInit; |
| 585 if (info.Length() >= 2) { | 585 if (info.Length() >= 2 && !info[1].IsEmpty() && info[1]->IsObject()) { |
| 586 TONATIVE_VOID(Dictionary, options, Dictionary(info[1], info.GetIsolate()
)); | 586 PropertyBag bag(info.GetIsolate(), info[1]->ToObject(), exceptionState); |
| 587 if (!initialize{{cpp_class}}(eventInit, options, exceptionState, info))
{ | 587 if (!initialize{{cpp_class}}(eventInit, bag, exceptionState, info)) { |
| 588 exceptionState.throwIfNeeded(); | 588 exceptionState.throwIfNeeded(); |
| 589 return; | 589 return; |
| 590 } | 590 } |
| 591 {# Store attributes of type |any| on the wrapper to avoid leaking them | 591 {# Store attributes of type |any| on the wrapper to avoid leaking them |
| 592 between isolated worlds. #} | 592 between isolated worlds. #} |
| 593 {% for attribute in any_type_attributes %} | 593 {% for attribute in any_type_attributes %} |
| 594 options.get("{{attribute.name}}", {{attribute.name}}); | 594 if (bag.hasProperty("{{attribute.name}}")) { |
| 595 if (!{{attribute.name}}.IsEmpty()) | 595 bag.convert("{{attribute.name}}", {{attribute.name}}); |
| 596 V8HiddenValue::setHiddenValue(info.GetIsolate(), info.Holder(), v8At
omicString(info.GetIsolate(), "{{attribute.name}}"), {{attribute.name}}); | 596 V8HiddenValue::setHiddenValue(info.GetIsolate(), info.Holder(), v8At
omicString(info.GetIsolate(), "{{attribute.name}}"), {{attribute.name}}); |
| 597 } |
| 597 {% endfor %} | 598 {% endfor %} |
| 598 } | 599 } |
| 599 {% if is_constructor_raises_exception %} | 600 {% if is_constructor_raises_exception %} |
| 600 RefPtrWillBeRawPtr<{{cpp_class}}> event = {{cpp_class}}::create(type, eventI
nit, exceptionState); | 601 RefPtrWillBeRawPtr<{{cpp_class}}> event = {{cpp_class}}::create(type, eventI
nit, exceptionState); |
| 601 if (exceptionState.throwIfNeeded()) | 602 if (exceptionState.throwIfNeeded()) |
| 602 return; | 603 return; |
| 603 {% else %} | 604 {% else %} |
| 604 RefPtrWillBeRawPtr<{{cpp_class}}> event = {{cpp_class}}::create(type, eventI
nit); | 605 RefPtrWillBeRawPtr<{{cpp_class}}> event = {{cpp_class}}::create(type, eventI
nit); |
| 605 {% endif %} | 606 {% endif %} |
| 606 {% if any_type_attributes and not interface_name == 'ErrorEvent' %} | 607 {% if any_type_attributes and not interface_name == 'ErrorEvent' %} |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 724 {% endfor %} | 725 {% endfor %} |
| 725 }; | 726 }; |
| 726 | 727 |
| 727 {% endif %} | 728 {% endif %} |
| 728 {% endblock %} | 729 {% endblock %} |
| 729 | 730 |
| 730 | 731 |
| 731 {##############################################################################} | 732 {##############################################################################} |
| 732 {% block initialize_event %} | 733 {% block initialize_event %} |
| 733 {% if has_event_constructor %} | 734 {% if has_event_constructor %} |
| 734 bool initialize{{cpp_class}}({{cpp_class}}Init& eventInit, const Dictionary& opt
ions, ExceptionState& exceptionState, const v8::FunctionCallbackInfo<v8::Value>&
info, const String& forEventName) | 735 bool initialize{{cpp_class}}({{cpp_class}}Init& eventInit, const PropertyBag& ba
g, ExceptionState& exceptionState, const v8::FunctionCallbackInfo<v8::Value>& in
fo, const String& forEventName) |
| 735 { | 736 { |
| 736 Dictionary::ConversionContext conversionContext(forEventName.isEmpty() ? Str
ing("{{interface_name}}") : forEventName, "", exceptionState); | 737 EventInitInitializer initializer(forEventName.isEmpty() ? String("{{interfac
e_name}}") : forEventName, bag, exceptionState); |
| 737 {% if parent_interface %}{# any Event interface except Event itself #} | 738 {% if parent_interface %}{# any Event interface except Event itself #} |
| 738 if (!initialize{{parent_interface}}(eventInit, options, exceptionState, info
, forEventName.isEmpty() ? String("{{interface_name}}") : forEventName)) | 739 if (!initialize{{parent_interface}}(eventInit, bag, exceptionState, info, fo
rEventName.isEmpty() ? String("{{interface_name}}") : forEventName)) |
| 739 return false; | 740 return false; |
| 740 | 741 |
| 741 {% endif %} | 742 {% endif %} |
| 742 {% for attribute in attributes | 743 {% for attribute in attributes |
| 743 if (attribute.is_initialized_by_event_constructor and | 744 if (attribute.is_initialized_by_event_constructor and |
| 744 not attribute.idl_type == 'any')%} | 745 not attribute.idl_type == 'any')%} |
| 745 {% set is_nullable = 'true' if attribute.is_nullable else 'false' %} | 746 {% set is_nullable = 'PropertyBag::IsNullable' if attribute.is_nullable else
'PropertyBag::IsNotNullable' %} |
| 746 {% if attribute.deprecate_as %} | 747 {% if attribute.deprecate_as %} |
| 747 if (DictionaryHelper::convert(options, conversionContext.setConversionType("
{{attribute.idl_type}}", {{is_nullable}}), "{{attribute.name}}", eventInit.{{att
ribute.cpp_name}})) { | 748 if (initializer.initializeProperty("{{attribute.name}}", eventInit.{{attribu
te.cpp_name}}, "{{attribute.idl_type}}", {{is_nullable}})) { |
| 748 if (options.hasProperty("{{attribute.name}}")) | 749 if (bag.hasProperty("{{attribute.name}}")) |
| 749 UseCounter::countDeprecation(callingExecutionContext(info.GetIsolate
()), UseCounter::{{attribute.deprecate_as}}); | 750 UseCounter::countDeprecation(callingExecutionContext(info.GetIsolate
()), UseCounter::{{attribute.deprecate_as}}); |
| 750 } else { | 751 } else { |
| 751 return false; | 752 return false; |
| 752 } | 753 } |
| 753 {% else %} | 754 {% else %} |
| 754 if (!DictionaryHelper::convert(options, conversionContext.setConversionType(
"{{attribute.idl_type}}", {{is_nullable}}), "{{attribute.name}}", eventInit.{{at
tribute.cpp_name}})) | 755 if (!initializer.initializeProperty("{{attribute.name}}", eventInit.{{attrib
ute.cpp_name}}, "{{attribute.idl_type}}", {{is_nullable}})) |
| 755 return false; | 756 return false; |
| 756 {% endif %} | 757 {% endif %} |
| 757 {% endfor %} | 758 {% endfor %} |
| 758 return true; | 759 return true; |
| 759 } | 760 } |
| 760 | 761 |
| 761 {% endif %} | 762 {% endif %} |
| 762 {% endblock %} | 763 {% endblock %} |
| 763 | 764 |
| 764 | 765 |
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1263 {% endif %} | 1264 {% endif %} |
| 1264 } | 1265 } |
| 1265 | 1266 |
| 1266 template<> | 1267 template<> |
| 1267 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) | 1268 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) |
| 1268 { | 1269 { |
| 1269 return toV8(impl, creationContext, isolate); | 1270 return toV8(impl, creationContext, isolate); |
| 1270 } | 1271 } |
| 1271 | 1272 |
| 1272 {% endblock %} | 1273 {% endblock %} |
| OLD | NEW |