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 "chrome/browser/ui/browser.h"
8 #include "chrome/browser/ui/tabs/tab_strip_model.h"
9 #include "chrome/test/base/in_process_browser_test.h"
10 #include "chrome/test/base/ui_test_utils.h"
11 #include "content/public/browser/notification_registrar.h"
12 #include "content/public/browser/web_contents.h"
13 #include "content/public/test/browser_test_utils.h"
14 #include "ui/resources/grit/webui_resources.h"
16 class WebUIResourceBrowserTest
: public InProcessBrowserTest
{
18 // Runs all test functions in |file|, waiting for them to complete.
19 void RunTest(const base::FilePath
& file
) {
20 GURL url
= ui_test_utils::GetTestUrl(
21 base::FilePath(FILE_PATH_LITERAL("webui")), file
);
22 ui_test_utils::NavigateToURL(browser(), url
);
24 content::WebContents
* web_contents
=
25 browser()->tab_strip_model()->GetActiveWebContents();
26 ASSERT_TRUE(web_contents
);
27 EXPECT_TRUE(ExecuteWebUIResourceTest(web_contents
, include_libraries_
));
30 // Queues the library corresponding to |resource_id| for injection into the
31 // test. The code injection is performed post-load, so any common test
32 // initialization that depends on the library should be placed in a setUp
34 void AddLibrary(int resource_id
) {
35 include_libraries_
.push_back(resource_id
);
39 // Resource IDs for internal javascript libraries to inject into the test.
40 std::vector
<int> include_libraries_
;
43 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ArrayDataModelTest
) {
44 AddLibrary(IDR_WEBUI_JS_CR
);
45 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
46 AddLibrary(IDR_WEBUI_JS_CR_UI_ARRAY_DATA_MODEL
);
47 RunTest(base::FilePath(FILE_PATH_LITERAL("array_data_model_test.html")));
50 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, PropertyTest
) {
51 AddLibrary(IDR_WEBUI_JS_CR
);
52 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
53 RunTest(base::FilePath(FILE_PATH_LITERAL("cr_test.html")));
56 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, EventTargetTest
) {
57 AddLibrary(IDR_WEBUI_JS_CR
);
58 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
59 RunTest(base::FilePath(FILE_PATH_LITERAL("event_target_test.html")));
62 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ListTest
) {
63 AddLibrary(IDR_WEBUI_JS_CR
);
64 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
65 AddLibrary(IDR_WEBUI_JS_CR_UI
);
66 AddLibrary(IDR_WEBUI_JS_CR_UI_ARRAY_DATA_MODEL
);
67 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_ITEM
);
68 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_CONTROLLER
);
69 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL
);
70 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST
);
71 RunTest(base::FilePath(FILE_PATH_LITERAL("list_test.html")));
74 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, GridTest
) {
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
);
80 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_ITEM
);
81 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_CONTROLLER
);
82 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL
);
83 // Grid must be the last addition as it depends on list libraries.
84 AddLibrary(IDR_WEBUI_JS_CR_UI_GRID
);
85 RunTest(base::FilePath(FILE_PATH_LITERAL("grid_test.html")));
88 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, LinkControllerTest
) {
89 AddLibrary(IDR_WEBUI_JS_CR
);
90 AddLibrary(IDR_WEBUI_JS_CR_LINK_CONTROLLER
);
91 RunTest(base::FilePath(FILE_PATH_LITERAL("link_controller_test.html")));
94 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ListSelectionModelTest
) {
95 AddLibrary(IDR_WEBUI_JS_CR
);
96 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
97 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SELECTION_MODEL
);
98 RunTest(base::FilePath(FILE_PATH_LITERAL("list_selection_model_test.html")));
101 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ListSingleSelectionModelTest
) {
102 AddLibrary(IDR_WEBUI_JS_CR
);
103 AddLibrary(IDR_WEBUI_JS_CR_EVENT_TARGET
);
104 AddLibrary(IDR_WEBUI_JS_CR_UI_LIST_SINGLE_SELECTION_MODEL
);
105 RunTest(base::FilePath(FILE_PATH_LITERAL(
106 "list_single_selection_model_test.html")));
109 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, LocalStringsTest
) {
110 AddLibrary(IDR_WEBUI_JS_LOCAL_STRINGS
);
111 RunTest(base::FilePath(FILE_PATH_LITERAL("local_strings_test.html")));
114 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, MenuTest
) {
115 AddLibrary(IDR_WEBUI_JS_ASSERT
);
116 AddLibrary(IDR_WEBUI_JS_CR
);
117 AddLibrary(IDR_WEBUI_JS_CR_UI
);
118 AddLibrary(IDR_WEBUI_JS_CR_UI_COMMAND
);
119 AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_ITEM
);
120 AddLibrary(IDR_WEBUI_JS_CR_UI_MENU
);
121 RunTest(base::FilePath(FILE_PATH_LITERAL("menu_test.html")));
124 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, MockTimerTest
) {
125 RunTest(base::FilePath(FILE_PATH_LITERAL("mock_timer_test.html")));
128 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, ParseHtmlSubsetTest
) {
129 AddLibrary(IDR_WEBUI_JS_PARSE_HTML_SUBSET
);
130 RunTest(base::FilePath(FILE_PATH_LITERAL("parse_html_subset_test.html")));
133 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, PositionUtilTest
) {
134 AddLibrary(IDR_WEBUI_JS_CR
);
135 AddLibrary(IDR_WEBUI_JS_CR_UI_POSITION_UTIL
);
136 RunTest(base::FilePath(FILE_PATH_LITERAL("position_util_test.html")));
139 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest
, RepeatingButtonTest
) {
140 AddLibrary(IDR_WEBUI_JS_CR
);
141 AddLibrary(IDR_WEBUI_JS_CR_UI
);
142 AddLibrary(IDR_WEBUI_JS_CR_UI_REPEATING_BUTTON
);
143 RunTest(base::FilePath(FILE_PATH_LITERAL("repeating_button_test.html")));