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

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

Issue 140663012: IDL compiler: Window-specific code + Window-only features (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: No headers for named constructor attributes Created 6 years, 10 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 {##############################################################################} 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 {% if method.has_exception_state %} 6 {% if method.has_exception_state %}
7 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{method.na me}}", "{{interface_name}}", info.Holder(), info.GetIsolate()); 7 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{method.na me}}", "{{interface_name}}", info.Holder(), info.GetIsolate());
8 {% endif %} 8 {% endif %}
9 {% if method.name in ['addEventListener', 'removeEventListener'] %} 9 {% if method.name in ['addEventListener', 'removeEventListener'] %}
10 {{add_remove_event_listener_method(method.name) | indent}} 10 {{add_remove_event_listener_method(method.name) | indent}}
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); 271 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution");
272 } 272 }
273 {% endfilter %} 273 {% endfilter %}
274 {% endmacro %} 274 {% endmacro %}
275 275
276 276
277 {##############################################################################} 277 {##############################################################################}
278 {% macro origin_safe_method_getter(method, world_suffix) %} 278 {% macro origin_safe_method_getter(method, world_suffix) %}
279 static void {{method.name}}OriginSafeMethodGetter{{world_suffix}}(const v8::Prop ertyCallbackInfo<v8::Value>& info) 279 static void {{method.name}}OriginSafeMethodGetter{{world_suffix}}(const v8::Prop ertyCallbackInfo<v8::Value>& info)
280 { 280 {
281 {% set signature = 'v8::Local<v8::Signature>()'
282 if method.is_do_not_check_signature else
283 'v8::Signature::New(info.GetIsolate(), %s::domTemplate(in fo.GetIsolate(), currentWorldType))' % v8_class %}
281 {# FIXME: don't call GetIsolate() so often #} 284 {# FIXME: don't call GetIsolate() so often #}
282 // This is only for getting a unique pointer which we can pass to privateTem plate. 285 // This is only for getting a unique pointer which we can pass to privateTem plate.
283 static int privateTemplateUniqueKey; 286 static int privateTemplateUniqueKey;
284 WrapperWorldType currentWorldType = worldType(info.GetIsolate()); 287 WrapperWorldType currentWorldType = worldType(info.GetIsolate());
285 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate()); 288 V8PerIsolateData* data = V8PerIsolateData::from(info.GetIsolate());
286 {# FIXME: 1 case of [DoNotCheckSignature] in Window.idl may differ #} 289 {# FIXME: 1 case of [DoNotCheckSignature] in Window.idl may differ #}
287 v8::Handle<v8::FunctionTemplate> privateTemplate = data->privateTemplate(cur rentWorldType, &privateTemplateUniqueKey, {{cpp_class}}V8Internal::{{method.name }}MethodCallback{{world_suffix}}, v8Undefined(), v8::Signature::New(info.GetIsol ate(), {{v8_class}}::domTemplate(info.GetIsolate(), currentWorldType)), {{method .number_of_required_or_variadic_arguments}}); 290 v8::Handle<v8::FunctionTemplate> privateTemplate = data->privateTemplate(cur rentWorldType, &privateTemplateUniqueKey, {{cpp_class}}V8Internal::{{method.name }}MethodCallback{{world_suffix}}, v8Undefined(), {{signature}}, {{method.number_ of_required_or_variadic_arguments}});
288 291
289 v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain({{ v8_class}}::domTemplate(info.GetIsolate(), currentWorldType)); 292 v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain({{ v8_class}}::domTemplate(info.GetIsolate(), currentWorldType));
290 if (holder.IsEmpty()) { 293 if (holder.IsEmpty()) {
291 // This is only reachable via |object.__proto__.func|, in which case it 294 // This is only reachable via |object.__proto__.func|, in which case it
292 // has already passed the same origin security check 295 // has already passed the same origin security check
293 v8SetReturnValue(info, privateTemplate->GetFunction()); 296 v8SetReturnValue(info, privateTemplate->GetFunction());
294 return; 297 return;
295 } 298 }
296 {{cpp_class}}* imp = {{v8_class}}::toNative(holder); 299 {{cpp_class}}* imp = {{v8_class}}::toNative(holder);
297 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame (), DoNotReportSecurityError)) { 300 if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), imp->frame (), DoNotReportSecurityError)) {
298 static int sharedTemplateUniqueKey; 301 static int sharedTemplateUniqueKey;
299 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->privateTemplate( currentWorldType, &sharedTemplateUniqueKey, {{cpp_class}}V8Internal::{{method.na me}}MethodCallback{{world_suffix}}, v8Undefined(), v8::Signature::New(info.GetIs olate(), {{v8_class}}::domTemplate(info.GetIsolate(), currentWorldType)), {{meth od.number_of_required_or_variadic_arguments}}); 302 v8::Handle<v8::FunctionTemplate> sharedTemplate = data->privateTemplate( currentWorldType, &sharedTemplateUniqueKey, {{cpp_class}}V8Internal::{{method.na me}}MethodCallback{{world_suffix}}, v8Undefined(), {{signature}}, {{method.numbe r_of_required_or_variadic_arguments}});
300 v8SetReturnValue(info, sharedTemplate->GetFunction()); 303 v8SetReturnValue(info, sharedTemplate->GetFunction());
301 return; 304 return;
302 } 305 }
303 306
304 v8::Local<v8::Value> hiddenValue = getHiddenValue(info.GetIsolate(), info.Th is(), "{{method.name}}"); 307 v8::Local<v8::Value> hiddenValue = getHiddenValue(info.GetIsolate(), info.Th is(), "{{method.name}}");
305 if (!hiddenValue.IsEmpty()) { 308 if (!hiddenValue.IsEmpty()) {
306 v8SetReturnValue(info, hiddenValue); 309 v8SetReturnValue(info, hiddenValue);
307 return; 310 return;
308 } 311 }
309 312
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 v8::Handle<v8::Object> wrapper = info.Holder(); 401 v8::Handle<v8::Object> wrapper = info.Holder();
399 {% if is_constructor_raises_exception %} 402 {% if is_constructor_raises_exception %}
400 if (exceptionState.throwIfNeeded()) 403 if (exceptionState.throwIfNeeded())
401 return; 404 return;
402 {% endif %} 405 {% endif %}
403 406
404 V8DOMWrapper::associateObjectWithWrapper<{{v8_class}}>(impl.release(), &{{v8 _class}}Constructor::wrapperTypeInfo, wrapper, info.GetIsolate(), WrapperConfigu ration::Dependent); 407 V8DOMWrapper::associateObjectWithWrapper<{{v8_class}}>(impl.release(), &{{v8 _class}}Constructor::wrapperTypeInfo, wrapper, info.GetIsolate(), WrapperConfigu ration::Dependent);
405 v8SetReturnValue(info, wrapper); 408 v8SetReturnValue(info, wrapper);
406 } 409 }
407 {% endmacro %} 410 {% endmacro %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698