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

Side by Side Diff: chrome/browser/ui/webui/web_ui_browsertest.h

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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_UI_WEBUI_WEB_UI_BROWSERTEST_H_ 5 #ifndef CHROME_BROWSER_UI_WEBUI_WEB_UI_BROWSERTEST_H_
6 #define CHROME_BROWSER_UI_WEBUI_WEB_UI_BROWSERTEST_H_ 6 #define CHROME_BROWSER_UI_WEBUI_WEB_UI_BROWSERTEST_H_
7 #pragma once 7 #pragma once
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "base/file_path.h" 11 #include "base/file_path.h"
12 #include "chrome/browser/ui/webui/web_ui_test_handler.h" 12 #include "chrome/browser/ui/webui/web_ui_test_handler.h"
13 #include "chrome/test/in_process_browser_test.h" 13 #include "chrome/test/in_process_browser_test.h"
14 #include "chrome/test/test_navigation_observer.h"
14 15
15 class Value; 16 class Value;
16 class WebUIMessageHandler; 17 class WebUIMessageHandler;
17 18
18 // This macro simplifies the declaration of simple javascript unit tests. 19 // This macro simplifies the declaration of simple javascript unit tests.
19 // Use: 20 // Use:
20 // WEB_UI_UNITTEST_F(MyWebUIPageTest, myJavascriptUnittest); 21 // WEB_UI_UNITTEST_F(MyWebUIPageTest, myJavascriptUnittest);
21 #define WEB_UI_UNITTEST_F(x, y) \ 22 #define WEB_UI_UNITTEST_F(x, y) \
22 IN_PROC_BROWSER_TEST_F(x, y) { \ 23 IN_PROC_BROWSER_TEST_F(x, y) { \
23 ASSERT_TRUE(RunJavascriptTest(#y)); \ 24 ASSERT_TRUE(RunJavascriptTest(#y)); \
24 } 25 }
25 26
26 // The runner of WebUI javascript based tests. 27 // The runner of WebUI javascript based tests.
27 // See chrome/test/data/webui/test_api.js for the javascript side test API's. 28 // See chrome/test/data/webui/test_api.js for the javascript side test API's.
28 // 29 //
29 // These tests should follow the form given in: 30 // These tests should follow the form given in:
30 // chrome/test/data/webui/sample_downloads.js. 31 // chrome/test/data/webui/sample_downloads.js.
31 // and the lone test within this class. 32 // and the lone test within this class.
32 class WebUIBrowserTest : public InProcessBrowserTest { 33 class WebUIBrowserTest
34 : public InProcessBrowserTest,
35 public TestNavigationObserver::JsInjectionReadyObserver {
33 public: 36 public:
34 typedef std::vector<const Value*> ConstValueVector; 37 typedef std::vector<const Value*> ConstValueVector;
35 virtual ~WebUIBrowserTest(); 38 virtual ~WebUIBrowserTest();
36 39
37 // Add a custom helper JS library for your test. 40 // Add a custom helper JS library for your test.
38 // If a relative path is specified, it'll be read 41 // If a relative path is specified, it'll be read
39 // as relative to the test data dir. 42 // as relative to the test data dir.
40 void AddLibrary(const FilePath& library_path); 43 void AddLibrary(const FilePath& library_path);
41 44
42 // Runs a javascript function in the context of all libraries. 45 // Runs a javascript function in the context of all libraries.
43 // Note that calls to functions in test_api.js are not supported. 46 // Note that calls to functions in test_api.js are not supported.
44 bool RunJavascriptFunction(const std::string& function_name); 47 bool RunJavascriptFunction(const std::string& function_name);
45 bool RunJavascriptFunction(const std::string& function_name, 48 bool RunJavascriptFunction(const std::string& function_name,
46 const Value& arg); 49 const Value& arg);
47 bool RunJavascriptFunction(const std::string& function_name, 50 bool RunJavascriptFunction(const std::string& function_name,
48 const Value& arg1, 51 const Value& arg1,
49 const Value& arg2); 52 const Value& arg2);
50 bool RunJavascriptFunction(const std::string& function_name, 53 bool RunJavascriptFunction(const std::string& function_name,
51 const ConstValueVector& function_arguments); 54 const ConstValueVector& function_arguments);
52 55
56 // Runs a test fixture that may include calls to functions in test_api.js.
57 bool RunJavascriptTestF(const std::string& test_fixture,
58 const std::string& test_name);
59
53 // Runs a test that may include calls to functions in test_api.js. 60 // Runs a test that may include calls to functions in test_api.js.
54 bool RunJavascriptTest(const std::string& test_name); 61 bool RunJavascriptTest(const std::string& test_name);
55 bool RunJavascriptTest(const std::string& test_name, 62 bool RunJavascriptTest(const std::string& test_name,
56 const Value& arg); 63 const Value& arg);
57 bool RunJavascriptTest(const std::string& test_name, 64 bool RunJavascriptTest(const std::string& test_name,
58 const Value& arg1, 65 const Value& arg1,
59 const Value& arg2); 66 const Value& arg2);
60 bool RunJavascriptTest(const std::string& test_name, 67 bool RunJavascriptTest(const std::string& test_name,
61 const ConstValueVector& test_arguments); 68 const ConstValueVector& test_arguments);
62 69
63 // Preloads the javascript libraries and sets the |libraries_preloaded| flag 70 // Preloads the javascript libraries and sets the |libraries_preloaded| flag
64 // to prevent re-loading at next javascript invocation. If 71 // to prevent re-loading at next javascript invocation. If
65 // |override_chrome_send| is true, then chrome.send is overridden for 72 // |override_chrome_send| is true, then chrome.send is overridden for
66 // javascript to register handlers. 73 // javascript to register handlers.
67 void PreLoadJavascriptLibraries(bool override_chrome_send); 74 void PreLoadJavascriptLibraries(const std::string& preload_test_fixture,
75 const std::string& preload_test_name);
76
77 // Called by javascript-generated test bodies to browse to a page and preload
78 // the javascript for the given |preload_test_fixture| and
79 // |preload_test_name|. chrome.send will be overridden to allow javascript
80 // handler mocking.
81 void BrowsePreload(const GURL& browse_to,
82 const std::string& preload_test_fixture,
83 const std::string& preload_test_name);
84
85 // Called by javascript-generated test bodies to browse to a page and preload
86 // the javascript for the given |preload_test_fixture| and
87 // |preload_test_name|. chrome.send will be overridden to allow javascript
88 // handler mocking.
89 void BrowsePrintPreload(const GURL& browse_to,
90 const std::string& preload_test_fixture,
91 const std::string& preload_test_name);
68 92
69 protected: 93 protected:
70 WebUIBrowserTest(); 94 WebUIBrowserTest();
71 95
72 // Setup test path. 96 // Setup test path.
73 virtual void SetUpInProcessBrowserTestFixture(); 97 virtual void SetUpInProcessBrowserTestFixture();
74 98
75 // Returns a mock WebUI object under test (if any). 99 // Returns a mock WebUI object under test (if any).
76 virtual WebUIMessageHandler* GetMockMessageHandler(); 100 virtual WebUIMessageHandler* GetMockMessageHandler();
77 101
78 // Skip this test with |skip_test_message|.
79 void skipTest(const std::string& skip_test_message);
80
81 // Returns a file:// GURL constructed from |path| inside the test data dir for 102 // Returns a file:// GURL constructed from |path| inside the test data dir for
82 // webui tests. 103 // webui tests.
83 static GURL WebUITestDataPathToURL(const FilePath::StringType& path); 104 static GURL WebUITestDataPathToURL(const FilePath::StringType& path);
84 105
85 private: 106 private:
107 // TestNavigationObserver::JsInjectionReadyObserver implementation.
108 virtual void OnJsInjectionReady() OVERRIDE;
109
86 // Builds a string containing all added javascript libraries. 110 // Builds a string containing all added javascript libraries.
87 void BuildJavascriptLibraries(std::string* content); 111 void BuildJavascriptLibraries(std::string* content);
88 112
89 // Builds a string with a call to the runTest JS function, passing the 113 // Builds a string with a call to the runTest JS function, passing the
90 // given test and its arguments. 114 // given test and its arguments.
91 string16 BuildRunTestJSCall(const std::string& test_name, 115 string16 BuildRunTestJSCall(const std::string& test_name,
92 const WebUIBrowserTest::ConstValueVector& args); 116 const WebUIBrowserTest::ConstValueVector& args);
93 117
94 // Calls the specified function with all libraries available. If |is_test| 118 // Calls the specified function with all libraries available. If |is_test|
95 // is true, the framework listens for pass fail messages from javascript. 119 // is true, the framework listens for pass fail messages from javascript.
(...skipping 11 matching lines...) Expand all
107 // Location of test data (currently test/data/webui). 131 // Location of test data (currently test/data/webui).
108 FilePath test_data_directory_; 132 FilePath test_data_directory_;
109 133
110 // User added libraries 134 // User added libraries
111 std::vector<FilePath> user_libraries_; 135 std::vector<FilePath> user_libraries_;
112 136
113 // Indicates that the libraries have been pre-loaded and to not load them 137 // Indicates that the libraries have been pre-loaded and to not load them
114 // again. 138 // again.
115 bool libraries_preloaded_; 139 bool libraries_preloaded_;
116 140
117 bool skip_test_; 141 // Saves the states of |test_fixture| and |test_name| for calling
118 std::string skip_test_message_; 142 // PreloadJavascriptLibraries().
143 std::string preload_test_fixture_;
144 std::string preload_test_name_;
119 }; 145 };
120 146
121 #endif // CHROME_BROWSER_UI_WEBUI_WEB_UI_BROWSERTEST_H_ 147 #endif // CHROME_BROWSER_UI_WEBUI_WEB_UI_BROWSERTEST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698