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

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

Issue 7861024: Adds testing infrastructure to web_ui_browsertest to support testing HtmlDialogs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 3 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.h
diff --git a/chrome/browser/ui/webui/web_ui_browsertest.h b/chrome/browser/ui/webui/web_ui_browsertest.h
index 50876783ec58f35f14291ee6a767b5da6e292ee6..1a293cad83baee522a50764e7ae23be9f5b9e774 100644
--- a/chrome/browser/ui/webui/web_ui_browsertest.h
+++ b/chrome/browser/ui/webui/web_ui_browsertest.h
@@ -21,14 +21,32 @@ namespace base {
class Value;
}
-// This macro simplifies the declaration of simple javascript unit tests.
+// These macros simplify the declaration of simple javascript unit tests.
Sheridan Rawlins 2011/09/09 15:47:50 We shouldn't need any WEB_UI macros. These macros
flackr 2011/09/15 18:41:52 Done.
// Use:
// WEB_UI_UNITTEST_F(MyWebUIPageTest, myJavascriptUnittest);
+// WEB_UI_UNITTEST_F1(MyWebUIPageTest, myJavascriptUnittest, myArg);
+// WEB_UI_ASYNC_UNITTEST_F(MyWebUIPageTest, myJavascriptUnittest);
+// WEB_UI_ASYNC_UNITTEST_F1(MyWebUIPageTest, myJavascriptUnittest, myArg);
#define WEB_UI_UNITTEST_F(x, y) \
IN_PROC_BROWSER_TEST_F(x, y) { \
ASSERT_TRUE(RunJavascriptTest(#y)); \
}
+#define WEB_UI_UNITTEST_F1(x, y, z) \
+ IN_PROC_BROWSER_TEST_F(x, y) { \
+ ASSERT_TRUE(RunJavascriptTest(#y, z)); \
+ }
+
+#define WEB_UI_ASYNC_UNITTEST_F(x, y) \
+ IN_PROC_BROWSER_TEST_F(x, y) { \
+ ASSERT_TRUE(RunJavascriptAsyncTest(#y)); \
+ }
+
+#define WEB_UI_ASYNC_UNITTEST_F1(x, y, z) \
+ IN_PROC_BROWSER_TEST_F(x, y) { \
+ ASSERT_TRUE(RunJavascriptAsyncTest(#y, z)); \
+ }
+
// The runner of WebUI javascript based tests.
// See chrome/test/data/webui/test_api.js for the javascript side test API's.
//
@@ -37,7 +55,8 @@ class Value;
// and the lone test within this class.
class WebUIBrowserTest
: public InProcessBrowserTest,
- public TestNavigationObserver::JsInjectionReadyObserver {
+ public TestNavigationObserver::JsInjectionReadyObserver,
+ public NotificationObserver {
public:
typedef std::vector<const base::Value*> ConstValueVector;
virtual ~WebUIBrowserTest();
@@ -76,7 +95,7 @@ class WebUIBrowserTest
const ConstValueVector& test_arguments);
// Runs a test that may include calls to functions in test_api.js, and waits
- // for call to asyncTestDone(). Takes ownership of Value arguments.
+ // for call to testDone(). Takes ownership of Value arguments.
bool RunJavascriptAsyncTest(const std::string& test_name);
bool RunJavascriptAsyncTest(const std::string& test_name,
base::Value* arg);
@@ -125,6 +144,12 @@ class WebUIBrowserTest
// Tear down override for |kDummyURL|.
virtual void TearDownInProcessBrowserTestFixture() OVERRIDE;
+ // Observes the next HtmlDialog to be created.
+ virtual void ObserveNextHtmlDialog();
+
+ // Wait for HtmlDialog to have loaded.
+ virtual void WaitForHtmlDialogLoad();
+
// Returns a mock WebUI object under test (if any).
virtual WebUIMessageHandler* GetMockMessageHandler();
@@ -136,6 +161,11 @@ class WebUIBrowserTest
// TestNavigationObserver::JsInjectionReadyObserver implementation.
virtual void OnJsInjectionReady(RenderViewHost* render_view_host) OVERRIDE;
+ // NotificationObserver implementation.
+ virtual void Observe(int type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
// Builds a string containing all added javascript libraries.
void BuildJavascriptLibraries(string16* content);
@@ -178,6 +208,17 @@ class WebUIBrowserTest
// PreloadJavascriptLibraries().
std::string preload_test_fixture_;
std::string preload_test_name_;
+
+ // The WebUI instance used for testing.
+ WebUI* web_ui_instance_;
+
+ // Track whether the custom WebUI instance has loaded.
+ bool web_ui_instance_ready_;
+
+ // Track if a message loop is running waiting on notification.
+ bool message_loop_running_;
+
+ NotificationRegistrar registrar_;
};
#endif // CHROME_BROWSER_UI_WEBUI_WEB_UI_BROWSERTEST_H_

Powered by Google App Engine
This is Rietveld 408576698