| 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 #ifndef {{v8_class}}_h | 4 #ifndef {{v8_class}}_h |
| 5 #define {{v8_class}}_h | 5 #define {{v8_class}}_h |
| 6 | 6 |
| 7 {% for filename in header_includes %} | 7 {% for filename in header_includes %} |
| 8 #include "{{filename}}" | 8 #include "{{filename}}" |
| 9 {% endfor %} | 9 {% endfor %} |
| 10 | 10 |
| 11 namespace blink { | 11 namespace blink { |
| 12 | 12 |
| 13 {% if has_event_constructor %} | 13 {% if has_event_constructor %} |
| 14 class Dictionary; | 14 class Dictionary; |
| 15 {% endif %} | 15 {% endif %} |
| 16 {% if attributes|origin_trial_enabled_attributes %} | 16 {% if attributes|origin_trial_enabled_attributes %} |
| 17 class ScriptState; | 17 class ScriptState; |
| 18 {% endif %} | 18 {% endif %} |
| 19 {% if named_constructor %} | 19 {% if named_constructor %} |
| 20 class {{v8_class}}Constructor { | 20 class {{v8_class}}Constructor { |
| 21 STATIC_ONLY({{v8_class}}Constructor); | 21 STATIC_ONLY({{v8_class}}Constructor); |
| 22 public: | 22 public: |
| 23 static v8::Local<v8::FunctionTemplate> domTemplate(v8::Isolate*, const DOMWr
apperWorld&); | 23 static v8::Local<v8::FunctionTemplate> domTemplate(v8::Isolate*, const DOMWrap
perWorld&); |
| 24 static const WrapperTypeInfo wrapperTypeInfo; | 24 static const WrapperTypeInfo wrapperTypeInfo; |
| 25 }; | 25 }; |
| 26 | 26 |
| 27 {% endif %} | 27 {% endif %} |
| 28 class {{v8_class}} { | 28 class {{v8_class}} { |
| 29 STATIC_ONLY({{v8_class}}); | 29 STATIC_ONLY({{v8_class}}); |
| 30 public: | 30 public: |
| 31 {% if has_private_script %} | 31 {% if has_private_script %} |
| 32 class PrivateScript { | 32 class PrivateScript { |
| 33 STATIC_ONLY(PrivateScript); | 33 STATIC_ONLY(PrivateScript); |
| 34 public: | 34 public: |
| 35 {% for method in methods if method.is_implemented_in_private_script %} | 35 {% for method in methods if method.is_implemented_in_private_script %} |
| 36 static bool {{method.name}}Method({{method.argument_declarations_for_pri
vate_script | join(', ')}}); | 36 static bool {{method.name}}Method({{method.argument_declarations_for_private
_script | join(', ')}}); |
| 37 {% endfor %} | 37 {% endfor %} |
| 38 {% for attribute in attributes if attribute.is_implemented_in_private_sc
ript %} | 38 {% for attribute in attributes if attribute.is_implemented_in_private_script
%} |
| 39 static bool {{attribute.name}}AttributeGetter(LocalFrame* frame, {{cpp_c
lass}}* holderImpl, {{attribute.cpp_type}}* result); | 39 static bool {{attribute.name}}AttributeGetter(LocalFrame* frame, {{cpp_class
}}* holderImpl, {{attribute.cpp_type}}* result); |
| 40 {% if not attribute.is_read_only %} | 40 {% if not attribute.is_read_only %} |
| 41 static bool {{attribute.name}}AttributeSetter(LocalFrame* frame, {{cpp_c
lass}}* holderImpl, {{attribute.argument_cpp_type}} cppValue); | 41 static bool {{attribute.name}}AttributeSetter(LocalFrame* frame, {{cpp_class
}}* holderImpl, {{attribute.argument_cpp_type}} cppValue); |
| 42 {% endif %} | |
| 43 {% endfor %} | |
| 44 }; | |
| 45 | |
| 46 {% endif %} | |
| 47 {% if is_array_buffer_or_view %} | |
| 48 {{exported}}static {{cpp_class}}* toImpl(v8::Local<v8::Object> object); | |
| 49 {% else %} | |
| 50 {{exported}}static bool hasInstance(v8::Local<v8::Value>, v8::Isolate*); | |
| 51 static v8::Local<v8::Object> findInstanceInPrototypeChain(v8::Local<v8::Valu
e>, v8::Isolate*); | |
| 52 {{exported}}static v8::Local<v8::FunctionTemplate> domTemplate(v8::Isolate*,
const DOMWrapperWorld&); | |
| 53 {% if has_named_properties_object %} | |
| 54 {{exported}}static v8::Local<v8::FunctionTemplate> domTemplateForNamedProper
tiesObject(v8::Isolate*, const DOMWrapperWorld&); | |
| 55 {% endif %} | |
| 56 static {{cpp_class}}* toImpl(v8::Local<v8::Object> object) | |
| 57 { | |
| 58 return toScriptWrappable(object)->toImpl<{{cpp_class}}>(); | |
| 59 } | |
| 60 {% endif %} | |
| 61 {{exported}}static {{cpp_class}}* toImplWithTypeCheck(v8::Isolate*, v8::Loca
l<v8::Value>); | |
| 62 {% if has_partial_interface %} | |
| 63 {{exported}}static WrapperTypeInfo wrapperTypeInfo; | |
| 64 {% else %} | |
| 65 {{exported}}static const WrapperTypeInfo wrapperTypeInfo; | |
| 66 {% endif %} | |
| 67 template<typename VisitorDispatcher> | |
| 68 static void trace(VisitorDispatcher visitor, ScriptWrappable* scriptWrappabl
e) | |
| 69 { | |
| 70 visitor->trace(scriptWrappable->toImpl<{{cpp_class}}>()); | |
| 71 } | |
| 72 static void traceWrappers(WrapperVisitor* visitor, ScriptWrappable* scriptWr
appable) | |
| 73 { | |
| 74 visitor->traceWrappers(scriptWrappable->toImpl<{{cpp_class}}>()); | |
| 75 } | |
| 76 {% if has_visit_dom_wrapper %} | |
| 77 static void visitDOMWrapper(v8::Isolate*, ScriptWrappable*, const v8::Persis
tent<v8::Object>&); | |
| 78 {% endif %} | |
| 79 {% if has_visit_dom_wrapper_custom %} | |
| 80 static void visitDOMWrapperCustom(v8::Isolate*, ScriptWrappable*, const v8::
Persistent<v8::Object>&); | |
| 81 {% endif %} | |
| 82 {% for method in methods %} | |
| 83 {% if method.is_custom %} | |
| 84 static void {{method.name}}MethodCustom(const v8::FunctionCallbackInfo<v8::V
alue>&); | |
| 85 {% endif %} | |
| 86 {% if method.is_custom_call_prologue %} | |
| 87 static void {{method.name}}MethodPrologueCustom(const v8::FunctionCallbackIn
fo<v8::Value>&, {{cpp_class}}*); | |
| 88 {% endif %} | |
| 89 {% if method.is_custom_call_epilogue %} | |
| 90 static void {{method.name}}MethodEpilogueCustom(const v8::FunctionCallbackIn
fo<v8::Value>&, {{cpp_class}}*); | |
| 91 {% endif %} | 42 {% endif %} |
| 92 {% endfor %} | 43 {% endfor %} |
| 93 {% if constructors or has_custom_constructor or has_event_constructor or has
_html_constructor %} | 44 }; |
| 94 static void constructorCallback(const v8::FunctionCallbackInfo<v8::Value>&); | |
| 95 {% endif %} | |
| 96 {% if has_custom_constructor %} | |
| 97 static void constructorCustom(const v8::FunctionCallbackInfo<v8::Value>&); | |
| 98 {% endif %} | |
| 99 {% for attribute in attributes %} | |
| 100 {% if attribute.has_custom_getter %}{# FIXME: and not attribute.implemented_
by #} | |
| 101 {% if attribute.is_data_type_property %} | |
| 102 static void {{attribute.name}}AttributeGetterCustom(const v8::PropertyCallba
ckInfo<v8::Value>&); | |
| 103 {% else %} | |
| 104 static void {{attribute.name}}AttributeGetterCustom(const v8::FunctionCallba
ckInfo<v8::Value>&); | |
| 105 {% endif %} | |
| 106 {% endif %} | |
| 107 {% if attribute.has_custom_setter %}{# FIXME: and not attribute.implemented_
by #} | |
| 108 {% if attribute.is_data_type_property %} | |
| 109 static void {{attribute.name}}AttributeSetterCustom(v8::Local<v8::Value>, co
nst v8::PropertyCallbackInfo<void>&); | |
| 110 {% else %} | |
| 111 static void {{attribute.name}}AttributeSetterCustom(v8::Local<v8::Value>, co
nst v8::FunctionCallbackInfo<v8::Value>&); | |
| 112 {% endif %} | |
| 113 {% endif %} | |
| 114 {% endfor %} | |
| 115 {# Custom special operations #} | |
| 116 {% if indexed_property_getter and indexed_property_getter.is_custom %} | |
| 117 static void indexedPropertyGetterCustom(uint32_t, const v8::PropertyCallback
Info<v8::Value>&); | |
| 118 {% endif %} | |
| 119 {% if indexed_property_setter and indexed_property_setter.is_custom %} | |
| 120 static void indexedPropertySetterCustom(uint32_t, v8::Local<v8::Value>, cons
t v8::PropertyCallbackInfo<v8::Value>&); | |
| 121 {% endif %} | |
| 122 {% if indexed_property_deleter and indexed_property_deleter.is_custom %} | |
| 123 static void indexedPropertyDeleterCustom(uint32_t, const v8::PropertyCallbac
kInfo<v8::Boolean>&); | |
| 124 {% endif %} | |
| 125 {% if named_property_getter and named_property_getter.is_custom %} | |
| 126 static void namedPropertyGetterCustom(const AtomicString&, const v8::Propert
yCallbackInfo<v8::Value>&); | |
| 127 {% endif %} | |
| 128 {% if named_property_setter and named_property_setter.is_custom %} | |
| 129 static void namedPropertySetterCustom(const AtomicString&, v8::Local<v8::Val
ue>, const v8::PropertyCallbackInfo<v8::Value>&); | |
| 130 {% endif %} | |
| 131 {% if named_property_getter and | |
| 132 named_property_getter.is_custom_property_query %} | |
| 133 static void namedPropertyQueryCustom(const AtomicString&, const v8::Property
CallbackInfo<v8::Integer>&); | |
| 134 {% endif %} | |
| 135 {% if named_property_deleter and named_property_deleter.is_custom %} | |
| 136 static void namedPropertyDeleterCustom(const AtomicString&, const v8::Proper
tyCallbackInfo<v8::Boolean>&); | |
| 137 {% endif %} | |
| 138 {% if named_property_getter and | |
| 139 named_property_getter.is_custom_property_enumerator %} | |
| 140 static void namedPropertyEnumeratorCustom(const v8::PropertyCallbackInfo<v8:
:Array>&); | |
| 141 {% endif %} | |
| 142 {# END custom special operations #} | |
| 143 {% if has_custom_legacy_call_as_function %} | |
| 144 static void legacyCallCustom(const v8::FunctionCallbackInfo<v8::Value>&); | |
| 145 {% endif %} | |
| 146 {# Custom internal fields #} | |
| 147 {% set custom_internal_field_counter = 0 %} | |
| 148 {% if is_event_target and not is_node %} | |
| 149 {# Event listeners on DOM nodes are explicitly supported in the GC controlle
r. #} | |
| 150 static const int eventListenerCacheIndex = v8DefaultWrapperInternalFieldCoun
t + {{custom_internal_field_counter}}; | |
| 151 {% set custom_internal_field_counter = custom_internal_field_counter + 1 %} | |
| 152 {% endif %} | |
| 153 {# persistentHandleIndex must be the last field, if it is present. | |
| 154 Detailed explanation: https://codereview.chromium.org/139173012 | |
| 155 FIXME: Remove this internal field, and share one field for either: | |
| 156 * a persistent handle (if the object is in oilpan) or | |
| 157 * a C++ pointer to the DOM object (if the object is not in oilpan) #} | |
| 158 static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + {
{custom_internal_field_counter}}; | |
| 159 {# End custom internal fields #} | |
| 160 {% if unscopables or has_conditional_attributes_on_prototype or | |
| 161 methods | conditionally_exposed(is_partial) %} | |
| 162 {{exported}}static void preparePrototypeAndInterfaceObject(v8::Local<v8::Con
text>, const DOMWrapperWorld&, v8::Local<v8::Object> prototypeObject, v8::Local<
v8::Function> interfaceObject, v8::Local<v8::FunctionTemplate> interfaceTemplate
); | |
| 163 {% endif %} | |
| 164 {% if has_partial_interface %} | |
| 165 {{exported}}static void updateWrapperTypeInfo(InstallTemplateFunction, Prepa
rePrototypeAndInterfaceObjectFunction); | |
| 166 {{exported}}static void install{{v8_class}}Template(v8::Isolate*, const DOMW
rapperWorld&, v8::Local<v8::FunctionTemplate> interfaceTemplate); | |
| 167 {% for method in methods if method.overloads and method.overloads.has_partia
l_overloads %} | |
| 168 {{exported}}static void register{{method.name | blink_capitalize}}MethodForP
artialInterface(void (*)(const v8::FunctionCallbackInfo<v8::Value>&)); | |
| 169 {% endfor %} | |
| 170 {% endif %} | |
| 171 {% for origin_trial_feature in origin_trial_features %}{{newline}} | |
| 172 static void install{{origin_trial_feature.name}}(v8::Isolate*, const DOMWrap
perWorld&, v8::Local<v8::Object> instance, v8::Local<v8::Object> prototype, v8::
Local<v8::Function> interface); | |
| 173 static void install{{origin_trial_feature.name}}(ScriptState*, v8::Local<v8:
:Object> instance); | |
| 174 {% if not origin_trial_feature.needs_instance %} | |
| 175 static void install{{origin_trial_feature.name}}(ScriptState*); | |
| 176 {% endif %} | |
| 177 {% endfor %} | |
| 178 {% if has_partial_interface %} | |
| 179 | 45 |
| 180 private: | 46 {% endif %} |
| 181 static InstallTemplateFunction install{{v8_class}}TemplateFunction; | 47 {% if is_array_buffer_or_view %} |
| 182 {% endif %} | 48 {{exported}}static {{cpp_class}}* toImpl(v8::Local<v8::Object> object); |
| 49 {% else %} |
| 50 {{exported}}static bool hasInstance(v8::Local<v8::Value>, v8::Isolate*); |
| 51 static v8::Local<v8::Object> findInstanceInPrototypeChain(v8::Local<v8::Value>
, v8::Isolate*); |
| 52 {{exported}}static v8::Local<v8::FunctionTemplate> domTemplate(v8::Isolate*, c
onst DOMWrapperWorld&); |
| 53 {% if has_named_properties_object %} |
| 54 {{exported}}static v8::Local<v8::FunctionTemplate> domTemplateForNamedProperti
esObject(v8::Isolate*, const DOMWrapperWorld&); |
| 55 {% endif %} |
| 56 static {{cpp_class}}* toImpl(v8::Local<v8::Object> object) { |
| 57 return toScriptWrappable(object)->toImpl<{{cpp_class}}>(); |
| 58 } |
| 59 {% endif %} |
| 60 {{exported}}static {{cpp_class}}* toImplWithTypeCheck(v8::Isolate*, v8::Local<
v8::Value>); |
| 61 {% if has_partial_interface %} |
| 62 {{exported}}static WrapperTypeInfo wrapperTypeInfo; |
| 63 {% else %} |
| 64 {{exported}}static const WrapperTypeInfo wrapperTypeInfo; |
| 65 {% endif %} |
| 66 template<typename VisitorDispatcher> |
| 67 static void trace(VisitorDispatcher visitor, ScriptWrappable* scriptWrappable)
{ |
| 68 visitor->trace(scriptWrappable->toImpl<{{cpp_class}}>()); |
| 69 } |
| 70 static void traceWrappers(WrapperVisitor* visitor, ScriptWrappable* scriptWrap
pable) { |
| 71 visitor->traceWrappers(scriptWrappable->toImpl<{{cpp_class}}>()); |
| 72 } |
| 73 {% if has_visit_dom_wrapper %} |
| 74 static void visitDOMWrapper(v8::Isolate*, ScriptWrappable*, const v8::Persiste
nt<v8::Object>&); |
| 75 {% endif %} |
| 76 {% if has_visit_dom_wrapper_custom %} |
| 77 static void visitDOMWrapperCustom(v8::Isolate*, ScriptWrappable*, const v8::Pe
rsistent<v8::Object>&); |
| 78 {% endif %} |
| 79 {% for method in methods %} |
| 80 {% if method.is_custom %} |
| 81 static void {{method.name}}MethodCustom(const v8::FunctionCallbackInfo<v8::Val
ue>&); |
| 82 {% endif %} |
| 83 {% if method.is_custom_call_prologue %} |
| 84 static void {{method.name}}MethodPrologueCustom(const v8::FunctionCallbackInfo
<v8::Value>&, {{cpp_class}}*); |
| 85 {% endif %} |
| 86 {% if method.is_custom_call_epilogue %} |
| 87 static void {{method.name}}MethodEpilogueCustom(const v8::FunctionCallbackInfo
<v8::Value>&, {{cpp_class}}*); |
| 88 {% endif %} |
| 89 {% endfor %} |
| 90 {% if constructors or has_custom_constructor or has_event_constructor or has_h
tml_constructor %} |
| 91 static void constructorCallback(const v8::FunctionCallbackInfo<v8::Value>&); |
| 92 {% endif %} |
| 93 {% if has_custom_constructor %} |
| 94 static void constructorCustom(const v8::FunctionCallbackInfo<v8::Value>&); |
| 95 {% endif %} |
| 96 {% for attribute in attributes %} |
| 97 {% if attribute.has_custom_getter %}{# FIXME: and not attribute.implemented_by
#} |
| 98 {% if attribute.is_data_type_property %} |
| 99 static void {{attribute.name}}AttributeGetterCustom(const v8::PropertyCallback
Info<v8::Value>&); |
| 100 {% else %} |
| 101 static void {{attribute.name}}AttributeGetterCustom(const v8::FunctionCallback
Info<v8::Value>&); |
| 102 {% endif %} |
| 103 {% endif %} |
| 104 {% if attribute.has_custom_setter %}{# FIXME: and not attribute.implemented_by
#} |
| 105 {% if attribute.is_data_type_property %} |
| 106 static void {{attribute.name}}AttributeSetterCustom(v8::Local<v8::Value>, cons
t v8::PropertyCallbackInfo<void>&); |
| 107 {% else %} |
| 108 static void {{attribute.name}}AttributeSetterCustom(v8::Local<v8::Value>, cons
t v8::FunctionCallbackInfo<v8::Value>&); |
| 109 {% endif %} |
| 110 {% endif %} |
| 111 {% endfor %} |
| 112 {# Custom special operations #} |
| 113 {% if indexed_property_getter and indexed_property_getter.is_custom %} |
| 114 static void indexedPropertyGetterCustom(uint32_t, const v8::PropertyCallbackIn
fo<v8::Value>&); |
| 115 {% endif %} |
| 116 {% if indexed_property_setter and indexed_property_setter.is_custom %} |
| 117 static void indexedPropertySetterCustom(uint32_t, v8::Local<v8::Value>, const
v8::PropertyCallbackInfo<v8::Value>&); |
| 118 {% endif %} |
| 119 {% if indexed_property_deleter and indexed_property_deleter.is_custom %} |
| 120 static void indexedPropertyDeleterCustom(uint32_t, const v8::PropertyCallbackI
nfo<v8::Boolean>&); |
| 121 {% endif %} |
| 122 {% if named_property_getter and named_property_getter.is_custom %} |
| 123 static void namedPropertyGetterCustom(const AtomicString&, const v8::PropertyC
allbackInfo<v8::Value>&); |
| 124 {% endif %} |
| 125 {% if named_property_setter and named_property_setter.is_custom %} |
| 126 static void namedPropertySetterCustom(const AtomicString&, v8::Local<v8::Value
>, const v8::PropertyCallbackInfo<v8::Value>&); |
| 127 {% endif %} |
| 128 {% if named_property_getter and named_property_getter.is_custom_property_query
%} |
| 129 static void namedPropertyQueryCustom(const AtomicString&, const v8::PropertyCa
llbackInfo<v8::Integer>&); |
| 130 {% endif %} |
| 131 {% if named_property_deleter and named_property_deleter.is_custom %} |
| 132 static void namedPropertyDeleterCustom(const AtomicString&, const v8::Property
CallbackInfo<v8::Boolean>&); |
| 133 {% endif %} |
| 134 {% if named_property_getter and named_property_getter.is_custom_property_enume
rator %} |
| 135 static void namedPropertyEnumeratorCustom(const v8::PropertyCallbackInfo<v8::A
rray>&); |
| 136 {% endif %} |
| 137 {# END custom special operations #} |
| 138 {% if has_custom_legacy_call_as_function %} |
| 139 static void legacyCallCustom(const v8::FunctionCallbackInfo<v8::Value>&); |
| 140 {% endif %} |
| 141 {# Custom internal fields #} |
| 142 {% set custom_internal_field_counter = 0 %} |
| 143 {% if is_event_target and not is_node %} |
| 144 {# Event listeners on DOM nodes are explicitly supported in the GC controller.
#} |
| 145 static const int eventListenerCacheIndex = v8DefaultWrapperInternalFieldCount
+ {{custom_internal_field_counter}}; |
| 146 {% set custom_internal_field_counter = custom_internal_field_counter + 1 %} |
| 147 {% endif %} |
| 148 {# persistentHandleIndex must be the last field, if it is present. |
| 149 Detailed explanation: https://codereview.chromium.org/139173012 |
| 150 FIXME: Remove this internal field, and share one field for either: |
| 151 * a persistent handle (if the object is in oilpan) or |
| 152 * a C++ pointer to the DOM object (if the object is not in oilpan) #} |
| 153 static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + {{c
ustom_internal_field_counter}}; |
| 154 {# End custom internal fields #} |
| 155 {% if unscopables or has_conditional_attributes_on_prototype or |
| 156 methods | conditionally_exposed(is_partial) %} |
| 157 {{exported}}static void preparePrototypeAndInterfaceObject(v8::Local<v8::Conte
xt>, const DOMWrapperWorld&, v8::Local<v8::Object> prototypeObject, v8::Local<v8
::Function> interfaceObject, v8::Local<v8::FunctionTemplate> interfaceTemplate); |
| 158 {% endif %} |
| 159 {% if has_partial_interface %} |
| 160 {{exported}}static void updateWrapperTypeInfo(InstallTemplateFunction, Prepare
PrototypeAndInterfaceObjectFunction); |
| 161 {{exported}}static void install{{v8_class}}Template(v8::Isolate*, const DOMWra
pperWorld&, v8::Local<v8::FunctionTemplate> interfaceTemplate); |
| 162 {% for method in methods if method.overloads and method.overloads.has_partial_
overloads %} |
| 163 {{exported}}static void register{{method.name | blink_capitalize}}MethodForPar
tialInterface(void (*)(const v8::FunctionCallbackInfo<v8::Value>&)); |
| 164 {% endfor %} |
| 165 {% endif %} |
| 166 {% for origin_trial_feature in origin_trial_features %}{{newline}} |
| 167 static void install{{origin_trial_feature.name}}(v8::Isolate*, const DOMWrappe
rWorld&, v8::Local<v8::Object> instance, v8::Local<v8::Object> prototype, v8::Lo
cal<v8::Function> interface); |
| 168 static void install{{origin_trial_feature.name}}(ScriptState*, v8::Local<v8::O
bject> instance); |
| 169 {% if not origin_trial_feature.needs_instance %} |
| 170 static void install{{origin_trial_feature.name}}(ScriptState*); |
| 171 {% endif %} |
| 172 {% endfor %} |
| 173 {% if has_partial_interface %} |
| 174 |
| 175 private: |
| 176 static InstallTemplateFunction install{{v8_class}}TemplateFunction; |
| 177 {% endif %} |
| 183 }; | 178 }; |
| 184 | 179 |
| 185 {% if has_event_constructor %} | 180 {% if has_event_constructor %} |
| 186 {{exported}}bool initialize{{cpp_class}}({{cpp_class}}Init&, const Dictionary&,
ExceptionState&, const v8::FunctionCallbackInfo<v8::Value>& info); | 181 {{exported}}bool initialize{{cpp_class}}({{cpp_class}}Init&, const Dictionary&,
ExceptionState&, const v8::FunctionCallbackInfo<v8::Value>& info); |
| 187 | 182 |
| 188 {% endif %} | 183 {% endif %} |
| 189 template <> | 184 template <> |
| 190 struct V8TypeOf<{{cpp_class}}> { | 185 struct V8TypeOf<{{cpp_class}}> { |
| 191 typedef {{v8_class}} Type; | 186 typedef {{v8_class}} Type; |
| 192 }; | 187 }; |
| 193 | 188 |
| 194 } // namespace blink | 189 } // namespace blink |
| 195 | 190 |
| 196 #endif // {{v8_class}}_h | 191 #endif // {{v8_class}}_h |
| 197 | 192 |
| 198 {% endfilter %}{# format_blink_cpp_source_code #} | 193 {% endfilter %}{# format_blink_cpp_source_code #} |
| OLD | NEW |