[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

andersca at apple.com andersca at apple.com
Wed Dec 22 11:32:52 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit e40da1068e8976888c8988ab66108237d8b7f6a9
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Jul 29 00:14:08 2010 +0000

    Implement NPN_InvokeDefault and NPN_Construct
    https://bugs.webkit.org/show_bug.cgi?id=43160
    
    Reviewed by Sam Weinig.
    
    WebKit2:
    
    * WebProcess/Plugins/NPJSObject.cpp:
    (WebKit::NPJSObject::invoke):
    Just call invoke directly.
    
    (WebKit::NPJSObject::invokeDefault):
    Call invoke.
    
    (WebKit::NPJSObject::construct):
    Implement this.
    
    (WebKit::NPJSObject::invoke):
    Add new invoke overload that takes the function as a JSValue.
    
    (WebKit::NPJSObject::npClass):
    Add NP_Construct.
    
    (WebKit::NPJSObject::NP_InvokeDefault):
    Call NPJSObject::invokeDefault.
    
    (WebKit::NPJSObject::NP_Construct):
    Call NPJSObject::construct.
    
    * WebProcess/Plugins/NPJSObject.h:
    * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
    (WebKit::NPN_GetValue):
    Handle the Core Animation drawing model and the Carbon event model.
    
    (WebKit::NPN_InvokeDefault):
    Call the NPClass::invokeDefault function.
    
    (WebKit::NPN_Construct):
    Call the NPClass::construct function.
    
    LayoutTests:
    
    * platform/mac-wk2/Skipped:
    Remove plugins/npruntime/invoke-default.html
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64246 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 57f5ca1..071d79e 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,13 @@
+2010-07-28  Anders Carlsson  <andersca at apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Implement NPN_InvokeDefault and NPN_Construct
+        https://bugs.webkit.org/show_bug.cgi?id=43160
+
+        * platform/mac-wk2/Skipped:
+        Remove plugins/npruntime/invoke-default.html
+
 2010-07-28  Tony Chang  <tony at chromium.org>
 
         Reviewed by Ojan Vafai.
diff --git a/LayoutTests/platform/mac-wk2/Skipped b/LayoutTests/platform/mac-wk2/Skipped
index 593d8dd..87a0957 100644
--- a/LayoutTests/platform/mac-wk2/Skipped
+++ b/LayoutTests/platform/mac-wk2/Skipped
@@ -1414,7 +1414,6 @@ plugins/netscape-plugin-setwindow-size.html
 plugins/npruntime/bindings-test.html
 plugins/npruntime/enumerate.html
 plugins/npruntime/get-property-return-value.html
-plugins/npruntime/invoke-default.html
 plugins/npruntime/npruntime.html
 plugins/npruntime/round-trip-npobject.html
 plugins/override-node-method.html
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 7ef19eb..91e9d24 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -2,6 +2,46 @@
 
         Reviewed by Sam Weinig.
 
+        Implement NPN_InvokeDefault and NPN_Construct
+        https://bugs.webkit.org/show_bug.cgi?id=43160
+
+        * WebProcess/Plugins/NPJSObject.cpp:
+        (WebKit::NPJSObject::invoke):
+        Just call invoke directly.
+
+        (WebKit::NPJSObject::invokeDefault):
+        Call invoke.
+
+        (WebKit::NPJSObject::construct):
+        Implement this.
+
+        (WebKit::NPJSObject::invoke):
+        Add new invoke overload that takes the function as a JSValue.
+
+        (WebKit::NPJSObject::npClass):
+        Add NP_Construct.
+
+        (WebKit::NPJSObject::NP_InvokeDefault):
+        Call NPJSObject::invokeDefault.
+
+        (WebKit::NPJSObject::NP_Construct):
+        Call NPJSObject::construct.
+
+        * WebProcess/Plugins/NPJSObject.h:
+        * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
+        (WebKit::NPN_GetValue):
+        Handle the Core Animation drawing model and the Carbon event model.
+
+        (WebKit::NPN_InvokeDefault):
+        Call the NPClass::invokeDefault function.
+
+        (WebKit::NPN_Construct):
+        Call the NPClass::construct function.
+
+2010-07-28  Anders Carlsson  <andersca at apple.com>
+
+        Reviewed by Sam Weinig.
+
         Implement NPN_Invoke
         https://bugs.webkit.org/show_bug.cgi?id=43158
 
diff --git a/WebKit2/WebProcess/Plugins/NPJSObject.cpp b/WebKit2/WebProcess/Plugins/NPJSObject.cpp
index 0ee95c2..46aeb79 100644
--- a/WebKit2/WebProcess/Plugins/NPJSObject.cpp
+++ b/WebKit2/WebProcess/Plugins/NPJSObject.cpp
@@ -116,25 +116,19 @@ bool NPJSObject::invoke(NPIdentifier methodName, const NPVariant* arguments, uin
     JSLock lock(SilenceAssertionsOnly);
 
     JSValue function = m_jsObject->get(exec, identifierFromIdentifierRep(exec, identifierRep));
-    CallData callData;
-    CallType callType = getCallData(function, callData);
-    if (callType == CallTypeNone)
-        return false;
+    return invoke(exec, function, arguments, argumentCount, result);
+}
 
-    // Convert the passed in arguments.
-    MarkedArgumentBuffer argumentList;
-    for (uint32_t i = 0; i < argumentCount; ++i)
-        argumentList.append(m_objectMap->convertNPVariantToJSValue(exec, arguments[i]));
+bool NPJSObject::invokeDefault(const NPVariant *arguments, uint32_t argumentCount, NPVariant *result)
+{
+    ExecState* exec = m_objectMap->globalExec();
+    if (!exec)
+        return false;
 
-    exec->globalData().timeoutChecker.start();
-    JSValue value = JSC::call(exec, function, callType, callData, m_jsObject, argumentList);
-    exec->globalData().timeoutChecker.stop();
+    JSLock lock(SilenceAssertionsOnly);
 
-    // Convert and return the result of the function call.
-    m_objectMap->convertJSValueToNPVariant(exec, value, *result);
-    exec->clearException();
-    
-    return true;
+    JSValue function = m_jsObject;
+    return invoke(exec, function, arguments, argumentCount, result);
 }
 
 bool NPJSObject::hasProperty(NPIdentifier identifier)
@@ -177,6 +171,58 @@ bool NPJSObject::getProperty(NPIdentifier propertyName, NPVariant* result)
     return true;
 }
 
