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

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

Issue 1531443003: [bindings] Implement an ExperimentEnabled IDL extended attribute. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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
OLDNEW
1 {% from 'conversions.cpp' import declare_enum_validation_variable, v8_value_to_l ocal_cpp_value %} 1 {% from 'conversions.cpp' import declare_enum_validation_variable, v8_value_to_l ocal_cpp_value %}
2 2
3 3
4 {##############################################################################} 4 {##############################################################################}
5 {% macro generate_method(method, world_suffix) %} 5 {% macro generate_method(method, world_suffix) %}
6 {% filter conditional(method.conditional_string) %} 6 {% filter conditional(method.conditional_string) %}
7 {% if method.returns_promise and method.has_exception_state %} 7 {% if method.returns_promise and method.has_exception_state %}
8 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}Promis e(const v8::FunctionCallbackInfo<v8::Value>& info, ExceptionState& exceptionStat e) 8 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}Promis e(const v8::FunctionCallbackInfo<v8::Value>& info, ExceptionState& exceptionStat e)
9 {% else %} 9 {% else %}
10 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const v8::FunctionCallbackInfo<v8::Value>& info) 10 static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const v8::FunctionCallbackInfo<v8::Value>& info)
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 createMinimumArityTypeErrorForMethod(info.GetIsolate(), "{{method.name}}", "{{in terface_name}}", {{number_of_required_arguments}}, info.Length()) 359 createMinimumArityTypeErrorForMethod(info.GetIsolate(), "{{method.name}}", "{{in terface_name}}", {{number_of_required_arguments}}, info.Length())
360 {%- endif %} 360 {%- endif %}
361 {%- endmacro %} 361 {%- endmacro %}
362 362
363 363
364 {##############################################################################} 364 {##############################################################################}
365 {% macro runtime_determined_length_method(overloads) %} 365 {% macro runtime_determined_length_method(overloads) %}
366 static int {{overloads.name}}MethodLength() 366 static int {{overloads.name}}MethodLength()
367 { 367 {
368 {% for length, runtime_enabled_functions in overloads.runtime_determined_len gths %} 368 {% for length, runtime_enabled_functions in overloads.runtime_determined_len gths %}
369 {% for runtime_enabled_function in runtime_enabled_functions %} 369 {% for runtime_enabled_function in runtime_enabled_functions %}
370 {% filter runtime_enabled(runtime_enabled_function) %} 370 {% filter runtime_enabled(runtime_enabled_function) %}
371 return {{length}}; 371 return {{length}};
372 {% endfilter %} 372 {% endfilter %}
373 {% endfor %} 373 {% endfor %}
374 {% endfor %} 374 {% endfor %}
375 } 375 }
376 {% endmacro %} 376 {% endmacro %}
377 377
378 378
379 {##############################################################################} 379 {##############################################################################}
(...skipping 11 matching lines...) Expand all
391 {% endmacro %} 391 {% endmacro %}
392 392
393 393
394 {##############################################################################} 394 {##############################################################################}
395 {# FIXME: We should return a rejected Promise if an error occurs in this 395 {# FIXME: We should return a rejected Promise if an error occurs in this
396 function when ALL methods in this overload return Promise. In order to do so, 396 function when ALL methods in this overload return Promise. In order to do so,
397 we must ensure either ALL or NO methods in this overload return Promise #} 397 we must ensure either ALL or NO methods in this overload return Promise #}
398 {% macro overload_resolution_method(overloads, world_suffix) %} 398 {% macro overload_resolution_method(overloads, world_suffix) %}
399 static void {{overloads.name}}Method{{world_suffix}}(const v8::FunctionCallbackI nfo<v8::Value>& info) 399 static void {{overloads.name}}Method{{world_suffix}}(const v8::FunctionCallbackI nfo<v8::Value>& info)
400 { 400 {
401 String errorMessage;
402 ALLOW_UNUSED_LOCAL(errorMessage);
401 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{overloads .name}}", "{{interface_name}}", info.Holder(), info.GetIsolate()); 403 ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{overloads .name}}", "{{interface_name}}", info.Holder(), info.GetIsolate());
402 {% if overloads.measure_all_as %} 404 {% if overloads.measure_all_as %}
403 UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionConte xt(info.GetIsolate()), UseCounter::{{overloads.measure_all_as}}); 405 UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionConte xt(info.GetIsolate()), UseCounter::{{overloads.measure_all_as}});
404 {% endif %} 406 {% endif %}
405 {% if overloads.deprecate_all_as %} 407 {% if overloads.deprecate_all_as %}
406 UseCounter::countDeprecationIfNotPrivateScript(info.GetIsolate(), callingExe cutionContext(info.GetIsolate()), UseCounter::{{overloads.deprecate_all_as}}); 408 UseCounter::countDeprecationIfNotPrivateScript(info.GetIsolate(), callingExe cutionContext(info.GetIsolate()), UseCounter::{{overloads.deprecate_all_as}});
407 {% endif %} 409 {% endif %}
408 {# First resolve by length #} 410 {# First resolve by length #}
409 {# 2. Initialize argcount to be min(maxarg, n). #} 411 {# 2. Initialize argcount to be min(maxarg, n). #}
410 switch (std::min({{overloads.maxarg}}, info.Length())) { 412 switch (std::min({{overloads.maxarg}}, info.Length())) {
411 {# 3. Remove from S all entries whose type list is not of length argcount. # } 413 {# 3. Remove from S all entries whose type list is not of length argcount. # }
412 {% for length, tests_methods in overloads.length_tests_methods %} 414 {% for length, tests_methods in overloads.length_tests_methods %}
413 {# 10. If i = d, then: #} 415 {# 10. If i = d, then: #}
414 case {{length}}: 416 case {{length}}:
415 {# Then resolve by testing argument #} 417 {# Then resolve by testing argument #}
416 {% for test, method in tests_methods %} 418 {% for test, method in tests_methods %}
417 {% if method.visible %} 419 {% if method.visible %}
418 {% filter runtime_enabled(not overloads.runtime_enabled_function_all and 420 {% filter runtime_enabled(not overloads.runtime_enabled_function_all and
419 method.runtime_enabled_function) %} 421 method.runtime_enabled_function) %}
422 {% filter experiment_enabled(not overloads.experimental_api_name_all and
423 method.experimental_api_name, "errorMessage ") %}
420 if ({{test}}) { 424 if ({{test}}) {
421 {% if method.measure_as and not overloads.measure_all_as %} 425 {% if method.measure_as and not overloads.measure_all_as %}
422 UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecut ionContext(info.GetIsolate()), UseCounter::{{method.measure_as('Method')}}); 426 UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecut ionContext(info.GetIsolate()), UseCounter::{{method.measure_as('Method')}});
423 {% endif %} 427 {% endif %}
424 {% if method.deprecate_as and not overloads.deprecate_all_as %} 428 {% if method.deprecate_as and not overloads.deprecate_all_as %}
425 UseCounter::countDeprecationIfNotPrivateScript(info.GetIsolate(), ca llingExecutionContext(info.GetIsolate()), UseCounter::{{method.deprecate_as}}); 429 UseCounter::countDeprecationIfNotPrivateScript(info.GetIsolate(), ca llingExecutionContext(info.GetIsolate()), UseCounter::{{method.deprecate_as}});
426 {% endif %} 430 {% endif %}
427 {{method.name}}{{method.overload_index}}Method{{world_suffix}}(info) ; 431 {{method.name}}{{method.overload_index}}Method{{world_suffix}}(info) ;
428 return; 432 return;
429 } 433 }
430 {% endfilter %} 434 {% endfilter %}
435 {% endfilter %}
431 {% endif %} 436 {% endif %}
432 {% endfor %} 437 {% endfor %}
433 break; 438 break;
434 {% endfor %} 439 {% endfor %}
435 {% if is_partial or not overloads.has_partial_overloads %} 440 {% if is_partial or not overloads.has_partial_overloads %}
436 default: 441 default:
437 {# If methods are overloaded between interface and partial interface #} 442 {# If methods are overloaded between interface and partial interface #}
438 {# definitions, need to invoke methods defined in the partial #} 443 {# definitions, need to invoke methods defined in the partial #}
439 {# interface. #} 444 {# interface. #}
440 {# FIXME: we do not need to always generate this code. #} 445 {# FIXME: we do not need to always generate this code. #}
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 V8DOMConfiguration::installMethod(isolate, {{instance_template}}, {{prototype_te mplate}}, {{interface_template}}, {{signature}}, {{method.name}}MethodConfigurat ion); 698 V8DOMConfiguration::installMethod(isolate, {{instance_template}}, {{prototype_te mplate}}, {{interface_template}}, {{signature}}, {{method.name}}MethodConfigurat ion);
694 {%- endmacro %} 699 {%- endmacro %}
695 700
696 {######################################} 701 {######################################}
697 {% macro install_conditionally_enabled_methods() %} 702 {% macro install_conditionally_enabled_methods() %}
698 {% if conditionally_enabled_methods %} 703 {% if conditionally_enabled_methods %}
699 {# Define operations with limited exposure #} 704 {# Define operations with limited exposure #}
700 v8::Local<v8::Signature> defaultSignature = v8::Signature::New(isolate, domTempl ate(isolate)); 705 v8::Local<v8::Signature> defaultSignature = v8::Signature::New(isolate, domTempl ate(isolate));
701 ExecutionContext* executionContext = toExecutionContext(prototypeObject->Creatio nContext()); 706 ExecutionContext* executionContext = toExecutionContext(prototypeObject->Creatio nContext());
702 ASSERT(executionContext); 707 ASSERT(executionContext);
708 String errorMessage;
709 ALLOW_UNUSED_LOCAL(errorMessage);
703 {% for method in conditionally_enabled_methods %} 710 {% for method in conditionally_enabled_methods %}
704 {% filter exposed(method.overloads.exposed_test_all 711 {% filter exposed(method.overloads.exposed_test_all
705 if method.overloads else 712 if method.overloads else
706 method.exposed_test) %} 713 method.exposed_test) %}
707 {% filter runtime_enabled(method.overloads.runtime_enabled_function_all 714 {% filter runtime_enabled(method.overloads.runtime_enabled_function_all
708 if method.overloads else 715 if method.overloads else
709 method.runtime_enabled_function) %} 716 method.runtime_enabled_function) %}
717 {% filter experiment_enabled(method.overloads.experimental_api_name_all
718 if method.overloads else
719 method.experimental_api_name, "errorMessage") %}
710 const V8DOMConfiguration::MethodConfiguration {{method.name}}MethodConfiguration = {{method_configuration(method)}}; 720 const V8DOMConfiguration::MethodConfiguration {{method.name}}MethodConfiguration = {{method_configuration(method)}};
711 V8DOMConfiguration::installMethod(isolate, v8::Local<v8::Object>(), prototypeObj ect, interfaceObject, defaultSignature, {{method.name}}MethodConfiguration); 721 V8DOMConfiguration::installMethod(isolate, v8::Local<v8::Object>(), prototypeObj ect, interfaceObject, defaultSignature, {{method.name}}MethodConfiguration);
722 {% endfilter %}{# experiment_enabled() #}
712 {% endfilter %}{# runtime_enabled() #} 723 {% endfilter %}{# runtime_enabled() #}
713 {% endfilter %}{# exposed() #} 724 {% endfilter %}{# exposed() #}
714 {% endfor %} 725 {% endfor %}
715 {% endif %} 726 {% endif %}
716 {%- endmacro %} 727 {%- endmacro %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698