| OLD | NEW |
| 1 {##############################################################################} | 1 {##############################################################################} |
| 2 {% macro generate_method(method, world_suffix) %} | 2 {% macro generate_method(method, world_suffix) %} |
| 3 {% filter conditional(method.conditional_string) %} | 3 {% filter conditional(method.conditional_string) %} |
| 4 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
v8::FunctionCallbackInfo<v8::Value>& info) | 4 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
v8::FunctionCallbackInfo<v8::Value>& info) |
| 5 { | 5 { |
| 6 {# Local variables #} | 6 {# Local variables #} |
| 7 {% if method.has_exception_state %} | 7 {% if method.has_exception_state %} |
| 8 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{method.na
me}}", "{{interface_name}}", info.Holder(), info.GetIsolate()); | 8 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{method.na
me}}", "{{interface_name}}", info.Holder(), info.GetIsolate()); |
| 9 {% endif %} | 9 {% endif %} |
| 10 {% if method.number_of_required_arguments %} | 10 {% if method.number_of_required_arguments %} |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 {% endmacro %} | 314 {% endmacro %} |
| 315 | 315 |
| 316 | 316 |
| 317 {##############################################################################} | 317 {##############################################################################} |
| 318 {% macro origin_safe_method_getter(method, world_suffix) %} | 318 {% macro origin_safe_method_getter(method, world_suffix) %} |
| 319 static void {{method.name}}OriginSafeMethodGetter{{world_suffix}}(const v8::Prop
ertyCallbackInfo<v8::Value>& info) | 319 static void {{method.name}}OriginSafeMethodGetter{{world_suffix}}(const v8::Prop
ertyCallbackInfo<v8::Value>& info) |
| 320 { | 320 { |
| 321 {% set signature = 'v8::Local<v8::Signature>()' | 321 {% set signature = 'v8::Local<v8::Signature>()' |
| 322 if method.is_do_not_check_signature else | 322 if method.is_do_not_check_signature else |
| 323 'v8::Signature::New(info.GetIsolate(), %s::domTemplate(in
fo.GetIsolate()))' % v8_class %} | 323 'v8::Signature::New(info.GetIsolate(), %s::domTemplate(in
fo.GetIsolate()))' % v8_class %} |
| 324 {# FIXME: don't call GetIsolate() so often #} | 324 v8::Isolate* isolate = info.GetIsolate(); |
| 325 static int domTemplateKey; // This address is used for a key to look up the
dom template. | 325 static int domTemplateKey; // This address is used for a key to look up the
dom template. |
| 326 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); | 326 V8PerIsolateData* data = V8PerIsolateData::from(isolate); |
| 327 {# FIXME: 1 case of [DoNotCheckSignature] in Window.idl may differ #} | 327 {# FIXME: 1 case of [DoNotCheckSignature] in Window.idl may differ #} |
| 328 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, {{cpp_class}}V8Internal::{{method.name}}MethodCallback{{world_suffix}}
, v8Undefined(), {{signature}}, {{method.number_of_required_or_variadic_argument
s}}); | 328 v8::Handle<v8::FunctionTemplate> privateTemplate = data->domTemplate(&domTem
plateKey, {{cpp_class}}V8Internal::{{method.name}}MethodCallback{{world_suffix}}
, v8Undefined(), {{signature}}, {{method.number_of_required_or_variadic_argument
s}}); |
| 329 | 329 |
| 330 v8::Handle<v8::Object> holder = {{v8_class}}::findInstanceInPrototypeChain(i
nfo.This(), info.GetIsolate()); | 330 v8::Handle<v8::Object> holder = {{v8_class}}::findInstanceInPrototypeChain(i
nfo.This(), isolate); |
| 331 if (holder.IsEmpty()) { | 331 if (holder.IsEmpty()) { |
| 332 // This is only reachable via |object.__proto__.func|, in which case it | 332 // This is only reachable via |object.__proto__.func|, in which case it |
| 333 // has already passed the same origin security check | 333 // has already passed the same origin security check |
| 334 v8SetReturnValue(info, privateTemplate->GetFunction()); | 334 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 335 return; | 335 return; |
| 336 } | 336 } |
| 337 {{cpp_class}}* impl = {{v8_class}}::toNative(holder); | 337 {{cpp_class}}* impl = {{v8_class}}::toNative(holder); |
| 338 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), impl->fram
e(), DoNotReportSecurityError)) { | 338 if (!BindingSecurity::shouldAllowAccessToFrame(isolate, impl->frame(), DoNot
ReportSecurityError)) { |
| 339 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. | 339 static int sharedTemplateKey; // This address is used for a key to look
up the dom template. |
| 340 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, {{cpp_class}}V8Internal::{{method.name}}MethodCallback{{world_su
ffix}}, v8Undefined(), {{signature}}, {{method.number_of_required_or_variadic_ar
guments}}); | 340 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->domTemplate(&sha
redTemplateKey, {{cpp_class}}V8Internal::{{method.name}}MethodCallback{{world_su
ffix}}, v8Undefined(), {{signature}}, {{method.number_of_required_or_variadic_ar
guments}}); |
| 341 v8SetReturnValue(info, sharedTemplate->GetFunction()); | 341 v8SetReturnValue(info, sharedTemplate->GetFunction()); |
| 342 return; | 342 return; |
| 343 } | 343 } |
| 344 | 344 |
| 345 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(info.GetIsolate(), "{{method.name}}")); | 345 v8::Local<v8::Value> hiddenValue = info.This()->GetHiddenValue(v8AtomicStrin
g(isolate, "{{method.name}}")); |
| 346 if (!hiddenValue.IsEmpty()) { | 346 if (!hiddenValue.IsEmpty()) { |
| 347 v8SetReturnValue(info, hiddenValue); | 347 v8SetReturnValue(info, hiddenValue); |
| 348 return; | 348 return; |
| 349 } | 349 } |
| 350 | 350 |
| 351 v8SetReturnValue(info, privateTemplate->GetFunction()); | 351 v8SetReturnValue(info, privateTemplate->GetFunction()); |
| 352 } | 352 } |
| 353 | 353 |
| 354 static void {{method.name}}OriginSafeMethodGetterCallback{{world_suffix}}(v8::Lo
cal<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) | 354 static void {{method.name}}OriginSafeMethodGetterCallback{{world_suffix}}(v8::Lo
cal<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) |
| 355 { | 355 { |
| 356 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); | 356 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMGetter"); |
| 357 {{cpp_class}}V8Internal::{{method.name}}OriginSafeMethodGetter{{world_suffix
}}(info); | 357 {{cpp_class}}V8Internal::{{method.name}}OriginSafeMethodGetter{{world_suffix
}}(info); |
| 358 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 358 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 359 } | 359 } |
| 360 {% endmacro %} | 360 {% endmacro %} |
| 361 | 361 |
| 362 | 362 |
| 363 {##############################################################################} | 363 {##############################################################################} |
| 364 {% macro generate_constructor(constructor) %} | 364 {% macro generate_constructor(constructor) %} |
| 365 static void constructor{{constructor.overload_index}}(const v8::FunctionCallback
Info<v8::Value>& info) | 365 static void constructor{{constructor.overload_index}}(const v8::FunctionCallback
Info<v8::Value>& info) |
| 366 { | 366 { |
| 367 v8::Isolate* isolate = info.GetIsolate(); |
| 367 {% if constructor.has_exception_state %} | 368 {% if constructor.has_exception_state %} |
| 368 ExceptionState exceptionState(ExceptionState::ConstructionContext, "{{interf
ace_name}}", info.Holder(), info.GetIsolate()); | 369 ExceptionState exceptionState(ExceptionState::ConstructionContext, "{{interf
ace_name}}", info.Holder(), isolate); |
| 369 {% endif %} | 370 {% endif %} |
| 370 {% if interface_length and not constructor.overload_index %} | 371 {% if interface_length and not constructor.overload_index %} |
| 371 {# FIXME: remove UNLIKELY: constructors are expensive, so no difference. #} | 372 {# FIXME: remove UNLIKELY: constructors are expensive, so no difference. #} |
| 372 if (UNLIKELY(info.Length() < {{interface_length}})) { | 373 if (UNLIKELY(info.Length() < {{interface_length}})) { |
| 373 {{throw_type_error(constructor, | 374 {{throw_type_error(constructor, |
| 374 'ExceptionMessages::notEnoughArguments(%s, info.Length())' % | 375 'ExceptionMessages::notEnoughArguments(%s, info.Length())' % |
| 375 interface_length) | indent(8)}} | 376 interface_length) | indent(8)}} |
| 376 return; | 377 return; |
| 377 } | 378 } |
| 378 {% endif %} | 379 {% endif %} |
| 379 {% for argument in constructor.arguments %} | 380 {% for argument in constructor.arguments %} |
| 380 {{generate_argument(constructor, argument) | indent}} | 381 {{generate_argument(constructor, argument) | indent}} |
| 381 {% endfor %} | 382 {% endfor %} |
| 382 {% if is_constructor_call_with_execution_context %} | 383 {% if is_constructor_call_with_execution_context %} |
| 383 ExecutionContext* context = currentExecutionContext(info.GetIsolate()); | 384 ExecutionContext* context = currentExecutionContext(isolate); |
| 384 {% endif %} | 385 {% endif %} |
| 385 {% if is_constructor_call_with_document %} | 386 {% if is_constructor_call_with_document %} |
| 386 Document& document = *toDocument(currentExecutionContext(info.GetIsolate()))
; | 387 Document& document = *toDocument(currentExecutionContext(isolate)); |
| 387 {% endif %} | 388 {% endif %} |
| 388 {{ref_ptr}}<{{cpp_class}}> impl = {{cpp_class}}::create({{constructor.argume
nt_list | join(', ')}}); | 389 {{ref_ptr}}<{{cpp_class}}> impl = {{cpp_class}}::create({{constructor.argume
nt_list | join(', ')}}); |
| 389 {% if is_constructor_raises_exception %} | 390 {% if is_constructor_raises_exception %} |
| 390 if (exceptionState.throwIfNeeded()) | 391 if (exceptionState.throwIfNeeded()) |
| 391 return; | 392 return; |
| 392 {% endif %} | 393 {% endif %} |
| 393 | 394 |
| 394 {% if has_custom_wrap %} | 395 {% if has_custom_wrap %} |
| 395 v8::Handle<v8::Object> wrapper = wrap(impl.get(), info.Holder(), info.GetIso
late()); | 396 v8::Handle<v8::Object> wrapper = wrap(impl.get(), info.Holder(), isolate); |
| 396 {% else %} | 397 {% else %} |
| 397 v8::Handle<v8::Object> wrapper = info.Holder(); | 398 v8::Handle<v8::Object> wrapper = info.Holder(); |
| 398 V8DOMWrapper::associateObjectWithWrapper<{{v8_class}}>(impl.release(), &{{v8
_class}}::wrapperTypeInfo, wrapper, info.GetIsolate(), {{wrapper_configuration}}
); | 399 V8DOMWrapper::associateObjectWithWrapper<{{v8_class}}>(impl.release(), &{{v8
_class}}::wrapperTypeInfo, wrapper, isolate, {{wrapper_configuration}}); |
| 399 {% endif %} | 400 {% endif %} |
| 400 v8SetReturnValue(info, wrapper); | 401 v8SetReturnValue(info, wrapper); |
| 401 } | 402 } |
| 402 {% endmacro %} | 403 {% endmacro %} |
| 403 | 404 |
| 404 | 405 |
| 405 {##############################################################################} | 406 {##############################################################################} |
| 406 {% macro named_constructor_callback(constructor) %} | 407 {% macro named_constructor_callback(constructor) %} |
| 407 static void {{v8_class}}ConstructorCallback(const v8::FunctionCallbackInfo<v8::V
alue>& info) | 408 static void {{v8_class}}ConstructorCallback(const v8::FunctionCallbackInfo<v8::V
alue>& info) |
| 408 { | 409 { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 | 446 |
| 446 {% if has_custom_wrap %} | 447 {% if has_custom_wrap %} |
| 447 v8::Handle<v8::Object> wrapper = wrap(impl.get(), info.Holder(), info.GetIso
late()); | 448 v8::Handle<v8::Object> wrapper = wrap(impl.get(), info.Holder(), info.GetIso
late()); |
| 448 {% else %} | 449 {% else %} |
| 449 v8::Handle<v8::Object> wrapper = info.Holder(); | 450 v8::Handle<v8::Object> wrapper = info.Holder(); |
| 450 V8DOMWrapper::associateObjectWithWrapper<{{v8_class}}>(impl.release(), &{{v8
_class}}Constructor::wrapperTypeInfo, wrapper, info.GetIsolate(), {{wrapper_conf
iguration}}); | 451 V8DOMWrapper::associateObjectWithWrapper<{{v8_class}}>(impl.release(), &{{v8
_class}}Constructor::wrapperTypeInfo, wrapper, info.GetIsolate(), {{wrapper_conf
iguration}}); |
| 451 {% endif %} | 452 {% endif %} |
| 452 v8SetReturnValue(info, wrapper); | 453 v8SetReturnValue(info, wrapper); |
| 453 } | 454 } |
| 454 {% endmacro %} | 455 {% endmacro %} |
| OLD | NEW |