diff options
Diffstat (limited to 'chrome/test')
-rw-r--r-- | chrome/test/data/npapi/execute_script_delete_in_mouse_move.html | 39 | ||||
-rw-r--r-- | chrome/test/ui/npapi_uitest.cpp | 38 |
2 files changed, 76 insertions, 1 deletions
diff --git a/chrome/test/data/npapi/execute_script_delete_in_mouse_move.html b/chrome/test/data/npapi/execute_script_delete_in_mouse_move.html new file mode 100644 index 0000000..a82cde7 --- /dev/null +++ b/chrome/test/data/npapi/execute_script_delete_in_mouse_move.html @@ -0,0 +1,39 @@ +<html> + +<head> +<script src="npapi.js"></script> + +<script> +function DeletePluginWithinScript() { + var plugin_div = document.getElementById("PluginDiv"); + plugin_div.innerHTML = "Object Deleted"; + onSuccess("execute_script_delete_in_mouse_move", 1); +} +</script> +</head> + +<body> +<div id="statusPanel" style="border: 1px solid red; width: 100%"> +Test running.... +</div> + + +NPObject Proxy Test<p> + +Tests the case where a plugin instance is deleted in the context +of a synchronous mouse event. + +<DIV ID=PluginDiv> +<embed type="application/vnd.npapi-test" + src="foo" + name="execute_script_delete_in_mouse_move" + id="1" + mode="np_embed" +> +</DIV> +<script> + var height = document.body.offsetHeight; +</script> + +</body> +</html> diff --git a/chrome/test/ui/npapi_uitest.cpp b/chrome/test/ui/npapi_uitest.cpp index bce1497..58c6574 100644 --- a/chrome/test/ui/npapi_uitest.cpp +++ b/chrome/test/ui/npapi_uitest.cpp @@ -279,4 +279,40 @@ TEST_F(NPAPIVisiblePluginTester, OpenPopupWindowWithPlugin) { WaitForFinish("plugin_popup_with_plugin_target", "1", url, kTestCompleteCookie, kTestCompleteSuccess, kShortWaitTimeout); -}
\ No newline at end of file +} + +// Tests if a plugin executing a self deleting script in the context of +// a synchronous mousemove works correctly +TEST_F(NPAPIVisiblePluginTester, SelfDeletePluginInvokeInSynchronousMouseMove) { + if (!UITest::in_process_plugins() && !UITest::in_process_renderer()) { + scoped_ptr<TabProxy> tab_proxy(GetActiveTab()); + HWND tab_window = NULL; + tab_proxy->GetHWND(&tab_window); + + EXPECT_TRUE(IsWindow(tab_window)); + + show_window_ = true; + std::wstring test_case = L"execute_script_delete_in_mouse_move.html"; + GURL url = GetTestUrl(L"npapi", test_case); + NavigateToURL(url); + + POINT cursor_position = {130, 130}; + ClientToScreen(tab_window, &cursor_position); + + double screen_width = ::GetSystemMetrics( SM_CXSCREEN ) - 1; + double screen_height = ::GetSystemMetrics( SM_CYSCREEN ) - 1; + double location_x = cursor_position.x * (65535.0f / screen_width); + double location_y = cursor_position.y * (65535.0f / screen_height); + + INPUT input_info = {0}; + input_info.type = INPUT_MOUSE; + input_info.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE; + input_info.mi.dx = static_cast<long>(location_x); + input_info.mi.dy = static_cast<long>(location_y); + ::SendInput(1, &input_info, sizeof(INPUT)); + + WaitForFinish("execute_script_delete_in_mouse_move", "1", url, + kTestCompleteCookie, kTestCompleteSuccess, + kShortWaitTimeout); + } +} |