// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // NPAPI interactive UI tests. #include "base/file_path.h" #include "base/test/test_timeouts.h" #include "chrome/test/automation/automation_proxy.h" #include "chrome/test/automation/window_proxy.h" #include "chrome/test/base/ui_test_utils.h" #include "chrome/test/ui/npapi_test_helper.h" #include "content/browser/net/url_request_mock_http_job.h" #include "ui/base/keycodes/keyboard_codes.h" const char kTestCompleteCookie[] = "status"; const char kTestCompleteSuccess[] = "OK"; static const FilePath::CharType* kTestDir = FILE_PATH_LITERAL("npapi"); // Tests if a plugin executing a self deleting script in the context of // a synchronous mousemove works correctly TEST_F(NPAPIVisiblePluginTester, SelfDeletePluginInvokeInSynchronousMouseMove) { show_window_ = true; const FilePath kTestDir(FILE_PATH_LITERAL("npapi")); const FilePath test_case( FILE_PATH_LITERAL("execute_script_delete_in_mouse_move.html")); GURL url = ui_test_utils::GetTestUrl(kTestDir, test_case); NavigateToURL(url); scoped_refptr window(automation()->GetActiveWindow()); gfx::Point cursor_position(150, 250); window->SimulateOSMouseMove(cursor_position); WaitForFinish("execute_script_delete_in_mouse_move", "1", url, kTestCompleteCookie, kTestCompleteSuccess, TestTimeouts::action_max_timeout_ms()); } // Flaky, http://crbug.com/60071. TEST_F(NPAPIVisiblePluginTester, FLAKY_GetURLRequest404Response) { GURL url(URLRequestMockHTTPJob::GetMockUrl( FilePath(FILE_PATH_LITERAL( "npapi/plugin_url_request_404.html")))); NavigateToURL(url); // Wait for the alert dialog and then close it. automation()->WaitForAppModalDialog(); scoped_refptr window(automation()->GetActiveWindow()); ASSERT_TRUE(window.get()); ASSERT_TRUE(window->SimulateOSKeyPress(ui::VKEY_ESCAPE, 0)); WaitForFinish("geturl_404_response", "1", url, kTestCompleteCookie, kTestCompleteSuccess, TestTimeouts::action_max_timeout_ms()); } // Tests if a plugin executing a self deleting script using Invoke with // a modal dialog showing works without crashing or hanging // Disabled, flakily exceeds timeout, http://crbug.com/46257. TEST_F(NPAPIVisiblePluginTester, DISABLED_SelfDeletePluginInvokeAlert) { const FilePath test_case( FILE_PATH_LITERAL("self_delete_plugin_invoke_alert.html")); GURL url = ui_test_utils::GetTestUrl(FilePath(kTestDir), test_case); ASSERT_NO_FATAL_FAILURE(NavigateToURL(url)); // Wait for the alert dialog and then close it. ASSERT_TRUE(automation()->WaitForAppModalDialog()); scoped_refptr window(automation()->GetActiveWindow()); ASSERT_TRUE(window.get()); ASSERT_TRUE(window->SimulateOSKeyPress(ui::VKEY_ESCAPE, 0)); WaitForFinish("self_delete_plugin_invoke_alert", "1", url, kTestCompleteCookie, kTestCompleteSuccess, TestTimeouts::action_max_timeout_ms()); }