OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved. |
3 * Copyright (C) 2007, 2008, 2009 Google, Inc. All rights reserved. | 3 * Copyright (C) 2007, 2008, 2009 Google, Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 V8NPObjectMap::iterator iter = v8NPObjectMap->find(v8ObjectHash); | 134 V8NPObjectMap::iterator iter = v8NPObjectMap->find(v8ObjectHash); |
135 if (iter != v8NPObjectMap->end()) { | 135 if (iter != v8NPObjectMap->end()) { |
136 V8NPObjectVector& objects = iter->value; | 136 V8NPObjectVector& objects = iter->value; |
137 for (size_t index = 0; index < objects.size(); ++index) { | 137 for (size_t index = 0; index < objects.size(); ++index) { |
138 V8NPObject* v8npObject = objects.at(index); | 138 V8NPObject* v8npObject = objects.at(index); |
139 if (v8npObject->v8Object == object && v8npObject->rootObject ==
root) { | 139 if (v8npObject->v8Object == object && v8npObject->rootObject ==
root) { |
140 _NPN_RetainObject(&v8npObject->object); | 140 _NPN_RetainObject(&v8npObject->object); |
141 return reinterpret_cast<NPObject*>(v8npObject); | 141 return reinterpret_cast<NPObject*>(v8npObject); |
142 } | 142 } |
143 } | 143 } |
| 144 objectVector = &iter->value; |
144 } else { | 145 } else { |
145 iter = v8NPObjectMap->set(v8ObjectHash, V8NPObjectVector()).iterator
; | 146 objectVector = &v8NPObjectMap->set(v8ObjectHash, V8NPObjectVector())
.iterator->value; |
146 } | 147 } |
147 objectVector = &iter->value; | |
148 } | 148 } |
149 | 149 |
150 V8NPObject* v8npObject = reinterpret_cast<V8NPObject*>(_NPN_CreateObject(npp
, &V8NPObjectClass)); | 150 V8NPObject* v8npObject = reinterpret_cast<V8NPObject*>(_NPN_CreateObject(npp
, &V8NPObjectClass)); |
151 // This is uninitialized memory, we need to clear it so that | 151 // This is uninitialized memory, we need to clear it so that |
152 // Persistent::Reset won't try to Dispose anything bogus. | 152 // Persistent::Reset won't try to Dispose anything bogus. |
153 new (&v8npObject->v8Object) v8::Persistent<v8::Object>(); | 153 new (&v8npObject->v8Object) v8::Persistent<v8::Object>(); |
154 v8npObject->v8Object.Reset(isolate, object); | 154 v8npObject->v8Object.Reset(isolate, object); |
155 v8npObject->rootObject = root; | 155 v8npObject->rootObject = root; |
156 | 156 |
157 if (objectVector) | 157 if (objectVector) |
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 | 604 |
605 convertV8ObjectToNPVariant(resultObject, npObject, result, isolate); | 605 convertV8ObjectToNPVariant(resultObject, npObject, result, isolate); |
606 return true; | 606 return true; |
607 } | 607 } |
608 | 608 |
609 if (NP_CLASS_STRUCT_VERSION_HAS_CTOR(npObject->_class) && npObject->_class->
construct) | 609 if (NP_CLASS_STRUCT_VERSION_HAS_CTOR(npObject->_class) && npObject->_class->
construct) |
610 return npObject->_class->construct(npObject, arguments, argumentCount, r
esult); | 610 return npObject->_class->construct(npObject, arguments, argumentCount, r
esult); |
611 | 611 |
612 return false; | 612 return false; |
613 } | 613 } |
OLD | NEW |