| OLD | NEW |
| 1 {% extends 'interface_base.cpp' %} | 1 {% extends 'interface_base.cpp' %} |
| 2 | 2 |
| 3 | 3 |
| 4 {##############################################################################} | 4 {##############################################################################} |
| 5 {% macro attribute_configuration(attribute) %} | 5 {% macro attribute_configuration(attribute) %} |
| 6 {% set getter_callback = | 6 {% set getter_callback = |
| 7 '%sV8Internal::%sAttributeGetterCallback' % | 7 '%sV8Internal::%sAttributeGetterCallback' % |
| 8 (cpp_class, attribute.name) | 8 (cpp_class, attribute.name) |
| 9 if not attribute.constructor_type else | 9 if not attribute.constructor_type else |
| 10 ('%sV8Internal::%sConstructorGetterCallback' % | 10 ('%sV8Internal::%sConstructorGetterCallback' % |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 {% endblock %} | 78 {% endblock %} |
| 79 | 79 |
| 80 | 80 |
| 81 {##############################################################################} | 81 {##############################################################################} |
| 82 {% block replaceable_attribute_setter_and_callback %} | 82 {% block replaceable_attribute_setter_and_callback %} |
| 83 {% if has_replaceable_attributes or has_constructor_attributes %} | 83 {% if has_replaceable_attributes or has_constructor_attributes %} |
| 84 {# FIXME: rename to ForceSetAttributeOnThis, since also used for Constructors #} | 84 {# FIXME: rename to ForceSetAttributeOnThis, since also used for Constructors #} |
| 85 static void {{cpp_class}}ReplaceableAttributeSetter(v8::Local<v8::String> name,
v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) | 85 static void {{cpp_class}}ReplaceableAttributeSetter(v8::Local<v8::String> name,
v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) |
| 86 { | 86 { |
| 87 {% if is_check_security %} | 87 {% if is_check_security %} |
| 88 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); | 88 {{cpp_class}}* impl = {{v8_class}}::toNative(info.Holder()); |
| 89 v8::String::Utf8Value attributeName(name); | 89 v8::String::Utf8Value attributeName(name); |
| 90 ExceptionState exceptionState(ExceptionState::SetterContext, *attributeName,
"{{interface_name}}", info.Holder(), info.GetIsolate()); | 90 ExceptionState exceptionState(ExceptionState::SetterContext, *attributeName,
"{{interface_name}}", info.Holder(), info.GetIsolate()); |
| 91 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), exceptionState)) { | 91 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), exceptionState)) { |
| 92 exceptionState.throwIfNeeded(); | 92 exceptionState.throwIfNeeded(); |
| 93 return; | 93 return; |
| 94 } | 94 } |
| 95 {% endif %} | 95 {% endif %} |
| 96 info.This()->ForceSet(name, jsValue); | 96 info.This()->ForceSet(name, jsValue); |
| 97 } | 97 } |
| 98 | 98 |
| 99 {# FIXME: rename to ForceSetAttributeOnThisCallback, since also used for Constru
ctors #} | 99 {# FIXME: rename to ForceSetAttributeOnThisCallback, since also used for Constru
ctors #} |
| 100 static void {{cpp_class}}ReplaceableAttributeSetterCallback(v8::Local<v8::String
> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info
) | 100 static void {{cpp_class}}ReplaceableAttributeSetterCallback(v8::Local<v8::String
> name, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info
) |
| 101 { | 101 { |
| 102 {{cpp_class}}V8Internal::{{cpp_class}}ReplaceableAttributeSetter(name, jsVal
ue, info); | 102 {{cpp_class}}V8Internal::{{cpp_class}}ReplaceableAttributeSetter(name, jsVal
ue, info); |
| 103 } | 103 } |
| 104 | 104 |
| 105 {% endif %} | 105 {% endif %} |
| 106 {% endblock %} | 106 {% endblock %} |
| 107 | 107 |
| 108 | 108 |
| 109 {##############################################################################} | 109 {##############################################################################} |
| 110 {% block security_check_functions %} | 110 {% block security_check_functions %} |
| 111 {% if is_check_security and interface_name != 'Window' %} | 111 {% if is_check_security and interface_name != 'Window' %} |
| 112 bool indexedSecurityCheck(v8::Local<v8::Object> host, uint32_t index, v8::Access
Type type, v8::Local<v8::Value>) | 112 bool indexedSecurityCheck(v8::Local<v8::Object> host, uint32_t index, v8::Access
Type type, v8::Local<v8::Value>) |
| 113 { | 113 { |
| 114 {{cpp_class}}* imp = {{v8_class}}::toNative(host); | 114 {{cpp_class}}* impl = {{v8_class}}::toNative(host); |
| 115 return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(),
imp->frame(), DoNotReportSecurityError); | 115 return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(),
impl->frame(), DoNotReportSecurityError); |
| 116 } | 116 } |
| 117 | 117 |
| 118 bool namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::Value> key, v8
::AccessType type, v8::Local<v8::Value>) | 118 bool namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::Value> key, v8
::AccessType type, v8::Local<v8::Value>) |
| 119 { | 119 { |
| 120 {{cpp_class}}* imp = {{v8_class}}::toNative(host); | 120 {{cpp_class}}* impl = {{v8_class}}::toNative(host); |
| 121 return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(),
imp->frame(), DoNotReportSecurityError); | 121 return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(),
impl->frame(), DoNotReportSecurityError); |
| 122 } | 122 } |
| 123 | 123 |
| 124 {% endif %} | 124 {% endif %} |
| 125 {% endblock %} | 125 {% endblock %} |
| 126 | 126 |
| 127 | 127 |
| 128 {##############################################################################} | 128 {##############################################################################} |
| 129 {% block indexed_property_getter %} | 129 {% block indexed_property_getter %} |
| 130 {% if indexed_property_getter and not indexed_property_getter.is_custom %} | 130 {% if indexed_property_getter and not indexed_property_getter.is_custom %} |
| 131 {% set getter = indexed_property_getter %} | 131 {% set getter = indexed_property_getter %} |
| 132 static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo
<v8::Value>& info) | 132 static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo
<v8::Value>& info) |
| 133 { | 133 { |
| 134 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); | 134 {{cpp_class}}* impl = {{v8_class}}::toNative(info.Holder()); |
| 135 {% if getter.is_raises_exception %} | 135 {% if getter.is_raises_exception %} |
| 136 ExceptionState exceptionState(ExceptionState::IndexedGetterContext, "{{inter
face_name}}", info.Holder(), info.GetIsolate()); | 136 ExceptionState exceptionState(ExceptionState::IndexedGetterContext, "{{inter
face_name}}", info.Holder(), info.GetIsolate()); |
| 137 {% endif %} | 137 {% endif %} |
| 138 {% set getter_name = getter.name or 'anonymousIndexedGetter' %} | 138 {% set getter_name = getter.name or 'anonymousIndexedGetter' %} |
| 139 {% set getter_arguments = ['index', 'exceptionState'] | 139 {% set getter_arguments = ['index', 'exceptionState'] |
| 140 if getter.is_raises_exception else ['index'] %} | 140 if getter.is_raises_exception else ['index'] %} |
| 141 {{getter.cpp_type}} result = imp->{{getter_name}}({{getter_arguments|join(',
')}}); | 141 {{getter.cpp_type}} result = impl->{{getter_name}}({{getter_arguments|join('
, ')}}); |
| 142 {% if getter.is_raises_exception %} | 142 {% if getter.is_raises_exception %} |
| 143 if (exceptionState.throwIfNeeded()) | 143 if (exceptionState.throwIfNeeded()) |
| 144 return; | 144 return; |
| 145 {% endif %} | 145 {% endif %} |
| 146 if ({{getter.is_null_expression}}) | 146 if ({{getter.is_null_expression}}) |
| 147 return; | 147 return; |
| 148 {{getter.v8_set_return_value}}; | 148 {{getter.v8_set_return_value}}; |
| 149 } | 149 } |
| 150 | 150 |
| 151 {% endif %} | 151 {% endif %} |
| (...skipping 18 matching lines...) Expand all Loading... |
| 170 {% endif %} | 170 {% endif %} |
| 171 {% endblock %} | 171 {% endblock %} |
| 172 | 172 |
| 173 | 173 |
| 174 {##############################################################################} | 174 {##############################################################################} |
| 175 {% block indexed_property_setter %} | 175 {% block indexed_property_setter %} |
| 176 {% if indexed_property_setter and not indexed_property_setter.is_custom %} | 176 {% if indexed_property_setter and not indexed_property_setter.is_custom %} |
| 177 {% set setter = indexed_property_setter %} | 177 {% set setter = indexed_property_setter %} |
| 178 static void indexedPropertySetter(uint32_t index, v8::Local<v8::Value> jsValue,
const v8::PropertyCallbackInfo<v8::Value>& info) | 178 static void indexedPropertySetter(uint32_t index, v8::Local<v8::Value> jsValue,
const v8::PropertyCallbackInfo<v8::Value>& info) |
| 179 { | 179 { |
| 180 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); | 180 {{cpp_class}}* impl = {{v8_class}}::toNative(info.Holder()); |
| 181 {{setter.v8_value_to_local_cpp_value}}; | 181 {{setter.v8_value_to_local_cpp_value}}; |
| 182 {% if setter.has_exception_state %} | 182 {% if setter.has_exception_state %} |
| 183 ExceptionState exceptionState(ExceptionState::IndexedSetterContext, "{{inter
face_name}}", info.Holder(), info.GetIsolate()); | 183 ExceptionState exceptionState(ExceptionState::IndexedSetterContext, "{{inter
face_name}}", info.Holder(), info.GetIsolate()); |
| 184 {% endif %} | 184 {% endif %} |
| 185 {% if setter.has_strict_type_checking %} | 185 {% if setter.has_strict_type_checking %} |
| 186 {# Type checking for interface types (if interface not implemented, throw | 186 {# Type checking for interface types (if interface not implemented, throw |
| 187 TypeError), per http://www.w3.org/TR/WebIDL/#es-interface #} | 187 TypeError), per http://www.w3.org/TR/WebIDL/#es-interface #} |
| 188 if (!isUndefinedOrNull(jsValue) && !V8{{setter.idl_type}}::hasInstance(jsVal
ue, info.GetIsolate())) { | 188 if (!isUndefinedOrNull(jsValue) && !V8{{setter.idl_type}}::hasInstance(jsVal
ue, info.GetIsolate())) { |
| 189 exceptionState.throwTypeError("The provided value is not of type '{{sett
er.idl_type}}'."); | 189 exceptionState.throwTypeError("The provided value is not of type '{{sett
er.idl_type}}'."); |
| 190 exceptionState.throwIfNeeded(); | 190 exceptionState.throwIfNeeded(); |
| 191 return; | 191 return; |
| 192 } | 192 } |
| 193 {% endif %} | 193 {% endif %} |
| 194 {% set setter_name = setter.name or 'anonymousIndexedSetter' %} | 194 {% set setter_name = setter.name or 'anonymousIndexedSetter' %} |
| 195 {% set setter_arguments = ['index', 'propertyValue', 'exceptionState'] | 195 {% set setter_arguments = ['index', 'propertyValue', 'exceptionState'] |
| 196 if setter.is_raises_exception else ['index', 'propertyValue'] %} | 196 if setter.is_raises_exception else ['index', 'propertyValue'] %} |
| 197 bool result = imp->{{setter_name}}({{setter_arguments|join(', ')}}); | 197 bool result = impl->{{setter_name}}({{setter_arguments|join(', ')}}); |
| 198 {% if setter.is_raises_exception %} | 198 {% if setter.is_raises_exception %} |
| 199 if (exceptionState.throwIfNeeded()) | 199 if (exceptionState.throwIfNeeded()) |
| 200 return; | 200 return; |
| 201 {% endif %} | 201 {% endif %} |
| 202 if (!result) | 202 if (!result) |
| 203 return; | 203 return; |
| 204 v8SetReturnValue(info, jsValue); | 204 v8SetReturnValue(info, jsValue); |
| 205 } | 205 } |
| 206 | 206 |
| 207 {% endif %} | 207 {% endif %} |
| (...skipping 18 matching lines...) Expand all Loading... |
| 226 {% endif %} | 226 {% endif %} |
| 227 {% endblock %} | 227 {% endblock %} |
| 228 | 228 |
| 229 | 229 |
| 230 {##############################################################################} | 230 {##############################################################################} |
| 231 {% block indexed_property_deleter %} | 231 {% block indexed_property_deleter %} |
| 232 {% if indexed_property_deleter and not indexed_property_deleter.is_custom %} | 232 {% if indexed_property_deleter and not indexed_property_deleter.is_custom %} |
| 233 {% set deleter = indexed_property_deleter %} | 233 {% set deleter = indexed_property_deleter %} |
| 234 static void indexedPropertyDeleter(uint32_t index, const v8::PropertyCallbackInf
o<v8::Boolean>& info) | 234 static void indexedPropertyDeleter(uint32_t index, const v8::PropertyCallbackInf
o<v8::Boolean>& info) |
| 235 { | 235 { |
| 236 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); | 236 {{cpp_class}}* impl = {{v8_class}}::toNative(info.Holder()); |
| 237 {% if deleter.is_raises_exception %} | 237 {% if deleter.is_raises_exception %} |
| 238 ExceptionState exceptionState(ExceptionState::IndexedDeletionContext, "{{int
erface_name}}", info.Holder(), info.GetIsolate()); | 238 ExceptionState exceptionState(ExceptionState::IndexedDeletionContext, "{{int
erface_name}}", info.Holder(), info.GetIsolate()); |
| 239 {% endif %} | 239 {% endif %} |
| 240 {% set deleter_name = deleter.name or 'anonymousIndexedDeleter' %} | 240 {% set deleter_name = deleter.name or 'anonymousIndexedDeleter' %} |
| 241 {% set deleter_arguments = ['index', 'exceptionState'] | 241 {% set deleter_arguments = ['index', 'exceptionState'] |
| 242 if deleter.is_raises_exception else ['index'] %} | 242 if deleter.is_raises_exception else ['index'] %} |
| 243 DeleteResult result = imp->{{deleter_name}}({{deleter_arguments|join(', ')}}
); | 243 DeleteResult result = impl->{{deleter_name}}({{deleter_arguments|join(', ')}
}); |
| 244 {% if deleter.is_raises_exception %} | 244 {% if deleter.is_raises_exception %} |
| 245 if (exceptionState.throwIfNeeded()) | 245 if (exceptionState.throwIfNeeded()) |
| 246 return; | 246 return; |
| 247 {% endif %} | 247 {% endif %} |
| 248 if (result != DeleteUnknownProperty) | 248 if (result != DeleteUnknownProperty) |
| 249 return v8SetReturnValueBool(info, result == DeleteSuccess); | 249 return v8SetReturnValueBool(info, result == DeleteSuccess); |
| 250 } | 250 } |
| 251 | 251 |
| 252 {% endif %} | 252 {% endif %} |
| 253 {% endblock %} | 253 {% endblock %} |
| (...skipping 25 matching lines...) Expand all Loading... |
| 279 {% set getter = named_property_getter %} | 279 {% set getter = named_property_getter %} |
| 280 static void namedPropertyGetter(v8::Local<v8::String> name, const v8::PropertyCa
llbackInfo<v8::Value>& info) | 280 static void namedPropertyGetter(v8::Local<v8::String> name, const v8::PropertyCa
llbackInfo<v8::Value>& info) |
| 281 { | 281 { |
| 282 {% if not is_override_builtins %} | 282 {% if not is_override_builtins %} |
| 283 if (info.Holder()->HasRealNamedProperty(name)) | 283 if (info.Holder()->HasRealNamedProperty(name)) |
| 284 return; | 284 return; |
| 285 if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty()) | 285 if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty()) |
| 286 return; | 286 return; |
| 287 | 287 |
| 288 {% endif %} | 288 {% endif %} |
| 289 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); | 289 {{cpp_class}}* impl = {{v8_class}}::toNative(info.Holder()); |
| 290 AtomicString propertyName = toCoreAtomicString(name); | 290 AtomicString propertyName = toCoreAtomicString(name); |
| 291 {% if getter.is_raises_exception %} | 291 {% if getter.is_raises_exception %} |
| 292 v8::String::Utf8Value namedProperty(name); | 292 v8::String::Utf8Value namedProperty(name); |
| 293 ExceptionState exceptionState(ExceptionState::GetterContext, *namedProperty,
"{{interface_name}}", info.Holder(), info.GetIsolate()); | 293 ExceptionState exceptionState(ExceptionState::GetterContext, *namedProperty,
"{{interface_name}}", info.Holder(), info.GetIsolate()); |
| 294 {% endif %} | 294 {% endif %} |
| 295 {% if getter.union_arguments %} | 295 {% if getter.union_arguments %} |
| 296 {{union_type_method_call(getter) | indent}} | 296 {{union_type_method_call(getter) | indent}} |
| 297 {% else %} | 297 {% else %} |
| 298 {{getter.cpp_type}} result = {{getter.cpp_value}}; | 298 {{getter.cpp_type}} result = {{getter.cpp_value}}; |
| 299 {% if getter.is_raises_exception %} | 299 {% if getter.is_raises_exception %} |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 {% set setter = named_property_setter %} | 335 {% set setter = named_property_setter %} |
| 336 static void namedPropertySetter(v8::Local<v8::String> name, v8::Local<v8::Value>
jsValue, const v8::PropertyCallbackInfo<v8::Value>& info) | 336 static void namedPropertySetter(v8::Local<v8::String> name, v8::Local<v8::Value>
jsValue, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 337 { | 337 { |
| 338 {% if not is_override_builtins %} | 338 {% if not is_override_builtins %} |
| 339 if (info.Holder()->HasRealNamedProperty(name)) | 339 if (info.Holder()->HasRealNamedProperty(name)) |
| 340 return; | 340 return; |
| 341 if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty()) | 341 if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(name).IsEmpty()) |
| 342 return; | 342 return; |
| 343 | 343 |
| 344 {% endif %} | 344 {% endif %} |
| 345 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); | 345 {{cpp_class}}* impl = {{v8_class}}::toNative(info.Holder()); |
| 346 {# v8_value_to_local_cpp_value('DOMString', 'name', 'propertyName') #} | 346 {# v8_value_to_local_cpp_value('DOMString', 'name', 'propertyName') #} |
| 347 V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, propertyName, name)
; | 347 V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, propertyName, name)
; |
| 348 {{setter.v8_value_to_local_cpp_value}}; | 348 {{setter.v8_value_to_local_cpp_value}}; |
| 349 {% if setter.has_exception_state %} | 349 {% if setter.has_exception_state %} |
| 350 v8::String::Utf8Value namedProperty(name); | 350 v8::String::Utf8Value namedProperty(name); |
| 351 ExceptionState exceptionState(ExceptionState::SetterContext, *namedProperty,
"{{interface_name}}", info.Holder(), info.GetIsolate()); | 351 ExceptionState exceptionState(ExceptionState::SetterContext, *namedProperty,
"{{interface_name}}", info.Holder(), info.GetIsolate()); |
| 352 {% endif %} | 352 {% endif %} |
| 353 {% set setter_name = setter.name or 'anonymousNamedSetter' %} | 353 {% set setter_name = setter.name or 'anonymousNamedSetter' %} |
| 354 {% set setter_arguments = | 354 {% set setter_arguments = |
| 355 ['propertyName', 'propertyValue', 'exceptionState'] | 355 ['propertyName', 'propertyValue', 'exceptionState'] |
| 356 if setter.is_raises_exception else | 356 if setter.is_raises_exception else |
| 357 ['propertyName', 'propertyValue'] %} | 357 ['propertyName', 'propertyValue'] %} |
| 358 bool result = imp->{{setter_name}}({{setter_arguments|join(', ')}}); | 358 bool result = impl->{{setter_name}}({{setter_arguments|join(', ')}}); |
| 359 {% if setter.is_raises_exception %} | 359 {% if setter.is_raises_exception %} |
| 360 if (exceptionState.throwIfNeeded()) | 360 if (exceptionState.throwIfNeeded()) |
| 361 return; | 361 return; |
| 362 {% endif %} | 362 {% endif %} |
| 363 if (!result) | 363 if (!result) |
| 364 return; | 364 return; |
| 365 v8SetReturnValue(info, jsValue); | 365 v8SetReturnValue(info, jsValue); |
| 366 } | 366 } |
| 367 | 367 |
| 368 {% endif %} | 368 {% endif %} |
| (...skipping 20 matching lines...) Expand all Loading... |
| 389 | 389 |
| 390 | 390 |
| 391 {##############################################################################} | 391 {##############################################################################} |
| 392 {% block named_property_query %} | 392 {% block named_property_query %} |
| 393 {% if named_property_getter and named_property_getter.is_enumerable and | 393 {% if named_property_getter and named_property_getter.is_enumerable and |
| 394 not named_property_getter.is_custom_property_query %} | 394 not named_property_getter.is_custom_property_query %} |
| 395 {# If there is an enumerator, there MUST be a query method to properly | 395 {# If there is an enumerator, there MUST be a query method to properly |
| 396 communicate property attributes. #} | 396 communicate property attributes. #} |
| 397 static void namedPropertyQuery(v8::Local<v8::String> name, const v8::PropertyCal
lbackInfo<v8::Integer>& info) | 397 static void namedPropertyQuery(v8::Local<v8::String> name, const v8::PropertyCal
lbackInfo<v8::Integer>& info) |
| 398 { | 398 { |
| 399 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); | 399 {{cpp_class}}* impl = {{v8_class}}::toNative(info.Holder()); |
| 400 AtomicString propertyName = toCoreAtomicString(name); | 400 AtomicString propertyName = toCoreAtomicString(name); |
| 401 v8::String::Utf8Value namedProperty(name); | 401 v8::String::Utf8Value namedProperty(name); |
| 402 ExceptionState exceptionState(ExceptionState::GetterContext, *namedProperty,
"{{interface_name}}", info.Holder(), info.GetIsolate()); | 402 ExceptionState exceptionState(ExceptionState::GetterContext, *namedProperty,
"{{interface_name}}", info.Holder(), info.GetIsolate()); |
| 403 bool result = imp->namedPropertyQuery(propertyName, exceptionState); | 403 bool result = impl->namedPropertyQuery(propertyName, exceptionState); |
| 404 if (exceptionState.throwIfNeeded()) | 404 if (exceptionState.throwIfNeeded()) |
| 405 return; | 405 return; |
| 406 if (!result) | 406 if (!result) |
| 407 return; | 407 return; |
| 408 v8SetReturnValueInt(info, v8::None); | 408 v8SetReturnValueInt(info, v8::None); |
| 409 } | 409 } |
| 410 | 410 |
| 411 {% endif %} | 411 {% endif %} |
| 412 {% endblock %} | 412 {% endblock %} |
| 413 | 413 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 430 {% endif %} | 430 {% endif %} |
| 431 {% endblock %} | 431 {% endblock %} |
| 432 | 432 |
| 433 | 433 |
| 434 {##############################################################################} | 434 {##############################################################################} |
| 435 {% block named_property_deleter %} | 435 {% block named_property_deleter %} |
| 436 {% if named_property_deleter and not named_property_deleter.is_custom %} | 436 {% if named_property_deleter and not named_property_deleter.is_custom %} |
| 437 {% set deleter = named_property_deleter %} | 437 {% set deleter = named_property_deleter %} |
| 438 static void namedPropertyDeleter(v8::Local<v8::String> name, const v8::PropertyC
allbackInfo<v8::Boolean>& info) | 438 static void namedPropertyDeleter(v8::Local<v8::String> name, const v8::PropertyC
allbackInfo<v8::Boolean>& info) |
| 439 { | 439 { |
| 440 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); | 440 {{cpp_class}}* impl = {{v8_class}}::toNative(info.Holder()); |
| 441 AtomicString propertyName = toCoreAtomicString(name); | 441 AtomicString propertyName = toCoreAtomicString(name); |
| 442 {% if deleter.is_raises_exception %} | 442 {% if deleter.is_raises_exception %} |
| 443 v8::String::Utf8Value namedProperty(name); | 443 v8::String::Utf8Value namedProperty(name); |
| 444 ExceptionState exceptionState(ExceptionState::DeletionContext, *namedPropert
y, "{{interface_name}}", info.Holder(), info.GetIsolate()); | 444 ExceptionState exceptionState(ExceptionState::DeletionContext, *namedPropert
y, "{{interface_name}}", info.Holder(), info.GetIsolate()); |
| 445 {% endif %} | 445 {% endif %} |
| 446 {% set deleter_name = deleter.name or 'anonymousNamedDeleter' %} | 446 {% set deleter_name = deleter.name or 'anonymousNamedDeleter' %} |
| 447 {% set deleter_arguments = ['propertyName', 'exceptionState'] | 447 {% set deleter_arguments = ['propertyName', 'exceptionState'] |
| 448 if deleter.is_raises_exception else ['propertyName'] %} | 448 if deleter.is_raises_exception else ['propertyName'] %} |
| 449 DeleteResult result = imp->{{deleter_name}}({{deleter_arguments|join(', ')}}
); | 449 DeleteResult result = impl->{{deleter_name}}({{deleter_arguments|join(', ')}
}); |
| 450 {% if deleter.is_raises_exception %} | 450 {% if deleter.is_raises_exception %} |
| 451 if (exceptionState.throwIfNeeded()) | 451 if (exceptionState.throwIfNeeded()) |
| 452 return; | 452 return; |
| 453 {% endif %} | 453 {% endif %} |
| 454 if (result != DeleteUnknownProperty) | 454 if (result != DeleteUnknownProperty) |
| 455 return v8SetReturnValueBool(info, result == DeleteSuccess); | 455 return v8SetReturnValueBool(info, result == DeleteSuccess); |
| 456 } | 456 } |
| 457 | 457 |
| 458 {% endif %} | 458 {% endif %} |
| 459 {% endblock %} | 459 {% endblock %} |
| (...skipping 17 matching lines...) Expand all Loading... |
| 477 {% endif %} | 477 {% endif %} |
| 478 {% endblock %} | 478 {% endblock %} |
| 479 | 479 |
| 480 | 480 |
| 481 {##############################################################################} | 481 {##############################################################################} |
| 482 {% block named_property_enumerator %} | 482 {% block named_property_enumerator %} |
| 483 {% if named_property_getter and named_property_getter.is_enumerable and | 483 {% if named_property_getter and named_property_getter.is_enumerable and |
| 484 not named_property_getter.is_custom_property_enumerator %} | 484 not named_property_getter.is_custom_property_enumerator %} |
| 485 static void namedPropertyEnumerator(const v8::PropertyCallbackInfo<v8::Array>& i
nfo) | 485 static void namedPropertyEnumerator(const v8::PropertyCallbackInfo<v8::Array>& i
nfo) |
| 486 { | 486 { |
| 487 {{cpp_class}}* imp = {{v8_class}}::toNative(info.Holder()); | 487 {{cpp_class}}* impl = {{v8_class}}::toNative(info.Holder()); |
| 488 Vector<String> names; | 488 Vector<String> names; |
| 489 ExceptionState exceptionState(ExceptionState::EnumerationContext, "{{interfa
ce_name}}", info.Holder(), info.GetIsolate()); | 489 ExceptionState exceptionState(ExceptionState::EnumerationContext, "{{interfa
ce_name}}", info.Holder(), info.GetIsolate()); |
| 490 imp->namedPropertyEnumerator(names, exceptionState); | 490 impl->namedPropertyEnumerator(names, exceptionState); |
| 491 if (exceptionState.throwIfNeeded()) | 491 if (exceptionState.throwIfNeeded()) |
| 492 return; | 492 return; |
| 493 v8::Handle<v8::Array> v8names = v8::Array::New(info.GetIsolate(), names.size
()); | 493 v8::Handle<v8::Array> v8names = v8::Array::New(info.GetIsolate(), names.size
()); |
| 494 for (size_t i = 0; i < names.size(); ++i) | 494 for (size_t i = 0; i < names.size(); ++i) |
| 495 v8names->Set(v8::Integer::New(info.GetIsolate(), i), v8String(info.GetIs
olate(), names[i])); | 495 v8names->Set(v8::Integer::New(info.GetIsolate(), i), v8String(info.GetIs
olate(), names[i])); |
| 496 v8SetReturnValue(info, v8names); | 496 v8SetReturnValue(info, v8names); |
| 497 } | 497 } |
| 498 | 498 |
| 499 {% endif %} | 499 {% endif %} |
| 500 {% endblock %} | 500 {% endblock %} |
| (...skipping 20 matching lines...) Expand all Loading... |
| 521 | 521 |
| 522 {##############################################################################} | 522 {##############################################################################} |
| 523 {% block origin_safe_method_setter %} | 523 {% block origin_safe_method_setter %} |
| 524 {% if has_origin_safe_method_setter %} | 524 {% if has_origin_safe_method_setter %} |
| 525 static void {{cpp_class}}OriginSafeMethodSetter(v8::Local<v8::String> name, v8::
Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) | 525 static void {{cpp_class}}OriginSafeMethodSetter(v8::Local<v8::String> name, v8::
Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) |
| 526 { | 526 { |
| 527 {# FIXME: don't call GetIsolate 3 times #} | 527 {# FIXME: don't call GetIsolate 3 times #} |
| 528 v8::Handle<v8::Object> holder = {{v8_class}}::findInstanceInPrototypeChain(i
nfo.This(), info.GetIsolate()); | 528 v8::Handle<v8::Object> holder = {{v8_class}}::findInstanceInPrototypeChain(i
nfo.This(), info.GetIsolate()); |
| 529 if (holder.IsEmpty()) | 529 if (holder.IsEmpty()) |
| 530 return; | 530 return; |
| 531 {{cpp_class}}* imp = {{v8_class}}::toNative(holder); | 531 {{cpp_class}}* impl = {{v8_class}}::toNative(holder); |
| 532 v8::String::Utf8Value attributeName(name); | 532 v8::String::Utf8Value attributeName(name); |
| 533 ExceptionState exceptionState(ExceptionState::SetterContext, *attributeName,
"{{interface_name}}", info.Holder(), info.GetIsolate()); | 533 ExceptionState exceptionState(ExceptionState::SetterContext, *attributeName,
"{{interface_name}}", info.Holder(), info.GetIsolate()); |
| 534 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame
(), exceptionState)) { | 534 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), exceptionState)) { |
| 535 exceptionState.throwIfNeeded(); | 535 exceptionState.throwIfNeeded(); |
| 536 return; | 536 return; |
| 537 } | 537 } |
| 538 | 538 |
| 539 V8HiddenValue::setHiddenValue(info.GetIsolate(), info.This(), name, jsValue)
; | 539 V8HiddenValue::setHiddenValue(info.GetIsolate(), info.This(), name, jsValue)
; |
| 540 } | 540 } |
| 541 | 541 |
| 542 static void {{cpp_class}}OriginSafeMethodSetterCallback(v8::Local<v8::String> na
me, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) | 542 static void {{cpp_class}}OriginSafeMethodSetterCallback(v8::Local<v8::String> na
me, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) |
| 543 { | 543 { |
| 544 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); | 544 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); |
| (...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1317 {% endfilter %} | 1317 {% endfilter %} |
| 1318 } | 1318 } |
| 1319 | 1319 |
| 1320 template<> | 1320 template<> |
| 1321 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) | 1321 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) |
| 1322 { | 1322 { |
| 1323 return toV8(impl, creationContext, isolate); | 1323 return toV8(impl, creationContext, isolate); |
| 1324 } | 1324 } |
| 1325 | 1325 |
| 1326 {% endblock %} | 1326 {% endblock %} |
| OLD | NEW |