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

Unified Diff: chrome/test/ui/ppapi_uitest.cc

Issue 8539019: Test NaCl version of ppapi_tests via ui_tests (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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 | « chrome/chrome_tests.gypi ('k') | net/test/test_server.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/ui/ppapi_uitest.cc
===================================================================
--- chrome/test/ui/ppapi_uitest.cc (revision 110202)
+++ chrome/test/ui/ppapi_uitest.cc (working copy)
@@ -6,7 +6,10 @@
#include "base/path_service.h"
#include "base/test/test_timeouts.h"
#include "build/build_config.h"
+#include "content/browser/plugin_service.h"
#include "content/public/common/content_switches.h"
+#include "content/common/pepper_plugin_registry.h"
+#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/test/automation/tab_proxy.h"
#include "chrome/test/ui/ui_test.h"
@@ -27,24 +30,9 @@
} // namespace
-// In-process plugin test runner. See OutOfProcessPPAPITest below for the
-// out-of-process version.
-class PPAPITest : public UITest {
+class PPAPITestBase : public UITest {
public:
- PPAPITest() {
- // Append the switch to register the pepper plugin.
- // library name = <out dir>/<test_name>.<library_extension>
- // MIME type = application/x-ppapi-<test_name>
- FilePath plugin_dir;
- PathService::Get(base::DIR_EXE, &plugin_dir);
-
- FilePath plugin_lib = plugin_dir.Append(library_name);
- EXPECT_TRUE(file_util::PathExists(plugin_lib));
- FilePath::StringType pepper_plugin = plugin_lib.value();
- pepper_plugin.append(FILE_PATH_LITERAL(";application/x-ppapi-tests"));
- launch_arguments_.AppendSwitchNative(switches::kRegisterPepperPlugins,
- pepper_plugin);
-
+ PPAPITestBase() {
// The test sends us the result via a cookie.
launch_arguments_.AppendSwitch(switches::kEnableFileCookies);
@@ -56,9 +44,12 @@
launch_arguments_.AppendSwitch(switches::kDisableSmoothScrolling);
}
+ virtual std::string BuildQuery(const std::string& base,
+ const std::string& test_case)=0;
+
void RunTest(const std::string& test_case) {
FilePath test_path;
- PathService::Get(base::DIR_SOURCE_ROOT, &test_path);
+ EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &test_path));
test_path = test_path.Append(FILE_PATH_LITERAL("ppapi"));
test_path = test_path.Append(FILE_PATH_LITERAL("tests"));
test_path = test_path.Append(FILE_PATH_LITERAL("test_case.html"));
@@ -67,20 +58,19 @@
EXPECT_TRUE(file_util::PathExists(test_path));
GURL::Replacements replacements;
- std::string query("testcase=");
- query += test_case;
+ std::string query = BuildQuery("", test_case);
replacements.SetQuery(query.c_str(), url_parse::Component(0, query.size()));
GURL test_url = net::FilePathToFileURL(test_path);
RunTestURL(test_url.ReplaceComponents(replacements));
}
void RunTestViaHTTP(const std::string& test_case) {
+ FilePath fp = CommandLine::ForCurrentProcess()->GetProgram();
net::TestServer test_server(
- net::TestServer::TYPE_HTTP,
- FilePath(FILE_PATH_LITERAL("ppapi/tests")));
+ net::TestServer::TYPE_HTTP, fp.DirName());
ASSERT_TRUE(test_server.Start());
- RunTestURL(
- test_server.GetURL("files/test_case.html?testcase=" + test_case));
+ std::string query = BuildQuery("files/test_case.html?", test_case);
+ RunTestURL(test_server.GetURL(query));
}
private:
@@ -119,6 +109,32 @@
}
};
+// In-process plugin test runner. See OutOfProcessPPAPITest below for the
+// out-of-process version.
+class PPAPITest : public PPAPITestBase {
+ public:
+ PPAPITest() {
+ // Append the switch to register the pepper plugin.
+ // library name = <out dir>/<test_name>.<library_extension>
+ // MIME type = application/x-ppapi-<test_name>
+ FilePath plugin_dir;
+ EXPECT_TRUE(PathService::Get(base::DIR_EXE, &plugin_dir));
+
+ FilePath plugin_lib = plugin_dir.Append(library_name);
+ EXPECT_TRUE(file_util::PathExists(plugin_lib));
+ FilePath::StringType pepper_plugin = plugin_lib.value();
+ pepper_plugin.append(FILE_PATH_LITERAL(";application/x-ppapi-tests"));
+ launch_arguments_.AppendSwitchNative(switches::kRegisterPepperPlugins,
+ pepper_plugin);
+ }
+
+ std::string BuildQuery(const std::string& base,
+ const std::string& test_case){
+ return StringPrintf("%stestcase=%s", base.c_str(), test_case.c_str());
+ }
+
+};
+
// Variant of PPAPITest that runs plugins out-of-process to test proxy
// codepaths.
class OutOfProcessPPAPITest : public PPAPITest {
@@ -129,6 +145,27 @@
}
};
+// NaCl plugin test runner.
+class PPAPINaClTest : public PPAPITestBase {
+ public:
+ PPAPINaClTest() {
+ FilePath plugin_lib;
+ EXPECT_TRUE(PathService::Get(chrome::FILE_NACL_PLUGIN, &plugin_lib));
+ EXPECT_TRUE(file_util::PathExists(plugin_lib));
+
+ // Enable running NaCl outside of the store.
+ launch_arguments_.AppendSwitch(switches::kEnableNaCl);
+ }
+
+ // Append the correct mode and testcase string
+ std::string BuildQuery(const std::string& base,
+ const std::string& test_case) {
+ return StringPrintf("%smode=nacl&testcase=%s", base.c_str(),
+ test_case.c_str());
+ }
+};
+
+
// Use these macros to run the tests for a specific interface.
// Most interfaces should be tested with both macros.
#define TEST_PPAPI_IN_PROCESS(test_name) \
@@ -151,6 +188,12 @@
}
+// NaCl based PPAPI tests
+#define TEST_PPAPI_NACL_VIA_HTTP(test_name) \
+ TEST_F(PPAPINaClTest, test_name) { \
+ RunTestViaHTTP(#test_name); \
+}
+
//
// Interface tests.
//
@@ -163,6 +206,7 @@
TEST_PPAPI_IN_PROCESS(CursorControl)
TEST_PPAPI_OUT_OF_PROCESS(CursorControl)
+TEST_PPAPI_NACL_VIA_HTTP(CursorControl)
TEST_PPAPI_IN_PROCESS(Instance)
// http://crbug.com/91729
@@ -170,15 +214,16 @@
TEST_PPAPI_IN_PROCESS(Graphics2D)
TEST_PPAPI_OUT_OF_PROCESS(Graphics2D)
+TEST_PPAPI_NACL_VIA_HTTP(Graphics2D)
TEST_PPAPI_IN_PROCESS(ImageData)
TEST_PPAPI_OUT_OF_PROCESS(ImageData)
+TEST_PPAPI_NACL_VIA_HTTP(ImageData)
TEST_PPAPI_IN_PROCESS(Buffer)
TEST_PPAPI_OUT_OF_PROCESS(Buffer)
TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader)
-
// http://crbug.com/89961
#if defined(OS_WIN)
// It often takes too long time (and fails otherwise) on Windows.
@@ -186,19 +231,22 @@
#else
#define MAYBE_URLLoader FAILS_URLLoader
#endif
-
TEST_F(OutOfProcessPPAPITest, MAYBE_URLLoader) {
RunTestViaHTTP("URLLoader");
}
+
+
TEST_PPAPI_IN_PROCESS(PaintAggregator)
TEST_PPAPI_OUT_OF_PROCESS(PaintAggregator)
+TEST_PPAPI_NACL_VIA_HTTP(PaintAggregator)
TEST_PPAPI_IN_PROCESS(Scrollbar)
// http://crbug.com/89961
TEST_F(OutOfProcessPPAPITest, FAILS_Scrollbar) {
RunTest("Scrollbar");
}
+TEST_PPAPI_NACL_VIA_HTTP(Scrollbar)
TEST_PPAPI_IN_PROCESS(URLUtil)
TEST_PPAPI_OUT_OF_PROCESS(URLUtil)
@@ -214,6 +262,7 @@
TEST_F(OutOfProcessPPAPITest, FAILS_Var) {
RunTest("Var");
}
+TEST_PPAPI_NACL_VIA_HTTP(Var)
TEST_PPAPI_IN_PROCESS(VarDeprecated)
// Disabled because it times out: http://crbug.com/89961
@@ -231,6 +280,7 @@
TEST_PPAPI_IN_PROCESS(Memory)
TEST_PPAPI_OUT_OF_PROCESS(Memory)
+TEST_PPAPI_NACL_VIA_HTTP(Memory)
TEST_PPAPI_IN_PROCESS(VideoDecoder)
TEST_PPAPI_OUT_OF_PROCESS(VideoDecoder)
@@ -243,13 +293,18 @@
TEST_F(OutOfProcessPPAPITest, DISABLED_FileIO) {
RunTestViaHTTP("FileIO");
}
+TEST_PPAPI_NACL_VIA_HTTP(DISABLED_FileIO)
+
TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileRef)
// Disabled because it times out: http://crbug.com/89961
//TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileRef)
+TEST_PPAPI_NACL_VIA_HTTP(FileRef)
+
TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileSystem)
TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileSystem)
+TEST_PPAPI_NACL_VIA_HTTP(FileSystem)
// http://crbug.com/96767
#if !defined(OS_MACOSX)
« no previous file with comments | « chrome/chrome_tests.gypi ('k') | net/test/test_server.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698