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

Side by Side Diff: Source/bindings/templates/interface.cpp

Issue 332183008: Revert of Forbid creating new wrapper from SetWrapperReferenceTo (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/bindings/tests/results/V8TestInterface.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 {% extends 'interface_base.cpp' %} 1 {% extends 'interface_base.cpp' %}
2 2
3 3
4 {##############################################################################} 4 {##############################################################################}
5 {% macro attribute_configuration(attribute) %} 5 {% macro attribute_configuration(attribute) %}
6 {% set getter_callback = 6 {% set getter_callback =
7 '%sV8Internal::%sAttributeGetterCallback' % 7 '%sV8Internal::%sAttributeGetterCallback' %
8 (cpp_class, attribute.name) 8 (cpp_class, attribute.name)
9 if not attribute.constructor_type else 9 if not attribute.constructor_type else
10 ('%sV8Internal::%sConstructorGetterCallback' % 10 ('%sV8Internal::%sConstructorGetterCallback' %
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 {% if reachable_node_function or set_wrapper_reference_to_list %} 702 {% if reachable_node_function or set_wrapper_reference_to_list %}
703 void {{v8_class}}::visitDOMWrapper(void* object, const v8::Persistent<v8::Object >& wrapper, v8::Isolate* isolate) 703 void {{v8_class}}::visitDOMWrapper(void* object, const v8::Persistent<v8::Object >& wrapper, v8::Isolate* isolate)
704 { 704 {
705 {{cpp_class}}* impl = fromInternalPointer(object); 705 {{cpp_class}}* impl = fromInternalPointer(object);
706 {% if set_wrapper_reference_to_list %} 706 {% if set_wrapper_reference_to_list %}
707 v8::Local<v8::Object> creationContext = v8::Local<v8::Object>::New(isolate, wrapper); 707 v8::Local<v8::Object> creationContext = v8::Local<v8::Object>::New(isolate, wrapper);
708 V8WrapperInstantiationScope scope(creationContext, isolate); 708 V8WrapperInstantiationScope scope(creationContext, isolate);
709 {% for set_wrapper_reference_to in set_wrapper_reference_to_list %} 709 {% for set_wrapper_reference_to in set_wrapper_reference_to_list %}
710 {{set_wrapper_reference_to.cpp_type}} {{set_wrapper_reference_to.name}} = im pl->{{set_wrapper_reference_to.name}}(); 710 {{set_wrapper_reference_to.cpp_type}} {{set_wrapper_reference_to.name}} = im pl->{{set_wrapper_reference_to.name}}();
711 if ({{set_wrapper_reference_to.name}}) { 711 if ({{set_wrapper_reference_to.name}}) {
712 ASSERT(DOMDataStore::containsWrapper<{{set_wrapper_reference_to.v8_type} }>({{set_wrapper_reference_to.name}}, isolate)); 712 if (!DOMDataStore::containsWrapper<{{set_wrapper_reference_to.v8_type}}> ({{set_wrapper_reference_to.name}}, isolate))
713 wrap({{set_wrapper_reference_to.name}}, creationContext, isolate);
713 DOMDataStore::setWrapperReference<{{set_wrapper_reference_to.v8_type}}>( wrapper, {{set_wrapper_reference_to.name}}, isolate); 714 DOMDataStore::setWrapperReference<{{set_wrapper_reference_to.v8_type}}>( wrapper, {{set_wrapper_reference_to.name}}, isolate);
714 } 715 }
715 {% endfor %} 716 {% endfor %}
716 {% endif %} 717 {% endif %}
717 {% if reachable_node_function %} 718 {% if reachable_node_function %}
718 // The {{reachable_node_function}}() method may return a reference or a poin ter. 719 // The {{reachable_node_function}}() method may return a reference or a poin ter.
719 if (Node* owner = WTF::getPtr(impl->{{reachable_node_function}}())) { 720 if (Node* owner = WTF::getPtr(impl->{{reachable_node_function}}())) {
720 Node* root = V8GCController::opaqueRootForGC(owner, isolate); 721 Node* root = V8GCController::opaqueRootForGC(owner, isolate);
721 isolate->SetReferenceFromGroup(v8::UniqueId(reinterpret_cast<intptr_t>(r oot)), wrapper); 722 isolate->SetReferenceFromGroup(v8::UniqueId(reinterpret_cast<intptr_t>(r oot)), wrapper);
722 return; 723 return;
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
1334 {% endif %} 1335 {% endif %}
1335 } 1336 }
1336 1337
1337 template<> 1338 template<>
1338 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c reationContext, v8::Isolate* isolate) 1339 v8::Handle<v8::Value> toV8NoInline({{cpp_class}}* impl, v8::Handle<v8::Object> c reationContext, v8::Isolate* isolate)
1339 { 1340 {
1340 return toV8(impl, creationContext, isolate); 1341 return toV8(impl, creationContext, isolate);
1341 } 1342 }
1342 1343
1343 {% endblock %} 1344 {% endblock %}
OLDNEW
« no previous file with comments | « no previous file | Source/bindings/tests/results/V8TestInterface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698