+bool NPJSObject::construct(const NPVariant *arguments, uint32_t argumentCount, NPVariant *result)
+{
+    ExecState* exec = m_objectMap->globalExec();
+    if (!exec)
+        return false;
+
+    JSLock lock(SilenceAssertionsOnly);
+
+    ConstructData constructData;
+    ConstructType constructType = getConstructData(m_jsObject, constructData);
+    if (constructType == ConstructTypeNone)
+        return false;
+
+    // Convert the passed in arguments.
+    MarkedArgumentBuffer argumentList;
+    for (uint32_t i = 0; i < argumentCount; ++i)
+        argumentList.append(m_objectMap->convertNPVariantToJSValue(exec, arguments[i]));
+
+    exec->globalData().timeoutChecker.start();
+    JSValue value = JSC::construct(exec, m_jsObject, constructType, constructData, argumentList);
+    exec->globalData().timeoutChecker.stop();
+    
+    // Convert and return the new object.
+    m_objectMap->convertJSValueToNPVariant(exec, value, *result);
+    exec->clearException();
+
+    return true;
+}
+
+bool NPJSObject::invoke(ExecState* exec, JSValue function, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result)
+{
+    CallData callData;
+    CallType callType = getCallData(function, callData);
+    if (callType == CallTypeNone)
+        return false;
+
+    // Convert the passed in arguments.
+    MarkedArgumentBuffer argumentList;
+    for (uint32_t i = 0; i < argumentCount; ++i)
+        argumentList.append(m_objectMap->convertNPVariantToJSValue(exec, arguments[i]));
+
+    exec->globalData().timeoutChecker.start();
+    JSValue value = JSC::call(exec, function, callType, callData, m_jsObject, argumentList);
+    exec->globalData().timeoutChecker.stop();
+
+    // Convert and return the result of the function call.
+    m_objectMap->convertJSValueToNPVariant(exec, value, *result);
+    exec->clearException();
+    
+    return true;
+}
+
 NPClass* NPJSObject::npClass()
 {
     static NPClass npClass = {
@@ -192,7 +238,7 @@ NPClass* NPJSObject::npClass()
         NP_SetProperty,
         0,
         0,
-        0
+        NP_Construct
     };
 
     return &npClass;
@@ -221,10 +267,9 @@ bool NPJSObject::NP_Invoke(NPObject* npObject, NPIdentifier methodName, const NP
     return toNPJSObject(npObject)->invoke(methodName, arguments, argumentCount, result);
 }
     
-bool NPJSObject::NP_InvokeDefault(NPObject*, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result)
+bool NPJSObject::NP_InvokeDefault(NPObject* npObject, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result)
 {
-    notImplemented();
-    return false;
+    return toNPJSObject(npObject)->invokeDefault(arguments, argumentCount, result);
 }
     
 bool NPJSObject::NP_HasProperty(NPObject* npObject, NPIdentifier propertyName)
@@ -243,4 +288,9 @@ bool NPJSObject::NP_SetProperty(NPObject*, NPIdentifier propertyName, const NPVa
     return false;
 }
 
+bool NPJSObject::NP_Construct(NPObject* npObject, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result)
+{
+    return toNPJSObject(npObject)->construct(arguments, argumentCount, result);
+}
+    
 } // namespace WebKit
