NPObject* NPRuntimeObjectMap::getOrCreateNPObject(JSGlobalData& globalData, JSObject* jsObject) { // If this is a JSNPObject, we can just get its underlying NPObject. if (jsObject->classInfo() == &JSNPObject::s_info) { JSNPObject* jsNPObject = static_cast<JSNPObject*>(jsObject); NPObject* npObject = jsNPObject->npObject(); retainNPObject(npObject); return npObject; } // First, check if we already know about this object. if (NPJSObject* npJSObject = m_npJSObjects.get(jsObject)) { retainNPObject(npJSObject); return npJSObject; } NPJSObject* npJSObject = NPJSObject::create(globalData, this, jsObject); m_npJSObjects.set(jsObject, npJSObject); return npJSObject; }
NPObject* NPRuntimeObjectMap::getOrCreateNPObject(VM& vm, JSObject* jsObject) { // If this is a JSNPObject, we can just get its underlying NPObject. if (jsObject->classInfo() == JSNPObject::info()) { JSNPObject* jsNPObject = jsCast<JSNPObject*>(jsObject); NPObject* npObject = jsNPObject->npObject(); retainNPObject(npObject); return npObject; } // First, check if we already know about this object. if (NPJSObject* npJSObject = m_npJSObjects.get(jsObject)) { retainNPObject(npJSObject); return npJSObject; } NPJSObject* npJSObject = NPJSObject::create(vm, this, jsObject); m_npJSObjects.set(jsObject, npJSObject); return npJSObject; }