| 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
|
|
|