diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-14 23:40:32 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-14 23:40:32 +0000 |
commit | 6bc688d1136d35e7ea1ae6d47296abce9dee75b5 (patch) | |
tree | adcd4e70c28de0c550645632824dfb10a7f59ec1 /content | |
parent | 2314065e95af424b73ba587fccba11030d774909 (diff) | |
download | chromium_src-6bc688d1136d35e7ea1ae6d47296abce9dee75b5.zip chromium_src-6bc688d1136d35e7ea1ae6d47296abce9dee75b5.tar.gz chromium_src-6bc688d1136d35e7ea1ae6d47296abce9dee75b5.tar.bz2 |
Convert the remaining plugin_tests from ui_tests to browser_tests. Also remove the remaining references to ui_tests and plugin_tests from gypi files.
BUG=121574
Review URL: https://chromiumcodereview.appspot.com/10389111
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137010 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/browser/plugin_browsertest.cc | 192 |
1 files changed, 154 insertions, 38 deletions
diff --git a/content/browser/plugin_browsertest.cc b/content/browser/plugin_browsertest.cc index f35bbd4d9..c669b3c 100644 --- a/content/browser/plugin_browsertest.cc +++ b/content/browser/plugin_browsertest.cc @@ -11,6 +11,11 @@ #include "content/public/browser/browser_thread.h" #include "content/public/common/content_switches.h" #include "content/test/net/url_request_mock_http_job.h" +#include "webkit/plugins/plugin_switches.h" + +#if defined(OS_WIN) +#include "base/win/registry.h" +#endif using content::BrowserThread; @@ -31,7 +36,27 @@ class PluginTest : public InProcessBrowserTest { command_line->AppendSwitchASCII(switches::kJavaScriptFlags, "--expose_gc"); // For OpenPopupWindowWithPlugin. command_line->AppendSwitch(switches::kDisablePopupBlocking); -#if defined(OS_MACOSX) +#if defined(OS_WIN) + const testing::TestInfo* const test_info = + testing::UnitTest::GetInstance()->current_test_info(); + if (strcmp(test_info->name(), "MediaPlayerNew") == 0) { + // The installer adds our process names to the registry key below. Since + // the installer might not have run on this machine, add it manually. + base::win::RegKey regkey; + if (regkey.Open(HKEY_LOCAL_MACHINE, + L"Software\\Microsoft\\MediaPlayer\\ShimInclusionList", + KEY_WRITE) == ERROR_SUCCESS) { + regkey.CreateKey(L"BROWSER_TESTS.EXE", KEY_READ); + } + } else if (strcmp(test_info->name(), "MediaPlayerOld") == 0) { + // When testing the old WMP plugin, we need to force Chrome to not load + // the new plugin. + command_line->AppendSwitch(switches::kUseOldWMPPlugin); + } else if (strcmp(test_info->name(), "FlashSecurity") == 0) { + command_line->AppendSwitchASCII(switches::kTestSandbox, + "security_tests.dll"); + } +#elif defined(OS_MACOSX) FilePath plugin_dir; PathService::Get(base::DIR_MODULE, &plugin_dir); plugin_dir = plugin_dir.AppendASCII("plugins"); @@ -39,6 +64,15 @@ class PluginTest : public InProcessBrowserTest { // explicitly registered. command_line->AppendSwitchPath(switches::kExtraPluginDir, plugin_dir); #endif + + // TODO(jam): since these plugin tests are running under Chrome, we need to + // tell it to disable its security features for old plugins. Once this is + // running under content_browsertests, these flags won't be needed. + // http://crbug.com/90448 + // switches::kAllowOutdatedPlugins + command_line->AppendSwitch("allow-outdated-plugins"); + // switches::kAlwaysAuthorizePlugins + command_line->AppendSwitch("always-authorize-plugins"); } virtual void SetUpOnMainThread() OVERRIDE { @@ -47,31 +81,56 @@ class PluginTest : public InProcessBrowserTest { BrowserThread::IO, FROM_HERE, base::Bind(&SetUrlRequestMock, path)); } - void LoadAndWait(const GURL& url, const char* title) { - string16 expected_title(ASCIIToUTF16(title)); + void LoadAndWait(const GURL& url) { + string16 expected_title(ASCIIToUTF16("OK")); ui_test_utils::TitleWatcher title_watcher( browser()->GetSelectedWebContents(), expected_title); title_watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); + title_watcher.AlsoWaitForTitle(ASCIIToUTF16("plugin_not_found")); ui_test_utils::NavigateToURL(browser(), url); - EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); + string16 title = title_watcher.WaitAndGetTitle(); + if (title == ASCIIToUTF16("plugin_not_found")) { + const testing::TestInfo* const test_info = + testing::UnitTest::GetInstance()->current_test_info(); + LOG(INFO) << "PluginTest." << test_info->name() << + " not running because plugin not installed."; + } else { + EXPECT_EQ(expected_title, title); + } } GURL GetURL(const char* filename) { return ui_test_utils::GetTestUrl( - FilePath().AppendASCII("npapi"), FilePath().AppendASCII(filename)); + FilePath().AppendASCII("npapi"), FilePath().AppendASCII(filename)); } void NavigateAway() { GURL url = ui_test_utils::GetTestUrl( FilePath(), FilePath().AppendASCII("simple.html")); - LoadAndWait(url, "simple.html"); + LoadAndWait(url); + } + + void TestPlugin(const char* filename) { + FilePath path = ui_test_utils::GetTestFilePath( + FilePath().AppendASCII("plugin"), FilePath().AppendASCII(filename)); + if (!file_util::PathExists(path)) { + const testing::TestInfo* const test_info = + testing::UnitTest::GetInstance()->current_test_info(); + LOG(INFO) << "PluginTest." << test_info->name() << + " not running because test data wasn't found."; + return; + } + + GURL url = ui_test_utils::GetTestUrl( + FilePath().AppendASCII("plugin"), FilePath().AppendASCII(filename)); + LoadAndWait(url); } }; // Make sure that navigating away from a plugin referenced by JS doesn't // crash. IN_PROC_BROWSER_TEST_F(PluginTest, UnloadNoCrash) { - LoadAndWait(GetURL("layout_test_plugin.html"), "Layout Test Plugin Test"); + LoadAndWait(GetURL("layout_test_plugin.html")); NavigateAway(); } @@ -79,14 +138,14 @@ IN_PROC_BROWSER_TEST_F(PluginTest, UnloadNoCrash) { // works without crashing or hanging // Flaky: http://crbug.com/59327 IN_PROC_BROWSER_TEST_F(PluginTest, SelfDeletePluginGetUrl) { - LoadAndWait(GetURL("self_delete_plugin_geturl.html"), "OK"); + LoadAndWait(GetURL("self_delete_plugin_geturl.html")); } // Tests if a plugin executing a self deleting script using Invoke // works without crashing or hanging // Flaky. See http://crbug.com/30702 IN_PROC_BROWSER_TEST_F(PluginTest, SelfDeletePluginInvoke) { - LoadAndWait(GetURL("self_delete_plugin_invoke.html"), "OK"); + LoadAndWait(GetURL("self_delete_plugin_invoke.html")); } IN_PROC_BROWSER_TEST_F(PluginTest, NPObjectReleasedOnDestruction) { @@ -100,7 +159,7 @@ IN_PROC_BROWSER_TEST_F(PluginTest, NPObjectReleasedOnDestruction) { // the more interesting case is out of process, where we must route // the exception to the correct renderer. IN_PROC_BROWSER_TEST_F(PluginTest, NPObjectSetException) { - LoadAndWait(GetURL("npobject_set_exception.html"), "OK"); + LoadAndWait(GetURL("npobject_set_exception.html")); } #if defined(OS_WIN) @@ -128,7 +187,7 @@ IN_PROC_BROWSER_TEST_F(PluginTest, GetURLRequest404Response) { GURL url(URLRequestMockHTTPJob::GetMockUrl( FilePath().AppendASCII("npapi"). AppendASCII("plugin_url_request_404.html"))); - LoadAndWait(url, "OK"); + LoadAndWait(url); } // Tests if a plugin executing a self deleting script using Invoke with @@ -153,47 +212,47 @@ IN_PROC_BROWSER_TEST_F(PluginTest, SelfDeletePluginInvokeAlert) { // Test passing arguments to a plugin. IN_PROC_BROWSER_TEST_F(PluginTest, Arguments) { - LoadAndWait(GetURL("arguments.html"), "OK"); + LoadAndWait(GetURL("arguments.html")); } // Test invoking many plugins within a single page. IN_PROC_BROWSER_TEST_F(PluginTest, ManyPlugins) { - LoadAndWait(GetURL("many_plugins.html"), "OK"); + LoadAndWait(GetURL("many_plugins.html")); } // Test various calls to GetURL from a plugin. IN_PROC_BROWSER_TEST_F(PluginTest, GetURL) { - LoadAndWait(GetURL("geturl.html"), "OK"); + LoadAndWait(GetURL("geturl.html")); } // Test various calls to GetURL for javascript URLs with // non NULL targets from a plugin. IN_PROC_BROWSER_TEST_F(PluginTest, GetJavaScriptURL) { - LoadAndWait(GetURL("get_javascript_url.html"), "OK"); + LoadAndWait(GetURL("get_javascript_url.html")); } // Test that calling GetURL with a javascript URL and target=_self // works properly when the plugin is embedded in a subframe. IN_PROC_BROWSER_TEST_F(PluginTest, GetJavaScriptURL2) { - LoadAndWait(GetURL("get_javascript_url2.html"), "OK"); + LoadAndWait(GetURL("get_javascript_url2.html")); } // Test is flaky on linux/cros/win builders. http://crbug.com/71904 IN_PROC_BROWSER_TEST_F(PluginTest, GetURLRedirectNotification) { - LoadAndWait(GetURL("geturl_redirect_notify.html"), "OK"); + LoadAndWait(GetURL("geturl_redirect_notify.html")); } // Tests that identity is preserved for NPObjects passed from a plugin // into JavaScript. IN_PROC_BROWSER_TEST_F(PluginTest, NPObjectIdentity) { - LoadAndWait(GetURL("npobject_identity.html"), "OK"); + LoadAndWait(GetURL("npobject_identity.html")); } // Tests that if an NPObject is proxies back to its original process, the // original pointer is returned and not a proxy. If this fails the plugin // will crash. IN_PROC_BROWSER_TEST_F(PluginTest, NPObjectProxy) { - LoadAndWait(GetURL("npobject_proxy.html"), "OK"); + LoadAndWait(GetURL("npobject_proxy.html")); } #if defined(OS_WIN) || defined(OS_MACOSX) @@ -201,32 +260,32 @@ IN_PROC_BROWSER_TEST_F(PluginTest, NPObjectProxy) { // a synchronous paint event works correctly // http://crbug.com/44960 IN_PROC_BROWSER_TEST_F(PluginTest, SelfDeletePluginInvokeInSynchronousPaint) { - LoadAndWait(GetURL("execute_script_delete_in_paint.html"), "OK"); + LoadAndWait(GetURL("execute_script_delete_in_paint.html")); } #endif IN_PROC_BROWSER_TEST_F(PluginTest, SelfDeletePluginInNewStream) { - LoadAndWait(GetURL("self_delete_plugin_stream.html"), "OK"); + LoadAndWait(GetURL("self_delete_plugin_stream.html")); } // This test asserts on Mac in plugin_host in the NPNVWindowNPObject case. #if !(defined(OS_MACOSX) && !defined(NDEBUG)) // If this test flakes use http://crbug.com/95558. IN_PROC_BROWSER_TEST_F(PluginTest, DeletePluginInDeallocate) { - LoadAndWait(GetURL("plugin_delete_in_deallocate.html"), "OK"); + LoadAndWait(GetURL("plugin_delete_in_deallocate.html")); } #endif #if defined(OS_WIN) IN_PROC_BROWSER_TEST_F(PluginTest, VerifyPluginWindowRect) { - LoadAndWait(GetURL("verify_plugin_window_rect.html"), "OK"); + LoadAndWait(GetURL("verify_plugin_window_rect.html")); } // Tests that creating a new instance of a plugin while another one is handling // a paint message doesn't cause deadlock. IN_PROC_BROWSER_TEST_F(PluginTest, CreateInstanceInPaint) { - LoadAndWait(GetURL("create_instance_in_paint.html"), "OK"); + LoadAndWait(GetURL("create_instance_in_paint.html")); } // Tests that putting up an alert in response to a paint doesn't deadlock. @@ -239,20 +298,20 @@ IN_PROC_BROWSER_TEST_F(PluginTest, AlertInWindowMessage) { } IN_PROC_BROWSER_TEST_F(PluginTest, VerifyNPObjectLifetimeTest) { - LoadAndWait(GetURL("npobject_lifetime_test.html"), "OK"); + LoadAndWait(GetURL("npobject_lifetime_test.html")); } // Tests that we don't crash or assert if NPP_New fails IN_PROC_BROWSER_TEST_F(PluginTest, NewFails) { - LoadAndWait(GetURL("new_fails.html"), "OK"); + LoadAndWait(GetURL("new_fails.html")); } IN_PROC_BROWSER_TEST_F(PluginTest, SelfDeletePluginInNPNEvaluate) { - LoadAndWait(GetURL("execute_script_delete_in_npn_evaluate.html"), "OK"); + LoadAndWait(GetURL("execute_script_delete_in_npn_evaluate.html")); } IN_PROC_BROWSER_TEST_F(PluginTest, SelfDeleteCreatePluginInNPNEvaluate) { - LoadAndWait(GetURL("npn_plugin_delete_create_in_evaluate.html"), "OK"); + LoadAndWait(GetURL("npn_plugin_delete_create_in_evaluate.html")); } #endif // OS_WIN @@ -263,34 +322,34 @@ IN_PROC_BROWSER_TEST_F(PluginTest, SelfDeleteCreatePluginInNPNEvaluate) { // Disabled on Mac because the plugin side isn't implemented yet, see // "TODO(port)" in plugin_javascript_open_popup.cc. IN_PROC_BROWSER_TEST_F(PluginTest, OpenPopupWindowWithPlugin) { - LoadAndWait(GetURL("get_javascript_open_popup_with_plugin.html"), "OK"); + LoadAndWait(GetURL("get_javascript_open_popup_with_plugin.html")); } #endif // Test checking the privacy mode is off. IN_PROC_BROWSER_TEST_F(PluginTest, PrivateDisabled) { - LoadAndWait(GetURL("private.html"), "OK"); + LoadAndWait(GetURL("private.html")); } IN_PROC_BROWSER_TEST_F(PluginTest, ScheduleTimer) { - LoadAndWait(GetURL("schedule_timer.html"), "OK"); + LoadAndWait(GetURL("schedule_timer.html")); } IN_PROC_BROWSER_TEST_F(PluginTest, PluginThreadAsyncCall) { - LoadAndWait(GetURL("plugin_thread_async_call.html"), "OK"); + LoadAndWait(GetURL("plugin_thread_async_call.html")); } // Test checking the privacy mode is on. // If this flakes on Linux, use http://crbug.com/104380 IN_PROC_BROWSER_TEST_F(PluginTest, PrivateEnabled) { - LoadAndWait(GetURL("private.html"), "OK"); + LoadAndWait(GetURL("private.html")); } #if defined(OS_WIN) || defined(OS_MACOSX) // Test a browser hang due to special case of multiple // plugin instances indulged in sync calls across renderer. IN_PROC_BROWSER_TEST_F(PluginTest, MultipleInstancesSyncCalls) { - LoadAndWait(GetURL("multiple_instances_sync_calls.html"), "OK"); + LoadAndWait(GetURL("multiple_instances_sync_calls.html")); } #endif @@ -298,12 +357,12 @@ IN_PROC_BROWSER_TEST_F(PluginTest, GetURLRequestFailWrite) { GURL url(URLRequestMockHTTPJob::GetMockUrl( FilePath().AppendASCII("npapi"). AppendASCII("plugin_url_request_fail_write.html"))); - LoadAndWait(url, "OK"); + LoadAndWait(url); } #if defined(OS_WIN) IN_PROC_BROWSER_TEST_F(PluginTest, EnsureScriptingWorksInDestroy) { - LoadAndWait(GetURL("ensure_scripting_works_in_destroy.html"), "OK"); + LoadAndWait(GetURL("ensure_scripting_works_in_destroy.html")); } // This test uses a Windows Event to signal to the plugin that it should crash @@ -311,7 +370,7 @@ IN_PROC_BROWSER_TEST_F(PluginTest, EnsureScriptingWorksInDestroy) { IN_PROC_BROWSER_TEST_F(PluginTest, NoHangIfInitCrashes) { HANDLE crash_event = CreateEvent(NULL, TRUE, FALSE, L"TestPluginCrashOnInit"); SetEvent(crash_event); - LoadAndWait(GetURL("no_hang_if_init_crashes.html"), "OK"); + LoadAndWait(GetURL("no_hang_if_init_crashes.html")); CloseHandle(crash_event); } #endif @@ -321,7 +380,7 @@ IN_PROC_BROWSER_TEST_F(PluginTest, PluginReferrerTest) { GURL url(URLRequestMockHTTPJob::GetMockUrl( FilePath().AppendASCII("npapi"). AppendASCII("plugin_url_request_referrer_test.html"))); - LoadAndWait(url, "OK"); + LoadAndWait(url); } #if defined(OS_MACOSX) @@ -344,3 +403,60 @@ IN_PROC_BROWSER_TEST_F(PluginTest, PluginConvertPointTest) { EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); } #endif + +IN_PROC_BROWSER_TEST_F(PluginTest, Flash) { + TestPlugin("flash.html"); +} + +#if defined(OS_WIN) +// Windows only test +IN_PROC_BROWSER_TEST_F(PluginTest, DISABLED_FlashSecurity) { + TestPlugin("flash.html"); +} +#endif // defined(OS_WIN) + +#if defined(OS_WIN) +// TODO(port) Port the following tests to platforms that have the required +// plugins. +// Flaky: http://crbug.com/55915 +IN_PROC_BROWSER_TEST_F(PluginTest, DISABLED_Quicktime) { + TestPlugin("quicktime.html"); +} + +// Disabled - http://crbug.com/44662 +IN_PROC_BROWSER_TEST_F(PluginTest, DISABLED_MediaPlayerNew) { + TestPlugin("wmp_new.html"); +} + +// http://crbug.com/4809 +IN_PROC_BROWSER_TEST_F(PluginTest, DISABLED_MediaPlayerOld) { + TestPlugin("wmp_old.html"); +} + +// Disabled - http://crbug.com/44673 +IN_PROC_BROWSER_TEST_F(PluginTest, DISABLED_Real) { + TestPlugin("real.html"); +} + +IN_PROC_BROWSER_TEST_F(PluginTest, FlashOctetStream) { + TestPlugin("flash-octet-stream.html"); +} + +#if defined(OS_WIN) +// http://crbug.com/53926 +IN_PROC_BROWSER_TEST_F(PluginTest, DISABLED_FlashLayoutWhilePainting) { +#else +IN_PROC_BROWSER_TEST_F(PluginTest, FlashLayoutWhilePainting) { +#endif + TestPlugin("flash-layout-while-painting.html"); +} + +// http://crbug.com/8690 +IN_PROC_BROWSER_TEST_F(PluginTest, DISABLED_Java) { + TestPlugin("Java.html"); +} + +IN_PROC_BROWSER_TEST_F(PluginTest, Silverlight) { + TestPlugin("silverlight.html"); +} +#endif // defined(OS_WIN) |