Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / test / data / webui / webui_resource_browsertest.cc
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.
4
5 #include <vector>
6
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"
15
16 class WebUIResourceBrowserTest : public InProcessBrowserTest {
17  public:
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);
23
24     content::WebContents* web_contents =
25         browser()->tab_strip_model()->GetActiveWebContents();
26     ASSERT_TRUE(web_contents);
27     EXPECT_TRUE(ExecuteWebUIResourceTest(web_contents, include_libraries_));
28   }
29
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
33   // function.
34   void AddLibrary(int resource_id) {
35     include_libraries_.push_back(resource_id);
36   }
37
38  private:
39   // Resource IDs for internal javascript libraries to inject into the test.
40   std::vector<int> include_libraries_;
41 };
42
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")));
48 }
49
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")));
54 }
55
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")));
60 }
61
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")));
72 }
73
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")));
86 }
87
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")));
92 }
93
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")));
99 }
100
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")));
107 }
108
109 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MenuTest) {
110   AddLibrary(IDR_WEBUI_JS_ASSERT);
111   AddLibrary(IDR_WEBUI_JS_CR);
112   AddLibrary(IDR_WEBUI_JS_CR_UI);
113   AddLibrary(IDR_WEBUI_JS_CR_UI_COMMAND);
114   AddLibrary(IDR_WEBUI_JS_CR_UI_MENU_ITEM);
115   AddLibrary(IDR_WEBUI_JS_CR_UI_MENU);
116   RunTest(base::FilePath(FILE_PATH_LITERAL("menu_test.html")));
117 }
118
119 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, MockTimerTest) {
120   RunTest(base::FilePath(FILE_PATH_LITERAL("mock_timer_test.html")));
121 }
122
123 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ParseHtmlSubsetTest) {
124   AddLibrary(IDR_WEBUI_JS_PARSE_HTML_SUBSET);
125   RunTest(base::FilePath(FILE_PATH_LITERAL("parse_html_subset_test.html")));
126 }
127
128 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, PositionUtilTest) {
129   AddLibrary(IDR_WEBUI_JS_CR);
130   AddLibrary(IDR_WEBUI_JS_CR_UI_POSITION_UTIL);
131   RunTest(base::FilePath(FILE_PATH_LITERAL("position_util_test.html")));
132 }
133
134 IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, RepeatingButtonTest) {
135   AddLibrary(IDR_WEBUI_JS_CR);
136   AddLibrary(IDR_WEBUI_JS_CR_UI);
137   AddLibrary(IDR_WEBUI_JS_CR_UI_REPEATING_BUTTON);
138   RunTest(base::FilePath(FILE_PATH_LITERAL("repeating_button_test.html")));
139 }