Reland "Non-SFI mode: Switch to newlib. (patchset #4 id:60001 of https://codereview...
[chromium-blink-merge.git] / chrome / test / data / webui / webui_resource_browsertest.cc
blob4e7bf5c0146d1105c9c9b88f3d2188f9f21b0feb
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.
5 #include <vector>
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 {
20 public:
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
45 // function.
46 void AddLibrary(int resource_id) {
47 include_libraries_.push_back(resource_id);
50 private:
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")));