summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authorjnd@chromium.org <jnd@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-09 16:08:01 +0000
committerjnd@chromium.org <jnd@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-09 16:08:01 +0000
commit2233a372c11e86d3268a3bbcdd8f7f1d305243eb (patch)
treec79fcc5ad550557c7c4b2e7a3556a5c51636f29c /webkit
parent9aa5f3b97f4b388310e6edd4ca1a1db012dfd6b1 (diff)
downloadchromium_src-2233a372c11e86d3268a3bbcdd8f7f1d305243eb.zip
chromium_src-2233a372c11e86d3268a3bbcdd8f7f1d305243eb.tar.gz
chromium_src-2233a372c11e86d3268a3bbcdd8f7f1d305243eb.tar.bz2
Implement new test logic in Chromium's TestNetscape Plugin to pass plugins/plugin-initiate-popup-window.html
BUG=48033 TEST=plugins/plugin-initiate-popup-window.html Review URL: http://codereview.chromium.org/2815041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51966 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r--webkit/tools/npapi_layout_test_plugin/PluginObject.cpp3
-rw-r--r--webkit/tools/npapi_layout_test_plugin/PluginObject.h2
-rw-r--r--webkit/tools/npapi_layout_test_plugin/main.cpp32
3 files changed, 36 insertions, 1 deletions
diff --git a/webkit/tools/npapi_layout_test_plugin/PluginObject.cpp b/webkit/tools/npapi_layout_test_plugin/PluginObject.cpp
index 884a918..83a4fc4 100644
--- a/webkit/tools/npapi_layout_test_plugin/PluginObject.cpp
+++ b/webkit/tools/npapi_layout_test_plugin/PluginObject.cpp
@@ -988,6 +988,9 @@ static NPObject *pluginAllocate(NPP npp, NPClass *theClass)
newInstance->testWindowOpen = false;
newInstance->testKeyboardFocusForPlugins = false;
+ newInstance->evaluateScriptOnMouseDownOrKeyDown = NULL;
+ newInstance->mouseDownForEvaluateScript = false;
+
return (NPObject*)newInstance;
}
diff --git a/webkit/tools/npapi_layout_test_plugin/PluginObject.h b/webkit/tools/npapi_layout_test_plugin/PluginObject.h
index 8cd63ef..ec684bd 100644
--- a/webkit/tools/npapi_layout_test_plugin/PluginObject.h
+++ b/webkit/tools/npapi_layout_test_plugin/PluginObject.h
@@ -39,6 +39,7 @@ typedef struct {
NPBool testWindowOpen;
NPBool testDocumentOpenInDestroyStream;
NPBool testKeyboardFocusForPlugins;
+ NPBool mouseDownForEvaluateScript;
char* onStreamLoad;
char* onStreamDestroy;
char* onURLNotify;
@@ -46,6 +47,7 @@ typedef struct {
char* firstHeaders;
char* lastUrl;
char* lastHeaders;
+ char* evaluateScriptOnMouseDownOrKeyDown;
} PluginObject;
extern NPClass *getPluginClass(void);
diff --git a/webkit/tools/npapi_layout_test_plugin/main.cpp b/webkit/tools/npapi_layout_test_plugin/main.cpp
index c061adb..3ebdada 100644
--- a/webkit/tools/npapi_layout_test_plugin/main.cpp
+++ b/webkit/tools/npapi_layout_test_plugin/main.cpp
@@ -141,8 +141,20 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc
obj->testDocumentOpenInDestroyStream = true;
} else if (strcasecmp(argn[i], "testwindowopen") == 0) {
obj->testWindowOpen = true;
- } else if (strcasecmp(argn[i], "src") == 0 && strstr(argv[i], "plugin-document-has-focus.pl"))
+ } else if (strcasecmp(argn[i], "src") == 0 && strstr(argv[i], "plugin-document-has-focus.pl")) {
obj->testKeyboardFocusForPlugins = true;
+ } else if (strcasecmp(argn[i], "evaluatescript") == 0) {
+ char* script = argv[i];
+ if (script == strstr(script, "mouse::")) {
+ obj->mouseDownForEvaluateScript = true;
+ obj->evaluateScriptOnMouseDownOrKeyDown = strdup(script + sizeof("mouse::") - 1);
+ } else if (script == strstr(script, "key::")) {
+ obj->evaluateScriptOnMouseDownOrKeyDown = strdup(script + sizeof("key::") - 1);
+ }
+ // When testing evaluate script on mouse-down or key-down, allow event logging.
+ if (obj->evaluateScriptOnMouseDownOrKeyDown)
+ obj->eventLogging = true;
+ }
}
instance->pdata = obj;
@@ -288,6 +300,9 @@ int16_t NPP_HandleEvent(NPP instance, void *event)
case WM_MBUTTONDOWN:
case WM_RBUTTONDOWN:
log(instance, "mouseDown at (%d, %d)", x, y);
+ if (obj->evaluateScriptOnMouseDownOrKeyDown &&
+ obj->mouseDownForEvaluateScript)
+ executeScript(obj, obj->evaluateScriptOnMouseDownOrKeyDown);
break;
case WM_LBUTTONUP:
case WM_MBUTTONUP:
@@ -312,6 +327,9 @@ int16_t NPP_HandleEvent(NPP instance, void *event)
break;
case WM_KEYDOWN:
log(instance, "keyDown '%c'", MapVirtualKey(evt->wParam, MAPVK_VK_TO_CHAR));
+ if (obj->evaluateScriptOnMouseDownOrKeyDown &&
+ !obj->mouseDownForEvaluateScript)
+ executeScript(obj, obj->evaluateScriptOnMouseDownOrKeyDown);
break;
case WM_SETCURSOR:
break;
@@ -334,6 +352,9 @@ int16_t NPP_HandleEvent(NPP instance, void *event)
switch (evt->type) {
case ButtonPress:
log(instance, "mouseDown at (%d, %d)", bpress_evt->x, bpress_evt->y);
+ if (obj->evaluateScriptOnMouseDownOrKeyDown &&
+ obj->mouseDownForEvaluateScript)
+ executeScript(obj, obj->evaluateScriptOnMouseDownOrKeyDown);
break;
case ButtonRelease:
log(instance, "mouseUp at (%d, %d)", brelease_evt->x, brelease_evt->y);
@@ -341,6 +362,9 @@ int16_t NPP_HandleEvent(NPP instance, void *event)
case KeyPress:
// TODO: extract key code
log(instance, "NOTIMPLEMENTED: keyDown '%c'", ' ');
+ if (obj->evaluateScriptOnMouseDownOrKeyDown &&
+ !obj->mouseDownForEvaluateScript)
+ executeScript(obj, obj->evaluateScriptOnMouseDownOrKeyDown);
break;
case KeyRelease:
// TODO: extract key code
@@ -382,6 +406,9 @@ int16_t NPP_HandleEvent(NPP instance, void *event)
case mouseDown:
GlobalToLocal(&pt);
log(instance, "mouseDown at (%d, %d)", pt.h, pt.v);
+ if (obj->evaluateScriptOnMouseDownOrKeyDown &&
+ obj->mouseDownForEvaluateScript)
+ executeScript(obj, obj->evaluateScriptOnMouseDownOrKeyDown);
break;
case mouseUp:
GlobalToLocal(&pt);
@@ -389,6 +416,9 @@ int16_t NPP_HandleEvent(NPP instance, void *event)
break;
case keyDown:
log(instance, "keyDown '%c'", (char)(evt->message & 0xFF));
+ if (obj->evaluateScriptOnMouseDownOrKeyDown &&
+ !obj->mouseDownForEvaluateScript)
+ executeScript(obj, obj->evaluateScriptOnMouseDownOrKeyDown);
break;
case keyUp:
log(instance, "keyUp '%c'", (char)(evt->message & 0xFF));