summaryrefslogtreecommitdiffstats
path: root/content/browser/webui
diff options
context:
space:
mode:
authordtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-30 21:37:16 +0000
committerdtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-30 21:37:16 +0000
commitc3fea5f8118111c0263ea7a6404e64da121194d3 (patch)
tree59677ccac6c52f87b14cac72cc1c5e2d77ef5bd4 /content/browser/webui
parent99d364a272e478b323e08798b68811185f7cb965 (diff)
downloadchromium_src-c3fea5f8118111c0263ea7a6404e64da121194d3.zip
chromium_src-c3fea5f8118111c0263ea7a6404e64da121194d3.tar.gz
chromium_src-c3fea5f8118111c0263ea7a6404e64da121194d3.tar.bz2
Provide one to one correspondence between WebUI tests on C++ and JS ends.
R=arv@chromium.org,estade@chromium.org,scr@chromium.org Review URL: http://codereview.chromium.org/6725034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79899 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/webui')
-rw-r--r--content/browser/webui/web_ui_browsertest.cc35
-rw-r--r--content/browser/webui/web_ui_browsertest.h22
-rw-r--r--content/browser/webui/web_ui_handler_browsertest.cc9
-rw-r--r--content/browser/webui/web_ui_handler_browsertest.h4
4 files changed, 45 insertions, 25 deletions
diff --git a/content/browser/webui/web_ui_browsertest.cc b/content/browser/webui/web_ui_browsertest.cc
index bf5469f..0fca0e2 100644
--- a/content/browser/webui/web_ui_browsertest.cc
+++ b/content/browser/webui/web_ui_browsertest.cc
@@ -18,11 +18,12 @@ static const FilePath::CharType* kWebUITestFolder = FILE_PATH_LITERAL("webui");
WebUIBrowserTest::~WebUIBrowserTest() {}
-bool WebUIBrowserTest::RunWebUITest(const FilePath::CharType* src_path) {
- std::string content;
- BuildJavaScriptTest(FilePath(src_path), &content);
- SetupHandlers();
- return test_handler_->Execute(content);
+bool WebUIBrowserTest::RunJavascriptFunction(const std::string& function_name) {
+ return RunJavascriptUsingHandler(function_name, false);
+}
+
+bool WebUIBrowserTest::RunJavascriptTest(const std::string& test_name) {
+ return RunJavascriptUsingHandler(test_name, true);
}
WebUIBrowserTest::WebUIBrowserTest()
@@ -44,8 +45,7 @@ WebUIMessageHandler* WebUIBrowserTest::GetMockMessageHandler() {
return NULL;
}
-void WebUIBrowserTest::BuildJavaScriptTest(const FilePath& src_path,
- std::string* content) {
+void WebUIBrowserTest::BuildJavascriptLibraries(std::string* content) {
ASSERT_TRUE(content != NULL);
std::string library_content, src_content;
@@ -59,12 +59,20 @@ void WebUIBrowserTest::BuildJavaScriptTest(const FilePath& src_path,
content->append(library_content);
content->append(";\n");
}
+}
- ASSERT_TRUE(file_util::ReadFileToString(
- test_data_directory_.Append(src_path), &src_content));
+bool WebUIBrowserTest::RunJavascriptUsingHandler(
+ const std::string& function_name, bool is_test) {
+ std::string content;
+ BuildJavascriptLibraries(&content);
- content->append(";\n");
- content->append(src_content);
+ if (!function_name.empty()) {
+ std::string called_function = is_test ? "runTest(" + function_name + ");" :
+ function_name + "()";
+ content.append(called_function);
+ }
+ SetupHandlers();
+ return test_handler_->RunJavascript(content, is_test);
}
void WebUIBrowserTest::SetupHandlers() {
@@ -83,9 +91,12 @@ void WebUIBrowserTest::AddLibrary(const FilePath::CharType* library_path) {
}
IN_PROC_BROWSER_TEST_F(WebUIBrowserTest, TestSamplePass) {
+ AddLibrary(FILE_PATH_LITERAL("sample_downloads.js"));
+
// Navigate to UI.
// TODO(dtseng): make accessor for subclasses to return?
ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIDownloadsURL));
- ASSERT_TRUE(RunWebUITest(FILE_PATH_LITERAL("sample_downloads.js")));
+ ASSERT_TRUE(RunJavascriptTest("testAssertFalse"));
+ ASSERT_TRUE(RunJavascriptTest("testInitialFocus"));
}
diff --git a/content/browser/webui/web_ui_browsertest.h b/content/browser/webui/web_ui_browsertest.h
index 2481177..dffc993 100644
--- a/content/browser/webui/web_ui_browsertest.h
+++ b/content/browser/webui/web_ui_browsertest.h
@@ -27,7 +27,12 @@ class WebUIBrowserTest : public InProcessBrowserTest {
// Add a custom helper JS library for your test.
void AddLibrary(const FilePath::CharType* library_path);
- bool RunWebUITest(const FilePath::CharType* src_path);
+ // Runs a javascript function in the context of all libraries.
+ // Note that calls to functions in test_api.js are not supported.
+ bool RunJavascriptFunction(const std::string& function_name);
+
+ // Runs a test that may include calls to functions in test_api.js.
+ bool RunJavascriptTest(const std::string& test_name);
protected:
WebUIBrowserTest();
@@ -39,14 +44,13 @@ class WebUIBrowserTest : public InProcessBrowserTest {
virtual WebUIMessageHandler* GetMockMessageHandler();
private:
- // Builds a javascript test in the form:
- // <js_library> ...
- // <src_path> ...
- // runTests(function test1() {...},
- // ...
- // );
- void BuildJavaScriptTest(const FilePath& src_path,
- std::string* content);
+ // Builds a string containing all added javascript libraries.
+ void BuildJavascriptLibraries(std::string* content);
+
+ // Calls the specified function with all libraries available. If |is_test|
+ // is true, the framework listens for pass fail messages from javascript.
+ bool RunJavascriptUsingHandler(const std::string& function_name,
+ bool is_test);
// Attaches mock and test handlers.
void SetupHandlers();
diff --git a/content/browser/webui/web_ui_handler_browsertest.cc b/content/browser/webui/web_ui_handler_browsertest.cc
index 698daad..d7336c5 100644
--- a/content/browser/webui/web_ui_handler_browsertest.cc
+++ b/content/browser/webui/web_ui_handler_browsertest.cc
@@ -9,10 +9,15 @@
#include "chrome/test/ui_test_utils.h"
#include "content/browser/renderer_host/render_view_host.h"
-bool WebUIHandlerBrowserTest::Execute(const std::string& js_test) {
+bool WebUIHandlerBrowserTest::RunJavascript(const std::string& js_test,
+ bool is_test) {
web_ui_->GetRenderViewHost()->ExecuteJavascriptInWebFrame(
string16(), UTF8ToUTF16(js_test));
- return WaitForResult();
+
+ if (is_test)
+ return WaitForResult();
+ else
+ return true;
}
void WebUIHandlerBrowserTest::HandlePass(const ListValue* args) {
diff --git a/content/browser/webui/web_ui_handler_browsertest.h b/content/browser/webui/web_ui_handler_browsertest.h
index b19484a..62d7535 100644
--- a/content/browser/webui/web_ui_handler_browsertest.h
+++ b/content/browser/webui/web_ui_handler_browsertest.h
@@ -13,8 +13,8 @@
// This class registers test framework specific handlers on WebUI objects.
class WebUIHandlerBrowserTest : public WebUIMessageHandler {
public:
- // Executes a string of javascript. Returns pass fail.
- bool Execute(const std::string& js_test);
+ // Runs a string of javascript. Returns pass fail.
+ bool RunJavascript(const std::string& js_test, bool is_test);
protected:
// WebUI handlers which deliver results to any waiting message loops.