diff options
author | dtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-30 21:37:16 +0000 |
---|---|---|
committer | dtseng@chromium.org <dtseng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-30 21:37:16 +0000 |
commit | c3fea5f8118111c0263ea7a6404e64da121194d3 (patch) | |
tree | 59677ccac6c52f87b14cac72cc1c5e2d77ef5bd4 /content/browser/webui | |
parent | 99d364a272e478b323e08798b68811185f7cb965 (diff) | |
download | chromium_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.cc | 35 | ||||
-rw-r--r-- | content/browser/webui/web_ui_browsertest.h | 22 | ||||
-rw-r--r-- | content/browser/webui/web_ui_handler_browsertest.cc | 9 | ||||
-rw-r--r-- | content/browser/webui/web_ui_handler_browsertest.h | 4 |
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. |