[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