diff --git a/WebKit2/WebProcess/Plugins/NPJSObject.h b/WebKit2/WebProcess/Plugins/NPJSObject.h
index 5029247..c9843c7 100644
--- a/WebKit2/WebProcess/Plugins/NPJSObject.h
+++ b/WebKit2/WebProcess/Plugins/NPJSObject.h
@@ -60,19 +60,24 @@ private:
     void initialize(NPRuntimeObjectMap*, JSC::JSObject* jsObject);
 
     bool hasMethod(NPIdentifier methodName);
-    bool invoke(NPIdentifier methodName, const NPVariant *arguments, uint32_t argumentCount, NPVariant *result);
+    bool invoke(NPIdentifier methodName, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result);
+    bool invokeDefault(const NPVariant* arguments, uint32_t argumentCount, NPVariant* result);
     bool hasProperty(NPIdentifier propertyName);
     bool getProperty(NPIdentifier propertyName, NPVariant* result);
+    bool construct(const NPVariant* arguments, uint32_t argumentCount, NPVariant* result);
+
+    bool invoke(JSC::ExecState*, JSC::JSValue function, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result);
 
     static NPClass* npClass();
     static NPObject* NP_Allocate(NPP, NPClass*);
     static void NP_Deallocate(NPObject*);
     static bool NP_HasMethod(NPObject*, NPIdentifier methodName);
-    static bool NP_Invoke(NPObject*, NPIdentifier methodName, const NPVariant *arguments, uint32_t argumentCount, NPVariant *result);
-    static bool NP_InvokeDefault(NPObject*, const NPVariant *arguments, uint32_t argumentCount, NPVariant *result);
+    static bool NP_Invoke(NPObject*, NPIdentifier methodName, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result);
+    static bool NP_InvokeDefault(NPObject*, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result);
     static bool NP_HasProperty(NPObject*, NPIdentifier propertyName);
     static bool NP_GetProperty(NPObject*, NPIdentifier propertyName, NPVariant* result);
     static bool NP_SetProperty(NPObject*, NPIdentifier propertyName, const NPVariant* value);
+    static bool NP_Construct(NPObject*, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result);
     
     NPRuntimeObjectMap* m_objectMap;
     JSC::ProtectedPtr<JSC::JSObject> m_jsObject;
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp b/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp
index 501d4fd..3a396ec 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp
@@ -407,12 +407,22 @@ static NPError NPN_GetValue(NPP npp, NPNVariable variable, void *value)
 #if PLATFORM(MAC)
         case NPNVsupportsCoreGraphicsBool:
             // Always claim to support the Core Graphics drawing model.
-            *(NPBool *)value = true;
+            *(NPBool*)value = true;
+            break;
+
+        case NPNVsupportsCoreAnimationBool:
+            // FIXME: We should support the Core Animation drawing model.
+            *(NPBool*)value = false;
             break;
 
         case NPNVsupportsCocoaBool:
             // Always claim to support the Cocoa event model.
-            *(NPBool *)value = true;
+            *(NPBool*)value = true;
+            break;
+
+       case NPNVsupportsCarbonBool:
+            // FIXME: We should support the Carbon event model.
+            *(NPBool*)value = false;
             break;
 #endif
         default:
@@ -538,9 +548,11 @@ static bool NPN_Invoke(NPP, NPObject *npObject, NPIdentifier methodName, const N
     return false;
 }
 
-static bool NPN_InvokeDefault(NPP npp, NPObject *npobj, const NPVariant *args, uint32_t argCount, NPVariant *result)
+static bool NPN_InvokeDefault(NPP, NPObject *npObject, const NPVariant *arguments, uint32_t argumentCount, NPVariant *result)
 {
-    notImplemented();
+    if (npObject->_class->invokeDefault)
+        return npObject->_class->invokeDefault(npObject, arguments, argumentCount, result);
+
     return false;
 }
 
@@ -620,9 +632,11 @@ static void NPN_PluginThreadAsyncCall(NPP instance, void (*func) (void*), void*
     notImplemented();
 }
 
-static bool NPN_Construct(NPP npp, NPObject* npobj, const NPVariant* args, uint32_t argCount, NPVariant* result)
+static bool NPN_Construct(NPP, NPObject* npObject, const NPVariant* arguments, uint32_t argumentCount, NPVariant* result)
 {
-    notImplemented();
+    if (NP_CLASS_STRUCT_VERSION_HAS_CTOR(npObject->_class) && npObject->_class->construct)
+        return npObject->_class->construct(npObject, arguments, argumentCount, result);
+
     return false;
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list