1 {##############################################################################}
2 {% macro constant_getter_callback(constant) %}
3 {% filter conditional(constant.conditional_string) %}
4 static void {{constant.name}}ConstantGetterCallback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info)
6 TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMGetter");
7 {% if constant.deprecate_as %}
8 UseCounter::countDeprecationIfNotPrivateScript(info.GetIsolate(), callingExecutionContext(info.GetIsolate()), UseCounter::{{constant.deprecate_as}});
10 {% if constant.measure_as %}
11 UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionContext(info.GetIsolate()), UseCounter::{{constant.measure_as}});
13 {% if constant.idl_type in ('Double', 'Float') %}
14 v8SetReturnValue(info, {{constant.value}});
15 {% elif constant.idl_type == 'String' %}
16 v8SetReturnValueString(info, "{{constant.value}}");
18 v8SetReturnValueInt(info, {{constant.value}});
20 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution");
26 {######################################}
27 {% macro install_constants() %}
28 {% if constant_configuration_constants %}
29 {# Normal constants #}
30 static const V8DOMConfiguration::ConstantConfiguration {{v8_class}}Constants[] = {
31 {% for constant in constant_configuration_constants %}
32 {{constant_configuration(constant)}},
35 V8DOMConfiguration::installConstants(functionTemplate, prototypeTemplate, {{v8_class}}Constants, WTF_ARRAY_LENGTH({{v8_class}}Constants), isolate);
37 {# Runtime-enabled constants #}
38 {% for constant in runtime_enabled_constants %}
39 {% filter runtime_enabled(constant.runtime_enabled_function) %}
40 static const V8DOMConfiguration::ConstantConfiguration constantConfiguration = {{constant_configuration(constant)}};
41 V8DOMConfiguration::installConstants(functionTemplate, prototypeTemplate, &constantConfiguration, 1, isolate);
44 {# Constants with [DeprecateAs] or [MeasureAs] #}
45 {% for constant in special_getter_constants %}
46 V8DOMConfiguration::installConstant(functionTemplate, prototypeTemplate, "{{constant.name}}", {{cpp_class}}V8Internal::{{constant.name}}ConstantGetterCallback, isolate);
49 {% if not do_not_check_constants %}
50 {% for constant in constants %}
51 {% if constant.idl_type not in ('Double', 'Float', 'String') %}
52 {% set constant_cpp_class = constant.cpp_class or cpp_class %}
53 COMPILE_ASSERT({{constant.value}} == {{constant_cpp_class}}::{{constant.reflected_name}}, TheValueOf{{cpp_class}}_{{constant.reflected_name}}DoesntMatchWithImplementation);
60 {######################################}
61 {%- macro constant_configuration(constant) %}
62 {% if constant.idl_type in ('Double', 'Float') %}
63 {% set value = '0, %s, 0' % constant.value %}
64 {% elif constant.idl_type == 'String' %}
65 {% set value = '0, 0, "%s"' % constant.value %}
67 {# 'Short', 'Long' etc. #}
68 {% set value = '%s, 0, 0' % constant.value %}
70 {"{{constant.name}}", {{value}}, V8DOMConfiguration::ConstantType{{constant.idl_type}}}