Ignore:
Timestamp:
Mar 27, 2007, 4:38:23 PM (18 years ago)
Author:
andersca
Message:

JavaScriptCore:

Reviewed by Geoff.

  • bindings/NP_jsobject.cpp: (_NPN_InvokeDefault): Call JSObject:call for native JavaScript objects.

LayoutTests:

Reviewed by Geoff.

Add NPN_InvokeDefault test.


  • plugins/netscape-invoke-default-expected.txt: Added.
  • plugins/netscape-invoke-default.html: Added.

WebKitTools:

Reviewed by Geoff.

  • DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: (pluginInvoke): Add new function which takes a function and calls it using NPN_InvokeDefault.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/bindings/NP_jsobject.cpp

    r19183 r20544  
    103103bool _NPN_InvokeDefault(NPP, NPObject* o, const NPVariant* args, uint32_t argCount, NPVariant* result)
    104104{
    105     if (o->_class == NPScriptObjectClass)
    106         // No notion of a default function on JS objects. Just return false, can't handle.
    107         return false;
     105    if (o->_class == NPScriptObjectClass) {
     106        JavaScriptObject* obj = (JavaScriptObject*)o;
     107        if (!_isSafeScript(obj))
     108            return false;       
     109       
     110        // Lookup the function object.
     111        RootObject* rootObject = obj->rootObject;
     112        if (!rootObject || !rootObject->isValid())
     113            return false;
     114       
     115        ExecState* exec = rootObject->interpreter()->globalExec();
     116        JSLock lock;
     117       
     118        // Call the function object.
     119        JSObject *funcImp = static_cast<JSObject*>(obj->imp);
     120        List argList = listFromVariantArgs(exec, args, argCount);
     121        JSValue *resultV = funcImp->call (exec, funcImp, argList);
     122       
     123        // Convert and return the result of the function call.
     124        convertValueToNPVariant(exec, resultV, result);
     125        return true;       
     126    }
     127
    108128    if (o->_class->invokeDefault)
    109129        return o->_class->invokeDefault(o, args, argCount, result);   
Note: See TracChangeset for help on using the changeset viewer.