- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / extension_tabs_apitest.cc
1 // Copyright (c) 2012 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 "chrome/browser/extensions/extension_apitest.h"
6
7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/prefs/incognito_mode_prefs.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/browser.h"
11 #include "chrome/browser/ui/browser_window.h"
12 #include "chrome/common/chrome_switches.h"
13 #include "chrome/common/pref_names.h"
14 #include "chrome/common/url_constants.h"
15 #include "net/dns/mock_host_resolver.h"
16
17
18 // Window resizes are not completed by the time the callback happens,
19 // so these tests fail on linux/gtk. http://crbug.com/72369
20 #if defined(OS_LINUX) && !defined(USE_AURA)
21 #define MAYBE_UpdateWindowResize DISABLED_UpdateWindowResize
22 #define MAYBE_UpdateWindowShowState DISABLED_UpdateWindowShowState
23 #else
24
25 #if defined(USE_AURA) || defined(OS_MACOSX)
26 // Maximizing/fullscreen popup window doesn't work on aura's managed mode.
27 // See bug crbug.com/116305.
28 // Mac: http://crbug.com/103912
29 #define MAYBE_UpdateWindowShowState DISABLED_UpdateWindowShowState
30 #else
31 #define MAYBE_UpdateWindowShowState UpdateWindowShowState
32 #endif  // defined(USE_AURA) || defined(OS_MACOSX)
33
34 #define MAYBE_UpdateWindowResize UpdateWindowResize
35 #endif  // defined(OS_LINUX) && !defined(USE_AURA)
36
37 // http://crbug.com/145639
38 #if defined(OS_CHROMEOS) || defined(OS_WIN)
39 #define MAYBE_TabEvents DISABLED_TabEvents
40 #else
41 #define MAYBE_TabEvents TabEvents
42 #endif
43
44 class ExtensionApiNewTabTest : public ExtensionApiTest {
45  public:
46   ExtensionApiNewTabTest() {}
47   virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
48     ExtensionApiTest::SetUpCommandLine(command_line);
49     // Override the default which InProcessBrowserTest adds if it doesn't see a
50     // homepage.
51     command_line->AppendSwitchASCII(
52         switches::kHomePage, chrome::kChromeUINewTabURL);
53   }
54 };
55
56 IN_PROC_BROWSER_TEST_F(ExtensionApiNewTabTest, Tabs) {
57   // The test creates a tab and checks that the URL of the new tab
58   // is that of the new tab page.  Make sure the pref that controls
59   // this is set.
60   browser()->profile()->GetPrefs()->SetBoolean(
61       prefs::kHomePageIsNewTabPage, true);
62
63   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "crud.html")) << message_;
64 }
65
66 // Flaky on windows: http://crbug.com/238667
67 #if defined(OS_WIN)
68 #define MAYBE_Tabs2 DISABLED_Tabs2
69 #else
70 #define MAYBE_Tabs2 Tabs2
71 #endif
72 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_Tabs2) {
73   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "crud2.html")) << message_;
74 }
75
76 // crbug.com/149924
77 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_TabDuplicate) {
78   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "duplicate.html")) << message_;
79 }
80
81 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabSize) {
82   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "tab_size.html")) << message_;
83 }
84
85 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabUpdate) {
86   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "update.html")) << message_;
87 }
88
89 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabPinned) {
90   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "pinned.html")) << message_;
91 }
92
93 // Flaky on windows: http://crbug.com/238667
94 #if defined(OS_WIN)
95 #define MAYBE_TabMove DISABLED_TabMove
96 #else
97 #define MAYBE_TabMove TabMove
98 #endif
99 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_TabMove) {
100   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "move.html")) << message_;
101 }
102
103 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_TabEvents) {
104   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "events.html")) << message_;
105 }
106
107 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_TabRelativeURLs) {
108   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "relative_urls.html"))
109       << message_;
110 }
111
112 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabQuery) {
113   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "query.html")) << message_;
114 }
115
116 // Flaky on windows: http://crbug.com/239022
117 #if defined(OS_WIN)
118 #define MAYBE_TabHighlight DISABLED_TabHighlight
119 #else
120 #define MAYBE_TabHighlight TabHighlight
121 #endif
122 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_TabHighlight) {
123   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "highlight.html")) << message_;
124 }
125
126 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabCrashBrowser) {
127   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "crash.html")) << message_;
128 }
129
130 // Flaky on windows: http://crbug.com/238667
131 #if defined(OS_WIN)
132 #define MAYBE_TabOpener DISABLED_TabOpener
133 #else
134 #define MAYBE_TabOpener TabOpener
135 #endif
136 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_TabOpener) {
137   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "opener.html")) << message_;
138 }
139
140 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_TabGetCurrent) {
141   ASSERT_TRUE(RunExtensionTest("tabs/get_current")) << message_;
142 }
143
144 // Flaky on the trybots. See http://crbug.com/96725.
145 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_TabConnect) {
146   ASSERT_TRUE(StartEmbeddedTestServer());
147   ASSERT_TRUE(RunExtensionTest("tabs/connect")) << message_;
148 }
149
150 // Possible race in ChromeURLDataManager. http://crbug.com/59198
151 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_TabOnRemoved) {
152   ASSERT_TRUE(RunExtensionTest("tabs/on_removed")) << message_;
153 }
154
155 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_TabReload) {
156   ASSERT_TRUE(RunExtensionTest("tabs/reload")) << message_;
157 }
158
159 class ExtensionApiCaptureTest : public ExtensionApiTest {
160  public:
161   ExtensionApiCaptureTest() {}
162   virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
163     UseRealGLContexts();
164     ExtensionApiTest::SetUpCommandLine(command_line);
165   }
166 };
167
168 IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest,
169                        DISABLED_CaptureVisibleTabJpeg) {
170   host_resolver()->AddRule("a.com", "127.0.0.1");
171   host_resolver()->AddRule("b.com", "127.0.0.1");
172   ASSERT_TRUE(StartEmbeddedTestServer());
173   ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
174                                   "test_jpeg.html")) << message_;
175 }
176
177 IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest, DISABLED_CaptureVisibleTabPng) {
178   host_resolver()->AddRule("a.com", "127.0.0.1");
179   host_resolver()->AddRule("b.com", "127.0.0.1");
180   ASSERT_TRUE(StartEmbeddedTestServer());
181   ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
182                                   "test_png.html")) << message_;
183 }
184
185 // Times out on non-Windows.
186 // See http://crbug.com/80212
187 IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest,
188                        DISABLED_CaptureVisibleTabRace) {
189   ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
190                                   "test_race.html")) << message_;
191 }
192
193 IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest, CaptureVisibleFile) {
194   ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
195                                   "test_file.html")) << message_;
196 }
197
198 // Flaky on windows: http://crbug.com/238667
199 #if defined(OS_WIN)
200 #define MAYBE_CaptureVisibleNoFile DISABLED_CaptureVisibleNoFile
201 #else
202 #define MAYBE_CaptureVisibleNoFile CaptureVisibleNoFile
203 #endif
204 IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest, MAYBE_CaptureVisibleNoFile) {
205   ASSERT_TRUE(RunExtensionSubtest(
206       "tabs/capture_visible_tab", "test_nofile.html",
207       ExtensionApiTest::kFlagNone)) << message_;
208 }
209
210 IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest, CaptureVisibleDisabled) {
211   browser()->profile()->GetPrefs()->SetBoolean(prefs::kDisableScreenshots,
212                                                true);
213   ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
214                                   "test_disabled.html")) << message_;
215 }
216
217 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabsOnUpdated) {
218   ASSERT_TRUE(RunExtensionTest("tabs/on_updated")) << message_;
219 }
220
221 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabsNoPermissions) {
222   ASSERT_TRUE(RunExtensionTest("tabs/no_permissions")) << message_;
223 }
224
225 IN_PROC_BROWSER_TEST_F(ExtensionApiTest,
226                        MAYBE_UpdateWindowResize) {
227   ASSERT_TRUE(RunExtensionTest("window_update/resize")) << message_;
228 }
229
230 #if defined(OS_WIN) && !defined(USE_AURA)
231 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, FocusWindowDoesNotUnmaximize) {
232   gfx::NativeWindow window = browser()->window()->GetNativeWindow();
233   ::SendMessage(window, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
234   ASSERT_TRUE(RunExtensionTest("window_update/focus")) << message_;
235   ASSERT_TRUE(::IsZoomed(window));
236 }
237 #endif  // OS_WIN
238
239 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_UpdateWindowShowState) {
240   ASSERT_TRUE(RunExtensionTest("window_update/show_state")) << message_;
241 }
242
243 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, IncognitoDisabledByPref) {
244   IncognitoModePrefs::SetAvailability(browser()->profile()->GetPrefs(),
245                                       IncognitoModePrefs::DISABLED);
246
247   // This makes sure that creating an incognito window fails due to pref
248   // (policy) being set.
249   ASSERT_TRUE(RunExtensionTest("tabs/incognito_disabled")) << message_;
250 }
251
252 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_GetViewsOfCreatedPopup) {
253   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "get_views_popup.html"))
254       << message_;
255 }
256 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_GetViewsOfCreatedWindow) {
257   ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "get_views_window.html"))
258       << message_;
259 }
260
261 // Adding a new test? Awesome. But API tests are the old hotness. The
262 // new hotness is extension_test_utils. See tabs_test.cc for an example.
263 // We are trying to phase out many uses of API tests as they tend to be flaky.