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

Unified Diff: Source/bindings/templates/constants.cpp

Issue 577303002: IDL: Support [DeprecateAs] and [MeasureAs] on constants (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: Source/bindings/templates/constants.cpp
diff --git a/Source/bindings/templates/constants.cpp b/Source/bindings/templates/constants.cpp
index d916167d5d9a7cd585edda62dedb0eb863458faf..6d71c623fac74ffa762d5b5b0a1ee2084b50b5dc 100644
--- a/Source/bindings/templates/constants.cpp
+++ b/Source/bindings/templates/constants.cpp
@@ -1,13 +1,38 @@
+{##############################################################################}
+{% macro constant_getter_callback(constant) %}
+{% filter conditional(constant.conditional_string) %}
+static void {{constant.name}}AttributeGetterCallback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info)
+{
+ TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMGetter");
+ {% if constant.deprecate_as %}
+ UseCounter::countDeprecation(callingExecutionContext(info.GetIsolate()), UseCounter::{{constant.deprecate_as}});
+ {% endif %}
+ {% if constant.measure_as %}
+ UseCounter::count(callingExecutionContext(info.GetIsolate()), UseCounter::{{constant.measure_as}});
+ {% endif %}
+ {% if constant.idl_type in ('Double', 'Float') %}
+ v8SetReturnValue(info, {{constant.value}});
+ {% elif constant.idl_type == 'String' %}
+ v8SetReturnValueString(info, "{{constant.value}}");
+ {% else %}
+ v8SetReturnValueInt(info, {{constant.value}});
+ {% endif %}
+ TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution");
+}
+{% endfilter %}
+{% endmacro %}
+
+
{######################################}
{% macro install_constants() %}
-{% if has_constant_configuration %}
+{% if constant_configuration_constants %}
{# Normal constants #}
static const V8DOMConfiguration::ConstantConfiguration {{v8_class}}Constants[] = {
- {% for constant in constants if not constant.runtime_enabled_function %}
+ {% for constant in constant_configuration_constants %}
{% if constant.idl_type in ('Double', 'Float') %}
{% set value = '0, %s, 0' % constant.value %}
{% elif constant.idl_type == 'String' %}
- {% set value = '0, 0, %s' % constant.value %}
+ {% set value = '0, 0, "%s"' % constant.value %}
{% else %}
{# 'Short', 'Long' etc. #}
{% set value = '%s, 0, 0' % constant.value %}
@@ -18,19 +43,23 @@ static const V8DOMConfiguration::ConstantConfiguration {{v8_class}}Constants[] =
V8DOMConfiguration::installConstants(functionTemplate, prototypeTemplate, {{v8_class}}Constants, WTF_ARRAY_LENGTH({{v8_class}}Constants), isolate);
{% endif %}
{# Runtime-enabled constants #}
-{% for constant in constants if constant.runtime_enabled_function %}
-if ({{constant.runtime_enabled_function}}()) {
- {% if constant.idl_type in ('Double', 'Float') %}
- {% set value = '0, %s, 0' % constant.value %}
- {% elif constant.idl_type == 'String' %}
- {% set value = '0, 0, %s' % constant.value %}
- {% else %}
- {# 'Short', 'Long' etc. #}
- {% set value = '%s, 0, 0' % constant.value %}
- {% endif %}
- static const V8DOMConfiguration::ConstantConfiguration constantConfiguration = {"{{constant.name}}", {{value}}, V8DOMConfiguration::ConstantType{{constant.idl_type}}};
- V8DOMConfiguration::installConstants(functionTemplate, prototypeTemplate, &constantConfiguration, 1, isolate);
-}
+{% for constant in runtime_enabled_constants %}
+{% filter runtime_enabled(constant.runtime_enabled_function) %}
+{% if constant.idl_type in ('Double', 'Float') %}
+ {% set value = '0, %s, 0' % constant.value %}
+{% elif constant.idl_type == 'String' %}
+ {% set value = '0, 0, %s' % constant.value %}
+{% else %}
+ {# 'Short', 'Long' etc. #}
+ {% set value = '%s, 0, 0' % constant.value %}
+{% endif %}
+static const V8DOMConfiguration::ConstantConfiguration constantConfiguration = {"{{constant.name}}", {{value}}, V8DOMConfiguration::ConstantType{{constant.idl_type}}};
+V8DOMConfiguration::installConstants(functionTemplate, prototypeTemplate, &constantConfiguration, 1, isolate);
+{% endfilter %}
+{% endfor %}
+{# Constants with [DeprecateAs] or [MeasureAs] #}
+{% for constant in special_getter_constants %}
+V8DOMConfiguration::installConstant(functionTemplate, prototypeTemplate, "{{constant.name}}", {{cpp_class}}V8Internal::{{constant.name}}ConstantGetterCallback, isolate);
{% endfor %}
{# Check constants #}
{% if not do_not_check_constants %}

Powered by Google App Engine
This is Rietveld 408576698