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(¶ms); |
+ 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) |