Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 {% extends 'interface_base.cpp' %} | 1 {% extends 'interface_base.cpp' %} |
| 2 | 2 |
| 3 | 3 |
| 4 {##############################################################################} | 4 {##############################################################################} |
| 5 {% block indexed_property_getter %} | 5 {% block indexed_property_getter %} |
| 6 {% if indexed_property_getter and not indexed_property_getter.is_custom %} | 6 {% if indexed_property_getter and not indexed_property_getter.is_custom %} |
| 7 {% set getter = indexed_property_getter %} | 7 {% set getter = indexed_property_getter %} |
| 8 static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo <v8::Value>& info) | 8 static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo <v8::Value>& info) |
| 9 { | 9 { |
| 10 {{cpp_class}}* impl = {{v8_class}}::toImpl(info.Holder()); | 10 {{cpp_class}}* impl = {{v8_class}}::toImpl(info.Holder()); |
| (...skipping 709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 720 {% set only_exposed_to_private_script = 'V8DOMConfiguration::OnlyExposedToPrivat eScript' if method.only_exposed_to_private_script else 'V8DOMConfiguration::Expo sedToAllScripts' %} | 720 {% set only_exposed_to_private_script = 'V8DOMConfiguration::OnlyExposedToPrivat eScript' if method.only_exposed_to_private_script else 'V8DOMConfiguration::Expo sedToAllScripts' %} |
| 721 static const V8DOMConfiguration::AttributeConfiguration {{method.name}}OriginSaf eAttributeConfiguration = { | 721 static const V8DOMConfiguration::AttributeConfiguration {{method.name}}OriginSaf eAttributeConfiguration = { |
| 722 "{{method.name}}", {{getter_callback}}, {{setter_callback}}, {{getter_callba ck_for_main_world}}, {{setter_callback_for_main_world}}, &{{v8_class}}::wrapperT ypeInfo, v8::ALL_CAN_READ, {{property_attribute}}, {{only_exposed_to_private_scr ipt}}, V8DOMConfiguration::OnInstance, | 722 "{{method.name}}", {{getter_callback}}, {{setter_callback}}, {{getter_callba ck_for_main_world}}, {{setter_callback_for_main_world}}, &{{v8_class}}::wrapperT ypeInfo, v8::ALL_CAN_READ, {{property_attribute}}, {{only_exposed_to_private_scr ipt}}, V8DOMConfiguration::OnInstance, |
| 723 }; | 723 }; |
| 724 V8DOMConfiguration::installAttribute({{method.function_template}}, v8::Handle<v8 ::ObjectTemplate>(), {{method.name}}OriginSafeAttributeConfiguration, isolate); | 724 V8DOMConfiguration::installAttribute({{method.function_template}}, v8::Handle<v8 ::ObjectTemplate>(), {{method.name}}OriginSafeAttributeConfiguration, isolate); |
| 725 {%- endmacro %} | 725 {%- endmacro %} |
| 726 | 726 |
| 727 | 727 |
| 728 {##############################################################################} | 728 {##############################################################################} |
| 729 {% block get_dom_template %} | 729 {% block get_dom_template %} |
| 730 {% if is_v8object %} | |
| 730 v8::Handle<v8::FunctionTemplate> {{v8_class}}::domTemplate(v8::Isolate* isolate) | 731 v8::Handle<v8::FunctionTemplate> {{v8_class}}::domTemplate(v8::Isolate* isolate) |
| 731 { | 732 { |
| 732 return V8DOMConfiguration::domClassTemplate(isolate, const_cast<WrapperTypeI nfo*>(&wrapperTypeInfo), install{{v8_class}}Template); | 733 return V8DOMConfiguration::domClassTemplate(isolate, const_cast<WrapperTypeI nfo*>(&wrapperTypeInfo), install{{v8_class}}Template); |
| 733 } | 734 } |
| 734 | 735 |
| 736 {% endif %} | |
| 735 {% endblock %} | 737 {% endblock %} |
| 736 | 738 |
| 737 | 739 |
| 738 {##############################################################################} | 740 {##############################################################################} |
| 739 {% block has_instance %} | 741 {% block has_instance %} |
| 740 bool {{v8_class}}::hasInstance(v8::Handle<v8::Value> v8Value, v8::Isolate* isola te) | 742 bool {{v8_class}}::hasInstance(v8::Handle<v8::Value> v8Value, v8::Isolate* isola te) |
| 741 { | 743 { |
| 744 {% if is_v8object %} | |
| 742 return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Valu e); | 745 return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Valu e); |
| 746 {% else %} | |
| 747 return v8Value->Is{{interface_name}}(); | |
| 748 {% endif %} | |
| 743 } | 749 } |
| 744 | 750 |
| 751 {% if is_v8object %} | |
| 745 v8::Handle<v8::Object> {{v8_class}}::findInstanceInPrototypeChain(v8::Handle<v8: :Value> v8Value, v8::Isolate* isolate) | 752 v8::Handle<v8::Object> {{v8_class}}::findInstanceInPrototypeChain(v8::Handle<v8: :Value> v8Value, v8::Isolate* isolate) |
| 746 { | 753 { |
| 747 return V8PerIsolateData::from(isolate)->findInstanceInPrototypeChain(&wrappe rTypeInfo, v8Value); | 754 return V8PerIsolateData::from(isolate)->findInstanceInPrototypeChain(&wrappe rTypeInfo, v8Value); |
| 748 } | 755 } |
| 749 | 756 |
| 757 {% endif %} | |
| 750 {% endblock %} | 758 {% endblock %} |
| 751 | 759 |
| 752 | 760 |
| 761 {##############################################################################} | |
| 762 {% block to_impl %} | |
| 763 {% if interface_name == 'ArrayBuffer' %} | |
| 764 DOMArrayBuffer* V8ArrayBuffer::toImpl(v8::Handle<v8::Object> object) | |
| 765 { | |
| 766 ASSERT(object->IsArrayBuffer()); | |
| 767 v8::Local<v8::ArrayBuffer> v8buffer = object.As<v8::ArrayBuffer>(); | |
| 768 if (v8buffer->IsExternal()) { | |
| 769 RELEASE_ASSERT(toWrapperTypeInfo(object)->ginEmbedder == gin::kEmbedderB link); | |
| 770 return blink::toScriptWrappableBase(object)->toImpl<DOMArrayBuffer>(); | |
| 771 } | |
| 772 | |
| 773 v8::ArrayBuffer::Contents v8Contents = v8buffer->Externalize(); | |
| 774 WTF::ArrayBufferContents contents(v8Contents.Data(), v8Contents.ByteLength() , 0); | |
| 775 RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::create(contents); | |
| 776 buffer->associateWithWrapper(buffer->wrapperTypeInfo(), object, v8::Isolate: :GetCurrent()); | |
| 777 | |
| 778 return blink::toScriptWrappableBase(object)->toImpl<DOMArrayBuffer>(); | |
| 779 } | |
| 780 {% elif interface_name == 'ArrayBufferView' %} | |
| 781 DOMArrayBufferView* V8ArrayBufferView::toImpl(v8::Handle<v8::Object> object) | |
| 782 { | |
| 783 ASSERT(object->IsArrayBufferView()); | |
| 784 ScriptWrappableBase* internalPointer = blink::toScriptWrappableBase(object); | |
| 785 if (internalPointer) | |
|
haraken
2014/10/16 05:41:41
BTW, let's rename internalPointer to scriptWrappab
Yuki
2014/10/16 14:21:50
Will do.
| |
| 786 return internalPointer->toImpl<DOMArrayBufferView>(); | |
| 787 | |
| 788 if (object->IsInt8Array()) | |
| 789 return V8Int8Array::toImpl(object); | |
| 790 if (object->IsInt16Array()) | |
| 791 return V8Int16Array::toImpl(object); | |
| 792 if (object->IsInt32Array()) | |
| 793 return V8Int32Array::toImpl(object); | |
| 794 if (object->IsUint8Array()) | |
| 795 return V8Uint8Array::toImpl(object); | |
| 796 if (object->IsUint8ClampedArray()) | |
| 797 return V8Uint8ClampedArray::toImpl(object); | |
| 798 if (object->IsUint16Array()) | |
| 799 return V8Uint16Array::toImpl(object); | |
| 800 if (object->IsUint32Array()) | |
| 801 return V8Uint32Array::toImpl(object); | |
| 802 if (object->IsFloat32Array()) | |
| 803 return V8Float32Array::toImpl(object); | |
| 804 if (object->IsFloat64Array()) | |
| 805 return V8Float64Array::toImpl(object); | |
| 806 if (object->IsDataView()) | |
| 807 return V8DataView::toImpl(object); | |
| 808 | |
| 809 ASSERT_NOT_REACHED(); | |
| 810 return 0; | |
| 811 } | |
| 812 {% elif is_array_type %} | |
| 813 {{cpp_class}}* {{v8_class}}::toImpl(v8::Handle<v8::Object> object) | |
| 814 { | |
| 815 ASSERT(object->Is{{interface_name}}()); | |
| 816 ScriptWrappableBase* internalPointer = blink::toScriptWrappableBase(object); | |
| 817 if (internalPointer) | |
|
haraken
2014/10/16 05:41:41
We have the internalPointer check both in V8ArrayB
Yuki
2014/10/16 14:21:50
It's a matter of the speed performance.
Obviously
| |
| 818 return internalPointer->toImpl<{{cpp_class}}>(); | |
| 819 | |
| 820 v8::Handle<v8::{{interface_name}}> v8View = object.As<v8::{{interface_name}} >(); | |
| 821 RefPtr<{{cpp_class}}> typedArray = {{cpp_class}}::create(V8ArrayBuffer::toIm pl(v8View->Buffer()), v8View->ByteOffset(), v8View->{% if interface_name == 'Dat aView' %}Byte{% endif %}Length()); | |
| 822 typedArray->associateWithWrapper(typedArray->wrapperTypeInfo(), object, v8:: Isolate::GetCurrent()); | |
| 823 | |
| 824 internalPointer = blink::toScriptWrappableBase(object); | |
| 825 ASSERT(internalPointer); | |
|
haraken
2014/10/16 05:41:41
ASSERT(internalPointer == typedArray) ?
Yuki
2014/10/16 14:21:50
Done.
| |
| 826 return internalPointer->toImpl<{{cpp_class}}>(); | |
|
haraken
2014/10/16 05:41:41
Actually it's redundant to get an internalPointer
Yuki
2014/10/16 14:21:50
Done.
| |
| 827 } | |
| 828 {% endif %} | |
| 829 {% endblock %} | |
| 830 | |
| 831 | |
| 753 {##############################################################################} | 832 {##############################################################################} |
| 754 {% block to_impl_with_type_check %} | 833 {% block to_impl_with_type_check %} |
| 755 {{cpp_class}}* {{v8_class}}::toImplWithTypeCheck(v8::Isolate* isolate, v8::Handl e<v8::Value> value) | 834 {{cpp_class}}* {{v8_class}}::toImplWithTypeCheck(v8::Isolate* isolate, v8::Handl e<v8::Value> value) |
| 756 { | 835 { |
| 757 return hasInstance(value, isolate) ? blink::toScriptWrappableBase(v8::Handle <v8::Object>::Cast(value))->toImpl<{{cpp_class}}>() : 0; | 836 return hasInstance(value, isolate) ? toImpl(v8::Handle<v8::Object>::Cast(val ue)) : 0; |
| 758 } | 837 } |
| 759 | 838 |
| 760 {% endblock %} | 839 {% endblock %} |
| 761 | 840 |
| 762 | 841 |
| 763 {##############################################################################} | 842 {##############################################################################} |
| 764 {% block to_active_dom_object %} | 843 {% block to_active_dom_object %} |
| 765 {% if is_active_dom_object %} | 844 {% if is_active_dom_object %} |
| 766 ActiveDOMObject* {{v8_class}}::toActiveDOMObject(v8::Handle<v8::Object> wrapper) | 845 ActiveDOMObject* {{v8_class}}::toActiveDOMObject(v8::Handle<v8::Object> wrapper) |
| 767 { | 846 { |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 895 {% endif %} | 974 {% endif %} |
| 896 } | 975 } |
| 897 | 976 |
| 898 template<> | 977 template<> |
| 899 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c reationContext, v8::Isolate* isolate) | 978 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c reationContext, v8::Isolate* isolate) |
| 900 { | 979 { |
| 901 return toV8(impl, creationContext, isolate); | 980 return toV8(impl, creationContext, isolate); |
| 902 } | 981 } |
| 903 | 982 |
| 904 {% endblock %} | 983 {% endblock %} |
| OLD | NEW |