Index: webkit/tools/test_shell/plugin_tests.cc |
=================================================================== |
--- webkit/tools/test_shell/plugin_tests.cc (revision 195684) |
+++ webkit/tools/test_shell/plugin_tests.cc (working copy) |
@@ -1,201 +0,0 @@ |
-// Copyright (c) 2012 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. |
- |
-#include <string> |
- |
-#include "base/file_util.h" |
-#include "base/files/file_path.h" |
-#include "base/path_service.h" |
-#include "base/string_util.h" |
-#include "net/base/escape.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "third_party/WebKit/Source/Platform/chromium/public/WebData.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
-#include "webkit/tools/test_shell/test_shell.h" |
-#include "webkit/tools/test_shell/test_shell_test.h" |
- |
-using WebKit::WebFrame; |
-using WebKit::WebScriptSource; |
-using WebKit::WebString; |
- |
-#if defined(OS_WIN) |
-#define TEST_PLUGIN_NAME "npapi_test_plugin.dll" |
-#elif defined(OS_MACOSX) |
-#define TEST_PLUGIN_NAME "npapi_test_plugin.plugin" |
-#elif defined(OS_POSIX) |
-#define TEST_PLUGIN_NAME "libnpapi_test_plugin.so" |
-#endif |
- |
-namespace { |
- |
-const char kPluginsDir[] = "plugins"; |
- |
-} |
- |
-// Ignore these until 64-bit plugin build is fixed. http://crbug.com/18337 |
-#if !defined(ARCH_CPU_64_BITS) |
-// Provides functionality for creating plugin tests. |
-class PluginTest : public TestShellTest { |
- public: |
- PluginTest() { |
- base::FilePath executable_directory; |
- PathService::Get(base::DIR_EXE, &executable_directory); |
- plugin_src_ = executable_directory.AppendASCII(TEST_PLUGIN_NAME); |
- CHECK(file_util::PathExists(plugin_src_)); |
- |
- plugin_file_path_ = executable_directory.AppendASCII(kPluginsDir); |
- file_util::CreateDirectory(plugin_file_path_); |
- |
- plugin_file_path_ = plugin_file_path_.AppendASCII(TEST_PLUGIN_NAME); |
- } |
- |
- void CopyTestPlugin() { |
- // On Linux, we need to delete before copying because if the plugin is a |
- // hard link, the copy will fail. |
- DeleteTestPlugin(); |
- ASSERT_TRUE(file_util::CopyDirectory(plugin_src_, plugin_file_path_, true)); |
- } |
- |
- void DeleteTestPlugin() { |
- file_util::Delete(plugin_file_path_, true); |
- } |
- |
- virtual void SetUp() { |
- CopyTestPlugin(); |
- TestShellTest::SetUp(); |
- } |
- |
- base::FilePath plugin_src_; |
- base::FilePath plugin_file_path_; |
-}; |
- |
-// Tests navigator.plugins.refresh() works. |
-TEST_F(PluginTest, Refresh) { |
- std::string html = "\ |
- <div id='result'>Test running....</div>\ |
- <script>\ |
- function check() {\ |
- var l = navigator.plugins.length;\ |
- var result = document.getElementById('result');\ |
- for(var i = 0; i < l; i++) {\ |
- if (navigator.plugins[i].filename == '" TEST_PLUGIN_NAME "') {\ |
- result.innerHTML = 'DONE';\ |
- break;\ |
- }\ |
- }\ |
- \ |
- if (result.innerHTML != 'DONE')\ |
- result.innerHTML = 'FAIL';\ |
- }\ |
- </script>\ |
- "; |
- |
- WebScriptSource call_check( |
- WebString::fromUTF8("check();")); |
- WebScriptSource refresh( |
- WebString::fromUTF8("navigator.plugins.refresh(false)")); |
- |
- // Remove any leftover from previous tests if they exist. We must also |
- // refresh WebKit's plugin cache since it might have had an entry for the |
- // test plugin from a previous test. |
- DeleteTestPlugin(); |
- ASSERT_FALSE(file_util::PathExists(plugin_file_path_)); |
- test_shell_->webView()->mainFrame()->executeScript(refresh); |
- |
- test_shell_->webView()->mainFrame()->loadHTMLString( |
- html, GURL("about:blank")); |
- test_shell_->WaitTestFinished(); |
- |
- std::string text; |
- test_shell_->webView()->mainFrame()->executeScript(call_check); |
- text = test_shell_->webView()->mainFrame()->contentAsText(10000).utf8(); |
- ASSERT_EQ(text, "FAIL"); |
- |
- CopyTestPlugin(); |
- |
- test_shell_->webView()->mainFrame()->executeScript(refresh); |
- test_shell_->webView()->mainFrame()->executeScript(call_check); |
- text = test_shell_->webView()->mainFrame()->contentAsText(10000).utf8(); |
- ASSERT_EQ(text, "DONE"); |
-} |
- |
-// Tests that if a frame is deleted as a result of calling NPP_HandleEvent, we |
-// don't crash. |
-TEST_F(PluginTest, DeleteFrameDuringEvent) { |
- base::FilePath test_html = data_dir_; |
- test_html = test_html.AppendASCII(kPluginsDir); |
- test_html = test_html.AppendASCII("delete_frame.html"); |
- test_shell_->LoadFile(test_html); |
- test_shell_->WaitTestFinished(); |
- |
- WebKit::WebMouseEvent input; |
- input.button = WebKit::WebMouseEvent::ButtonLeft; |
- input.x = 50; |
- input.y = 50; |
- input.type = WebKit::WebInputEvent::MouseUp; |
- test_shell_->webView()->handleInputEvent(input); |
- |
- // No crash means we passed. |
-} |
- |
-// Tests that a forced reload of the plugin will not crash. |
-TEST_F(PluginTest, ForceReload) { |
- base::FilePath test_html = data_dir_; |
- test_html = test_html.AppendASCII(kPluginsDir); |
- test_html = test_html.AppendASCII("force_reload.html"); |
- test_shell_->LoadFile(test_html); |
- test_shell_->WaitTestFinished(); |
- |
- // No crash means we passed. |
-} |
- |
-#if defined(OS_WIN) |
-BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lparam) { |
- HWND* plugin_hwnd = reinterpret_cast<HWND*>(lparam); |
- if (*plugin_hwnd) { |
- // More than one child window found, unexpected. |
- plugin_hwnd = NULL; |
- return FALSE; |
- } |
- *plugin_hwnd = hwnd; |
- return TRUE; |
-} |
- |
-// Tests that hiding/showing the parent frame hides/shows the plugin. |
-// Fails for WIN. http://crbug.com/111601 |
-#if defined(OS_WIN) |
-#define MAYBE_PluginVisibilty DISABLED_PluginVisibilty |
-#else |
-#define MAYBE_PluginVisibilty PluginVisibilty |
-#endif |
- |
-TEST_F(PluginTest, MAYBE_PluginVisibilty) { |
- base::FilePath test_html = data_dir_; |
- test_html = test_html.AppendASCII(kPluginsDir); |
- test_html = test_html.AppendASCII("plugin_visibility.html"); |
- test_shell_->LoadFile(test_html); |
- test_shell_->WaitTestFinished(); |
- |
- WebFrame* main_frame = test_shell_->webView()->mainFrame(); |
- HWND frame_hwnd = test_shell_->webViewWnd(); |
- HWND plugin_hwnd = NULL; |
- EnumChildWindows(frame_hwnd, EnumChildProc, |
- reinterpret_cast<LPARAM>(&plugin_hwnd)); |
- ASSERT_TRUE(plugin_hwnd != NULL); |
- ASSERT_FALSE(IsWindowVisible(plugin_hwnd)); |
- |
- main_frame->executeScript(WebString::fromUTF8("showPlugin(true)")); |
- ASSERT_TRUE(IsWindowVisible(plugin_hwnd)); |
- |
- main_frame->executeScript(WebString::fromUTF8("showFrame(false)")); |
- ASSERT_FALSE(IsWindowVisible(plugin_hwnd)); |
- |
- main_frame->executeScript(WebString::fromUTF8("showFrame(true)")); |
- ASSERT_TRUE(IsWindowVisible(plugin_hwnd)); |
-} |
-#endif |
-#endif //!ARCH_CPU_64_BITS |