+2006-07-10 Tim Omernick <timo@apple.com>
+
+ Reviewed by Beth Dakin.
+
+ <http://bugzilla.opendarwin.org/show_bug.cgi?id=9844>:
+ Add DOM access test to DumpRenderTree's Netscape plug-in
+
+ * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c:
+ (testDOMAccess):
+ (pluginInvoke):
+
2006-07-10 Mark Rowe <opendarwin.org@bdash.net.nz>
Reviewed by Darin.
#define ID_TEST_CALLBACK_METHOD 0
#define ID_TEST_GETURL 1
#define ID_REMOVE_DEFAULT_METHOD 2
+#define ID_TEST_DOM_ACCESS 3
-#define NUM_METHOD_IDENTIFIERS 3
+#define NUM_METHOD_IDENTIFIERS 4
static NPIdentifier pluginMethodIdentifiers[NUM_METHOD_IDENTIFIERS];
static const NPUTF8 *pluginMethodIdentifierNames[NUM_METHOD_IDENTIFIERS] = {
"testCallback",
"getURL",
"removeDefaultMethod",
+ "testDOMAccess"
};
static NPUTF8* createCStringFromNPVariant(const NPVariant *variant)
return false;
}
+static void testDOMAccess(PluginObject *obj)
+{
+ // Get plug-in's DOM element
+ NPObject *elementObject;
+ if (browser->getvalue(obj->npp, NPNVPluginElementNPObject, &elementObject) == NPERR_NO_ERROR) {
+ // Get style
+ NPVariant styleVariant;
+ NPIdentifier styleIdentifier = browser->getstringidentifier("style");
+ if (browser->getproperty(obj->npp, elementObject, styleIdentifier, &styleVariant) && NPVARIANT_IS_OBJECT(styleVariant)) {
+ // Set style.border
+ NPIdentifier borderIdentifier = browser->getstringidentifier("border");
+ NPVariant borderVariant;
+ STRINGZ_TO_NPVARIANT("3px solid red", borderVariant);
+ browser->setproperty(obj->npp, NPVARIANT_TO_OBJECT(styleVariant), borderIdentifier, &borderVariant);
+ browser->releasevariantvalue(&styleVariant);
+ }
+
+ browser->releaseobject(elementObject);
+ }
+}
+
static bool pluginInvoke(NPObject *header, NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result)
{
PluginObject *obj = (PluginObject *)header;
pluginClass.invokeDefault = 0;
VOID_TO_NPVARIANT(*result);
return true;
+ } else if (name == pluginMethodIdentifiers[ID_TEST_DOM_ACCESS]) {
+ testDOMAccess(obj);
+ VOID_TO_NPVARIANT(*result);
+ return true;
}
return false;