Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: webkit/tools/test_shell/plugin_tests.cc

Issue 42687: Add a test to test_shell_tests to verify that navigator.plugins.refresh() wor... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/data/plugin_tests/verify_plugin_window_rect.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/tools/test_shell/plugin_tests.cc
===================================================================
--- webkit/tools/test_shell/plugin_tests.cc (revision 12587)
+++ webkit/tools/test_shell/plugin_tests.cc (working copy)
@@ -5,116 +5,83 @@
#include <string>
#include "base/file_util.h"
-#include "base/message_loop.h"
+#include "base/path_service.h"
#include "base/string_util.h"
-#include "net/base/cookie_monster.h"
-#include "net/base/net_util.h"
-#include "net/http/http_cache.h"
-#include "net/url_request/url_request_context.h"
-#include "net/url_request/url_request_unittest.h"
#include "testing/gtest/include/gtest/gtest.h"
-#include "webkit/glue/plugins/plugin_list.h"
-#include "webkit/tools/test_shell/simple_resource_loader_bridge.h"
+#include "webkit/glue/webframe.h"
+#include "webkit/glue/webscriptsource.h"
+#include "webkit/glue/webview.h"
#include "webkit/tools/test_shell/test_shell.h"
#include "webkit/tools/test_shell/test_shell_test.h"
-static const char kTestCompleteCookie[] = "status";
-static const char kTestCompleteSuccess[] = "OK";
// Provides functionality for creating plugin tests.
class PluginTest : public TestShellTest {
- // A basic URLRequestContext that only provides an in-memory cookie store.
- class RequestContext : public TestURLRequestContext {
- public:
- RequestContext() {
- cookie_store_ = new net::CookieMonster();
- }
-
- virtual ~RequestContext() {
- delete cookie_store_;
- }
- };
-
public:
- PluginTest() {}
- ~PluginTest() {}
-
- void NavigateToURL(const std::wstring& test_url) {
- ASSERT_TRUE(file_util::PathExists(test_url));
- test_url_ = net::FilePathToFileURL(test_url);
- test_shell_->LoadURL(test_url.c_str());
- }
-
- // Waits for the test case to finish.
- // ASSERTS if there are test failures.
- void WaitForFinish(const std::string &name, const std::string &id) {
- test_shell_->WaitTestFinished();
-
- std::string cookies =
- request_context_->cookie_store()->GetCookies(test_url_);
- EXPECT_FALSE(cookies.empty());
-
- std::string cookieName = name;
- cookieName.append(".");
- cookieName.append(id);
- cookieName.append(".");
- cookieName.append(kTestCompleteCookie);
- cookieName.append("=");
- std::string::size_type idx = cookies.find(cookieName);
- std::string cookie;
- if (idx != std::string::npos) {
- cookies.erase(0, idx + cookieName.length());
- cookie = cookies.substr(0, cookies.find(";"));
- }
-
- EXPECT_EQ(kTestCompleteSuccess, cookie);
- }
-
- protected:
- virtual void SetUp() {
- // We need to copy our test-plugin into the plugins directory so that
- // the test can load it.
+ PluginTest() {
std::wstring current_directory;
PathService::Get(base::DIR_EXE, &current_directory);
- std::wstring plugin_src = current_directory + L"\\npapi_test_plugin.dll";
- ASSERT_TRUE(file_util::PathExists(plugin_src));
+ plugin_src_ = current_directory + L"\\npapi_test_plugin.dll";
+ CHECK(file_util::PathExists(plugin_src_));
plugin_file_path_ = current_directory + L"\\plugins";
::CreateDirectory(plugin_file_path_.c_str(), NULL);
plugin_file_path_ += L"\\npapi_test_plugin.dll";
- ASSERT_TRUE(CopyFile(plugin_src.c_str(), plugin_file_path_.c_str(), FALSE));
+ }
- // The plugin list has to be refreshed to ensure that the npapi_test_plugin
- // is loaded by webkit.
- std::vector<WebPluginInfo> plugin_list;
- bool refresh = true;
- NPAPI::PluginList::Singleton()->GetPlugins(refresh, &plugin_list);
-
- TestShellTest::SetUp();
-
- plugin_data_dir_ = data_dir_;
- file_util::AppendToPath(&plugin_data_dir_, L"plugin_tests");
- ASSERT_TRUE(file_util::PathExists(plugin_data_dir_));
+ void CopyTestPlugin() {
+ ASSERT_TRUE(CopyFile(plugin_src_.c_str(), plugin_file_path_.c_str(), FALSE));
}
- virtual void TearDown() {
- TestShellTest::TearDown();
-
- // TODO(iyengar) The DeleteFile call fails in some cases as the plugin is
- // still in use. Needs more investigation.
+ void DeleteTestPlugin() {
::DeleteFile(plugin_file_path_.c_str());
}
- std::wstring plugin_data_dir_;
+ std::wstring plugin_src_;
std::wstring plugin_file_path_;
- RequestContext* request_context_;
- GURL test_url_;
};
-TEST_F(PluginTest, DISABLED_VerifyPluginWindowRect) {
- std::wstring test_url = GetTestURL(plugin_data_dir_,
- L"verify_plugin_window_rect.html");
- NavigateToURL(test_url);
- WaitForFinish("checkwindowrect", "1");
+// 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 == 'npapi_test_plugin.dll') {\
+ result.innerHTML = 'DONE';\
+ break;\
+ }\
+ }\
+ \
+ if (result.innerHTML != 'DONE')\
+ result.innerHTML = 'FAIL';\
+ }\
+ </script>\
+ ";
+
+ DeleteTestPlugin(); // Remove any leftover from previous tests if they exist.
+ test_shell_->webView()->GetMainFrame()->LoadHTMLString(
+ html, GURL("about:blank"));
+ test_shell_->WaitTestFinished();
+
+ std::wstring text;
+ webkit_glue::WebScriptSource call_check("check();");
+ webkit_glue::WebScriptSource refresh("navigator.plugins.refresh(false)");
+
+ test_shell_->webView()->GetMainFrame()->ExecuteScript(call_check);
+ test_shell_->webView()->GetMainFrame()->GetContentAsPlainText(10000, &text);
+ ASSERT_EQ(text, L"FAIL");
+
+ CopyTestPlugin();
+
+ test_shell_->webView()->GetMainFrame()->ExecuteScript(refresh);
+ test_shell_->webView()->GetMainFrame()->ExecuteScript(call_check);
+ test_shell_->webView()->GetMainFrame()->GetContentAsPlainText(10000, &text);
+ ASSERT_EQ(text, L"DONE");
+
+ DeleteTestPlugin();
}
« no previous file with comments | « webkit/data/plugin_tests/verify_plugin_window_rect.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698