1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 #include "base/path_service.h"
8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/tabs/tab_strip_model.h"
10 #include "chrome/grit/options_test_resources.h"
11 #include "chrome/test/base/in_process_browser_test.h"
12 #include "chrome/test/base/ui_test_utils.h"
13 #include "content/public/browser/notification_registrar.h"
14 #include "content/public/browser/web_contents.h"
15 #include "content/public/test/browser_test_utils.h"
16 #include "ui/base/resource/resource_bundle.h"
17 #include "ui/resources/grit/webui_resources.h"
19 class WebUIResourceBrowserTest
: public InProcessBrowserTest
{
21 void SetUpOnMainThread() override
{
22 // Load resources that are only used by browser_tests.
23 base::FilePath pak_path
;
24 ASSERT_TRUE(PathService::Get(base::DIR_MODULE
, &pak_path
));
25 pak_path
= pak_path
.AppendASCII("browser_tests.pak");
26 ResourceBundle::GetSharedInstance().AddDataPackFromPath(
27 pak_path
, ui::SCALE_FACTOR_NONE
);
30 // Runs all test functions in |file|, waiting for them to complete.
31 void RunTest(const base::FilePath
& file
) {
32 GURL url
= ui_test_utils::GetTestUrl(
33 base::FilePath(FILE_PATH_LITERAL("webui")), file
);
34 ui_test_utils::NavigateToURL(browser(), url
);
36 content::WebContents
* web_contents
=
37 browser()->tab_strip_model()->GetActiveWebContents();
38 ASSERT_TRUE(web_contents
);
39 EXPECT_TRUE(ExecuteWebUIResourceTest(web_contents
, include_libraries_
));
42 // Queues the library corresponding to |resource_id| for injection into the
43 // test. The code injection is performed post-load, so any common test
44 // initialization that depends on the library should be placed in a setUp
46 void AddLibrary(int resource_id
) {
47 include_libraries_
.push_back(resource_id
);
51 // Resource IDs for internal javascript libraries to inject into the test.
52 std::vector
<int> include_libraries_
;
55 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ArrayDataModelTest
) {
56 AddLibrary(IDR_WEBUI_JS_CR
);
57 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
58 AddLibrary(IDR_WEBUI_JS_CR_UI_ARRAY_DATA_MODEL
);
59 RunTest(base::FilePath(FILE_PATH_LITERAL("array_data_model_test.html")));
62 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, CrTest
) {
63 AddLibrary(IDR_WEBUI_JS_CR
);
64 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
65 RunTest(base::FilePath(FILE_PATH_LITERAL("cr_test.html")));
68 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, EventTargetTest
) {
69 AddLibrary(IDR_WEBUI_JS_CR
);
70 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
71 RunTest(base::FilePath(FILE_PATH_LITERAL("event_target_test.html")));
74 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ListTest
) {
75 AddLibrary(IDR_WEBUI_JS_CR
);
76 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
77 AddLibrary(IDR_WEBUI_JS_CR_UI
);
78 AddLibrary(IDR_WEBUI_JS_CR_UI_ARRAY_DATA_MODEL
);
79 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_ITEM
);
80 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_CONTROLLER
);
81 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL
);
82 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST
);
83 RunTest(base::FilePath(FILE_PATH_LITERAL("list_test.html")));
86 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, GridTest
) {
87 AddLibrary(IDR_WEBUI_JS_CR
);
88 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
89 AddLibrary(IDR_WEBUI_JS_CR_UI
);
90 AddLibrary(IDR_WEBUI_JS_CR_UI_ARRAY_DATA_MODEL
);
91 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST
);
92 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_ITEM
);
93 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_CONTROLLER
);
94 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL
);
95 // Grid must be the last addition as it depends on list libraries.
96 AddLibrary(IDR_WEBUI_JS_CR_UI_GRID
);
97 RunTest(base::FilePath(FILE_PATH_LITERAL("grid_test.html")));
100 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, LinkControllerTest
) {
101 AddLibrary(IDR_WEBUI_JS_CR
);
102 AddLibrary(IDR_WEBUI_JS_CR_LINK_CONTROLLER
);
103 RunTest(base::FilePath(FILE_PATH_LITERAL("link_controller_test.html")));
106 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ListSelectionModelTest
) {
107 AddLibrary(IDR_WEBUI_JS_CR
);
108 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
109 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL
);
110 RunTest(base::FilePath(FILE_PATH_LITERAL("list_selection_model_test.html")));
113 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ListSingleSelectionModelTest
) {
114 AddLibrary(IDR_WEBUI_JS_CR
);
115 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
116 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SINGLE_SELECTION_MODEL
);
117 RunTest(base::FilePath(FILE_PATH_LITERAL(
118 "list_single_selection_model_test.html")));
121 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, InlineEditableListTest
) {
122 AddLibrary(IDR_WEBUI_JS_CR
);
123 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
124 AddLibrary(IDR_WEBUI_JS_CR_UI
);
125 AddLibrary(IDR_WEBUI_JS_CR_UI_ARRAY_DATA_MODEL
);
126 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_ITEM
);
127 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_CONTROLLER
);
128 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL
);
129 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST
);
130 AddLibrary(IDR_WEBUI_JS_LOAD_TIME_DATA
);
131 AddLibrary(IDR_OPTIONS_DELETABLE_ITEM_LIST
);
132 AddLibrary(IDR_OPTIONS_INLINE_EDITABLE_LIST
);
133 RunTest(base::FilePath(FILE_PATH_LITERAL(
134 "inline_editable_list_test.html")));
137 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, MenuTest
) {
138 AddLibrary(IDR_WEBUI_JS_ASSERT
);
139 AddLibrary(IDR_WEBUI_JS_CR
);
140 AddLibrary(IDR_WEBUI_JS_CR_UI
);
141 AddLibrary(IDR_WEBUI_JS_CR_UI_COMMAND
);
142 AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_ITEM
);
143 AddLibrary(IDR_WEBUI_JS_CR_UI_MENU
);
144 RunTest(base::FilePath(FILE_PATH_LITERAL("menu_test.html")));
147 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, MockTimerTest
) {
148 RunTest(base::FilePath(FILE_PATH_LITERAL("mock_timer_test.html")));
151 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ParseHtmlSubsetTest
) {
152 AddLibrary(IDR_WEBUI_JS_PARSE_HTML_SUBSET
);
153 RunTest(base::FilePath(FILE_PATH_LITERAL("parse_html_subset_test.html")));
156 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, PositionUtilTest
) {
157 AddLibrary(IDR_WEBUI_JS_CR
);
158 AddLibrary(IDR_WEBUI_JS_CR_UI_POSITION_UTIL
);
159 RunTest(base::FilePath(FILE_PATH_LITERAL("position_util_test.html")));
162 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, RepeatingButtonTest
) {
163 AddLibrary(IDR_WEBUI_JS_CR
);
164 AddLibrary(IDR_WEBUI_JS_CR_UI
);
165 AddLibrary(IDR_WEBUI_JS_CR_UI_REPEATING_BUTTON
);
166 RunTest(base::FilePath(FILE_PATH_LITERAL("repeating_button_test.html")));
169 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, CommandTest
) {
170 AddLibrary(IDR_WEBUI_JS_ASSERT
);
171 AddLibrary(IDR_WEBUI_JS_CR
);
172 AddLibrary(IDR_WEBUI_JS_CR_UI
);
173 AddLibrary(IDR_WEBUI_JS_CR_UI_COMMAND
);
174 RunTest(base::FilePath(FILE_PATH_LITERAL("command_test.html")));
177 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ContextMenuHandlerTest
) {
178 AddLibrary(IDR_WEBUI_JS_ASSERT
);
179 AddLibrary(IDR_WEBUI_JS_EVENT_TRACKER
);
180 AddLibrary(IDR_WEBUI_JS_CR
);
181 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
182 AddLibrary(IDR_WEBUI_JS_CR_UI
);
183 AddLibrary(IDR_WEBUI_JS_CR_UI_POSITION_UTIL
);
184 AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_ITEM
);
185 AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_BUTTON
);
186 AddLibrary(IDR_WEBUI_JS_CR_UI_MENU
);
187 AddLibrary(IDR_WEBUI_JS_CR_UI_CONTEXT_MENU_HANDLER
);
188 RunTest(base::FilePath(FILE_PATH_LITERAL("context_menu_handler_test.html")));
191 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, MenuButtonTest
) {
192 AddLibrary(IDR_WEBUI_JS_ASSERT
);
193 AddLibrary(IDR_WEBUI_JS_EVENT_TRACKER
);
194 AddLibrary(IDR_WEBUI_JS_CR
);
195 AddLibrary(IDR_WEBUI_JS_CR_UI
);
196 AddLibrary(IDR_WEBUI_JS_CR_UI_POSITION_UTIL
);
197 AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_BUTTON
);
198 AddLibrary(IDR_WEBUI_JS_CR_UI_MENU
);
199 RunTest(base::FilePath(FILE_PATH_LITERAL("menu_button_test.html")));