OLD | NEW |
1 {##############################################################################} | 1 {##############################################################################} |
2 {% macro attribute_getter(attribute, world_suffix) %} | 2 {% macro attribute_getter(attribute, world_suffix) %} |
3 {% filter conditional(attribute.conditional_string) %} | 3 {% filter conditional(attribute.conditional_string) %} |
4 static void {{attribute.name}}AttributeGetter{{world_suffix}}( | 4 static void {{attribute.name}}AttributeGetter{{world_suffix}}( |
5 {%- if attribute.is_expose_js_accessors %} | 5 {%- if attribute.is_expose_js_accessors %} |
6 const v8::FunctionCallbackInfo<v8::Value>& info | 6 const v8::FunctionCallbackInfo<v8::Value>& info |
7 {%- else %} | 7 {%- else %} |
8 const v8::PropertyCallbackInfo<v8::Value>& info | 8 const v8::PropertyCallbackInfo<v8::Value>& info |
9 {%- endif %}) | 9 {%- endif %}) |
10 { | 10 { |
11 {% if attribute.is_reflect and not attribute.is_url and | 11 {% if attribute.is_reflect and not attribute.is_url and |
12 attribute.idl_type == 'DOMString' and is_node %} | 12 attribute.idl_type == 'DOMString' and is_node %} |
13 {% set cpp_class, v8_class = 'Element', 'V8Element' %} | 13 {% set cpp_class, v8_class = 'Element', 'V8Element' %} |
14 {% endif %} | 14 {% endif %} |
15 {# holder #} | 15 {# holder #} |
16 {% if attribute.is_unforgeable and interface_name != 'Window' %} | 16 {% if not attribute.is_static %} |
17 {# perform lookup first #} | |
18 {# FIXME: can we remove this lookup? #} | |
19 v8::Handle<v8::Object> holder = {{v8_class}}::findInstanceInPrototypeChain(i
nfo.This(), info.GetIsolate()); | |
20 if (holder.IsEmpty()) | |
21 return; | |
22 {% elif not attribute.is_static %} | |
23 v8::Handle<v8::Object> holder = info.Holder(); | 17 v8::Handle<v8::Object> holder = info.Holder(); |
24 {% endif %} | 18 {% endif %} |
25 {# impl #} | 19 {# impl #} |
26 {% if attribute.cached_attribute_validation_method %} | 20 {% if attribute.cached_attribute_validation_method %} |
27 v8::Handle<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "{{a
ttribute.name}}"); | 21 v8::Handle<v8::String> propertyName = v8AtomicString(info.GetIsolate(), "{{a
ttribute.name}}"); |
28 {{cpp_class}}* impl = {{v8_class}}::toNative(holder); | 22 {{cpp_class}}* impl = {{v8_class}}::toNative(holder); |
29 if (!impl->{{attribute.cached_attribute_validation_method}}()) { | 23 if (!impl->{{attribute.cached_attribute_validation_method}}()) { |
30 v8::Handle<v8::Value> v8Value = V8HiddenValue::getHiddenValue(info.GetIs
olate(), holder, propertyName); | 24 v8::Handle<v8::Value> v8Value = V8HiddenValue::getHiddenValue(info.GetIs
olate(), holder, propertyName); |
31 if (!v8Value.IsEmpty()) { | 25 if (!v8Value.IsEmpty()) { |
32 v8SetReturnValue(info, v8Value); | 26 v8SetReturnValue(info, v8Value); |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 {% endif %} | 338 {% endif %} |
345 {% if attribute.has_custom_setter %} | 339 {% if attribute.has_custom_setter %} |
346 {{v8_class}}::{{attribute.name}}AttributeSetterCustom(v8Value, info); | 340 {{v8_class}}::{{attribute.name}}AttributeSetterCustom(v8Value, info); |
347 {% else %} | 341 {% else %} |
348 {{cpp_class}}V8Internal::{{attribute.name}}AttributeSetter{{world_suffix}}(v
8Value, info); | 342 {{cpp_class}}V8Internal::{{attribute.name}}AttributeSetter{{world_suffix}}(v
8Value, info); |
349 {% endif %} | 343 {% endif %} |
350 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); | 344 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); |
351 } | 345 } |
352 {% endfilter %} | 346 {% endfilter %} |
353 {% endmacro %} | 347 {% endmacro %} |
OLD | NEW |