Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / bindings / templates / constants.cpp
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)
5 {
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}});
9     {% endif %}
10     {% if constant.measure_as %}
11     UseCounter::countIfNotPrivateScript(info.GetIsolate(), callingExecutionContext(info.GetIsolate()), UseCounter::{{constant.measure_as}});
12     {% endif %}
13     {% if constant.idl_type in ('Double', 'Float') %}
14     v8SetReturnValue(info, {{constant.value}});
15     {% elif constant.idl_type == 'String' %}
16     v8SetReturnValueString(info, "{{constant.value}}");
17     {% else %}
18     v8SetReturnValueInt(info, {{constant.value}});
19     {% endif %}
20     TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution");
21 }
22 {% endfilter %}
23 {% endmacro %}
24
25
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)}},
33     {% endfor %}
34 };
35 V8DOMConfiguration::installConstants(functionTemplate, prototypeTemplate, {{v8_class}}Constants, WTF_ARRAY_LENGTH({{v8_class}}Constants), isolate);
36 {% endif %}
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);
42 {% endfilter %}
43 {% endfor %}
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);
47 {% endfor %}
48 {# Check constants #}
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);
54 {% endif %}
55 {% endfor %}
56 {% endif %}
57 {% endmacro %}
58
59
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 %}
66 {% else %}
67     {# 'Short', 'Long' etc. #}
68     {% set value = '%s, 0, 0' % constant.value %}
69 {% endif %}
70 {"{{constant.name}}", {{value}}, V8DOMConfiguration::ConstantType{{constant.idl_type}}}
71 {%- endmacro %}