bool JSValueIsObjectOfClass(JSContextRef, JSValueRef value, JSClassRef jsClass) { JSValuePtr jsValue = toJS(value); if (JSObject* o = jsValue.getObject()) { if (o->inherits(&JSCallbackObject<JSGlobalObject>::info)) return static_cast<JSCallbackObject<JSGlobalObject>*>(o)->inherits(jsClass); else if (o->inherits(&JSCallbackObject<JSObject>::info)) return static_cast<JSCallbackObject<JSObject>*>(o)->inherits(jsClass); } return false; }
NPObject* ScriptController::createScriptObjectForPluginElement(HTMLPlugInElement* plugin) { // Can't create NPObjects when JavaScript is disabled if (!isEnabled()) return _NPN_CreateNoScriptObject(); // Create a JSObject bound to this element JSLock lock(false); ExecState* exec = globalObject()->globalExec(); JSValuePtr jsElementValue = toJS(exec, plugin); if (!jsElementValue || !jsElementValue.isObject()) return _NPN_CreateNoScriptObject(); // Wrap the JSObject in an NPObject return _NPN_CreateScriptObject(0, jsElementValue.getObject(), bindingRootObject()); }