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

Unified Diff: chrome/browser/ui/webui/web_ui_browsertest.cc

Issue 7237030: Added options browser_tests using the generator and js handler framework. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: TestNavigationController in ui_test_utils, renamed LoadStart->JsInjectionReady, reordered methods. Created 9 years, 5 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
Index: chrome/browser/ui/webui/web_ui_browsertest.cc
diff --git a/chrome/browser/ui/webui/web_ui_browsertest.cc b/chrome/browser/ui/webui/web_ui_browsertest.cc
index b6e5da16b420471be82111e6392b2b8a920792ef..e33c4830c0c8b164a6b0f6d3500ff119faa84405 100644
--- a/chrome/browser/ui/webui/web_ui_browsertest.cc
+++ b/chrome/browser/ui/webui/web_ui_browsertest.cc
@@ -11,10 +11,12 @@
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/webui/chrome_web_ui.h"
-#include "chrome/browser/ui/webui/test_chrome_web_ui_factory.h"
+#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/url_constants.h"
+#include "chrome/test/test_tab_strip_model_observer.h"
#include "chrome/test/ui_test_utils.h"
#include "content/browser/tab_contents/tab_contents.h"
#include "testing/gtest/include/gtest/gtest-spi.h"
@@ -22,6 +24,7 @@
namespace {
+const FilePath::CharType kMockJS[] = FILE_PATH_LITERAL("mock4js.js");
const FilePath::CharType kWebUILibraryJS[] = FILE_PATH_LITERAL("test_api.js");
const FilePath::CharType kWebUITestFolder[] = FILE_PATH_LITERAL("webui");
base::LazyInstance<std::vector<std::string> > error_messages_(
@@ -43,6 +46,10 @@ bool LogHandler(int severity,
WebUIBrowserTest::~WebUIBrowserTest() {}
+void WebUIBrowserTest::AddLibrary(const FilePath& library_path) {
+ user_libraries_.push_back(library_path);
+}
+
bool WebUIBrowserTest::RunJavascriptFunction(const std::string& function_name) {
return RunJavascriptFunction(function_name, ConstValueVector());
}
@@ -69,6 +76,14 @@ bool WebUIBrowserTest::RunJavascriptFunction(
return RunJavascriptUsingHandler(function_name, function_arguments, false);
}
+bool WebUIBrowserTest::RunJavascriptTestF(const std::string& test_fixture,
+ const std::string& test_name) {
+ ConstValueVector args;
+ args.push_back(Value::CreateStringValue(test_fixture));
+ args.push_back(Value::CreateStringValue(test_name));
+ return RunJavascriptTest("RUN_TEST_F", args);
+}
+
bool WebUIBrowserTest::RunJavascriptTest(const std::string& test_name) {
return RunJavascriptTest(test_name, ConstValueVector());
}
@@ -95,19 +110,52 @@ bool WebUIBrowserTest::RunJavascriptTest(
return RunJavascriptUsingHandler(test_name, test_arguments, true);
}
-void WebUIBrowserTest::PreLoadJavascriptLibraries(bool override_chrome_send) {
+void WebUIBrowserTest::PreLoadJavascriptLibraries(
+ const std::string& preload_test_fixture,
+ const std::string& preload_test_name) {
ASSERT_FALSE(libraries_preloaded_);
- scoped_ptr<Value> override_chrome_send_arg(
- Value::CreateBooleanValue(override_chrome_send));
- RunJavascriptFunction("preloadJavascriptLibraries",
- *override_chrome_send_arg);
+ ConstValueVector args;
+ args.push_back(Value::CreateStringValue(preload_test_fixture));
+ args.push_back(Value::CreateStringValue(preload_test_name));
+ RunJavascriptFunction("preloadJavascriptLibraries", args);
libraries_preloaded_ = true;
}
+void WebUIBrowserTest::BrowsePreload(const GURL& browse_to,
+ const std::string& preload_test_fixture,
+ const std::string& preload_test_name) {
+ // Remember for callback OnJsInjectionReady().
+ preload_test_fixture_ = preload_test_fixture;
+ preload_test_name_ = preload_test_name;
+
+ TestNavigationObserver navigation_observer(
+ &browser()->GetSelectedTabContentsWrapper()->controller(), this, 1);
+ browser::NavigateParams params(
+ browser(), GURL(browse_to), PageTransition::TYPED);
+ params.disposition = CURRENT_TAB;
+ browser::Navigate(&params);
+ navigation_observer.WaitForObservation();
+}
+
+void WebUIBrowserTest::BrowsePrintPreload(
+ const GURL& browse_to,
+ const std::string& preload_test_fixture,
+ const std::string& preload_test_name) {
+ // Remember for callback OnJsInjectionReady().
+ preload_test_fixture_ = preload_test_fixture;
+ preload_test_name_ = preload_test_name;
+
+ ui_test_utils::NavigateToURL(browser(), browse_to);
+
+ TestTabStripModelObserver tabstrip_observer(
+ browser()->tabstrip_model(), this);
+ browser()->Print();
+ tabstrip_observer.WaitForObservation();
+}
+
WebUIBrowserTest::WebUIBrowserTest()
: test_handler_(new WebUITestHandler()),
- libraries_preloaded_(false),
- skip_test_(false) {}
+ libraries_preloaded_(false) {}
void WebUIBrowserTest::SetUpInProcessBrowserTestFixture() {
ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory_));
@@ -118,6 +166,13 @@ void WebUIBrowserTest::SetUpInProcessBrowserTestFixture() {
PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path);
ResourceBundle::AddDataPackToSharedInstance(resources_pack_path);
+ FilePath mockPath;
+ ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &mockPath));
+ mockPath = mockPath.AppendASCII("chrome");
+ mockPath = mockPath.AppendASCII("third_party");
+ mockPath = mockPath.AppendASCII("mock4js");
+ mockPath = mockPath.Append(kMockJS);
+ AddLibrary(mockPath);
AddLibrary(FilePath(kWebUILibraryJS));
}
@@ -125,11 +180,6 @@ WebUIMessageHandler* WebUIBrowserTest::GetMockMessageHandler() {
return NULL;
}
-void WebUIBrowserTest::skipTest(const std::string& skip_test_message) {
- skip_test_ = true;
- skip_test_message_.assign(skip_test_message);
-}
-
GURL WebUIBrowserTest::WebUITestDataPathToURL(
const FilePath::StringType& path) {
FilePath dir_test_data;
@@ -140,14 +190,17 @@ GURL WebUIBrowserTest::WebUITestDataPathToURL(
return net::FilePathToFileURL(test_path);
}
+void WebUIBrowserTest::OnJsInjectionReady() {
+ PreLoadJavascriptLibraries(preload_test_fixture_, preload_test_name_);
+}
+
void WebUIBrowserTest::BuildJavascriptLibraries(std::string* content) {
ASSERT_TRUE(content != NULL);
- std::string library_content, src_content;
-
std::vector<FilePath>::iterator user_libraries_iterator;
for (user_libraries_iterator = user_libraries_.begin();
user_libraries_iterator != user_libraries_.end();
++user_libraries_iterator) {
+ std::string library_content;
if (user_libraries_iterator->IsAbsolute()) {
ASSERT_TRUE(file_util::ReadFileToString(*user_libraries_iterator,
&library_content));
@@ -182,13 +235,6 @@ bool WebUIBrowserTest::RunJavascriptUsingHandler(
const std::string& function_name,
const ConstValueVector& function_arguments,
bool is_test) {
- if (skip_test_) {
- SUCCEED();
- LOG(WARNING)
- << "Skipping test " << function_name << ": " << skip_test_message_;
- return true;
- }
-
std::string content;
if (!libraries_preloaded_)
BuildJavascriptLibraries(&content);
@@ -227,23 +273,6 @@ void WebUIBrowserTest::SetupHandlers() {
GetMockMessageHandler()->Attach(web_ui_instance);
}
-void WebUIBrowserTest::AddLibrary(const FilePath& library_path) {
- user_libraries_.push_back(library_path);
-}
-
-IN_PROC_BROWSER_TEST_F(WebUIBrowserTest, TestSamplePass) {
- AddLibrary(FilePath(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(RunJavascriptTest("testAssertFalse"));
- ASSERT_FALSE(RunJavascriptTest("FAILS_testAssertFalse"));
- ASSERT_TRUE(RunJavascriptTest("testInitialFocus"));
- ASSERT_FALSE(RunJavascriptTest("testConsoleError"));
-}
-
// According to the interface for EXPECT_FATAL_FAILURE
// (http://code.google.com/p/googletest/wiki/AdvancedGuide#Catching_Failures)
// the statement must be statically available. Therefore, we make a static
@@ -270,6 +299,7 @@ class WebUIBrowserExpectFailTest : public WebUIBrowserTest {
private:
static WebUIBrowserTest* s_test_;
};
+
WebUIBrowserTest* WebUIBrowserExpectFailTest::s_test_ = NULL;
IN_PROC_BROWSER_TEST_F(WebUIBrowserExpectFailTest, TestFailsFast) {
@@ -278,48 +308,3 @@ IN_PROC_BROWSER_TEST_F(WebUIBrowserExpectFailTest, TestFailsFast) {
EXPECT_FATAL_FAILURE(RunJavascriptTestNoReturn("FAILS_BogusFunctionName"),
"WebUITestHandler::Observe");
}
-
-// crbug.com/88104 - v8_shell#host doesn't build when host=="arm".
-#if !defined(ARCH_CPU_ARM_FAMILY)
-// This test framework is used in the generated tests, which are included
-// below. WebUIBrowserTest requires being on a page which is a WebUI page. Using
-// the TestChromeWebUIFactory, we use a dummy URL |kChromeTestBrowserTestPass|,
-// which we force to be a WebUI page.
-class WebUIBrowserTestPass
- : public WebUIBrowserTest,
- public TestChromeWebUIFactory::WebUIProvider {
- private:
- // TestChromeWebUIFactory::WebUIProvider:
- virtual WebUI* NewWebUI(TabContents* tab_contents,
- const GURL& url) OVERRIDE {
- return new ChromeWebUI(tab_contents);
- }
-
- // InProcessBrowserTest:
- virtual void SetUpOnMainThread() OVERRIDE {
- WebUIBrowserTest::SetUpOnMainThread();
- ui_test_utils::NavigateToURL(browser(),
- GURL(kChromeTestBrowserTestPass));
- }
-
- virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
- WebUIBrowserTest::SetUpInProcessBrowserTestFixture();
- TestChromeWebUIFactory::AddFactoryOverride(
- GURL(kChromeTestBrowserTestPass).host(), this);
- }
-
- virtual void TearDownInProcessBrowserTestFixture() OVERRIDE {
- WebUIBrowserTest::TearDownInProcessBrowserTestFixture();
- TestChromeWebUIFactory::RemoveFactoryOverride(
- GURL(kChromeTestBrowserTestPass).host());
- }
-
- static const char kChromeTestBrowserTestPass[];
-};
-
-const char WebUIBrowserTestPass::kChromeTestBrowserTestPass[] =
- "chrome://WebUIBrowserTestPass";
-
-#include "js2webui/chrome/test/data/webui/sample_pass-inl.h"
-
-#endif // !defined(ARCH_CPU_ARM_FAMILY)

Powered by Google App Engine
This is Rietveld 408576698