blob: 452e67b889254bf0c58cd0dbd8e204bcb5855fbc [file] [log] [blame]
[email protected]518f4d92012-01-11 20:07:501// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]9b6d31d2009-09-01 01:44:032// 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
Ramin Halavati1e2a1af2018-08-13 07:05:587#include "base/strings/stringprintf.h"
avia2f4804a2015-12-24 23:11:138#include "build/build_config.h"
Ramin Halavati1e2a1af2018-08-13 07:05:589#include "chrome/browser/extensions/extension_tab_util.h"
[email protected]4e94ab32011-08-05 05:28:2710#include "chrome/browser/prefs/incognito_mode_prefs.h"
[email protected]8ecad5e2010-12-02 21:18:3311#include "chrome/browser/profiles/profile.h"
[email protected]2ad4a902010-11-17 06:05:1312#include "chrome/browser/ui/browser.h"
[email protected]00070c732011-04-09 15:31:3313#include "chrome/browser/ui/browser_window.h"
[email protected]886f1142012-05-03 20:00:1614#include "chrome/common/chrome_switches.h"
[email protected]dfd6ee452010-02-24 19:47:3115#include "chrome/common/pref_names.h"
[email protected]886f1142012-05-03 20:00:1616#include "chrome/common/url_constants.h"
brettwb1fc1b82016-02-02 00:19:0817#include "components/prefs/pref_service.h"
[email protected]f2cb3cf2013-03-21 01:40:5318#include "net/dns/mock_host_resolver.h"
[email protected]dfd6ee452010-02-24 19:47:3119
[email protected]517fce722014-01-15 05:16:1420#if defined(OS_WIN)
[email protected]517fce722014-01-15 05:16:1421#include "ui/aura/window.h"
[email protected]7a60cd3a2014-03-20 20:54:5722#include "ui/aura/window_tree_host.h"
[email protected]517fce722014-01-15 05:16:1423#endif
[email protected]3b20d0192010-10-14 17:29:5724
Devlin Croninef3e37e2018-05-14 23:47:2425class ExtensionApiTabTest : public extensions::ExtensionApiTest {
jambb11ed742017-05-01 17:27:5926 public:
27 void SetUpOnMainThread() override {
Devlin Croninef3e37e2018-05-14 23:47:2428 extensions::ExtensionApiTest::SetUpOnMainThread();
jambb11ed742017-05-01 17:27:5929 host_resolver()->AddRule("*", "127.0.0.1");
30 ASSERT_TRUE(StartEmbeddedTestServer());
31 }
32};
33
[email protected]bc7c22d2013-07-01 21:00:3034#if defined(USE_AURA) || defined(OS_MACOSX)
[email protected]ad0c8722012-03-02 20:17:4535// Maximizing/fullscreen popup window doesn't work on aura's managed mode.
36// See bug crbug.com/116305.
[email protected]46391872012-08-19 20:12:2537// Mac: http://crbug.com/103912
[email protected]ad0c8722012-03-02 20:17:4538#define MAYBE_UpdateWindowShowState DISABLED_UpdateWindowShowState
39#else
40#define MAYBE_UpdateWindowShowState UpdateWindowShowState
[email protected]bc7c22d2013-07-01 21:00:3041#endif // defined(USE_AURA) || defined(OS_MACOSX)
[email protected]ad0c8722012-03-02 20:17:4542
jambb11ed742017-05-01 17:27:5943class ExtensionApiNewTabTest : public ExtensionApiTabTest {
[email protected]886f1142012-05-03 20:00:1644 public:
45 ExtensionApiNewTabTest() {}
avi3ef9ec9e2014-12-22 22:50:1746 void SetUpCommandLine(base::CommandLine* command_line) override {
jambb11ed742017-05-01 17:27:5947 ExtensionApiTabTest::SetUpCommandLine(command_line);
[email protected]886f1142012-05-03 20:00:1648 // Override the default which InProcessBrowserTest adds if it doesn't see a
49 // homepage.
50 command_line->AppendSwitchASCII(
51 switches::kHomePage, chrome::kChromeUINewTabURL);
52 }
53};
54
Alexis Hetu5da0d0d2018-08-02 21:19:1155// Flaky on chromeos: http://crbug.com/870322
56#if defined(OS_CHROMEOS)
57#define MAYBE_Tabs DISABLED_Tabs
58#else
59#define MAYBE_Tabs Tabs
60#endif
61IN_PROC_BROWSER_TEST_F(ExtensionApiNewTabTest, MAYBE_Tabs) {
[email protected]dfd6ee452010-02-24 19:47:3162 // The test creates a tab and checks that the URL of the new tab
63 // is that of the new tab page. Make sure the pref that controls
64 // this is set.
65 browser()->profile()->GetPrefs()->SetBoolean(
66 prefs::kHomePageIsNewTabPage, true);
67
[email protected]9cc688d2010-11-01 06:18:3268 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "crud.html")) << message_;
69}
70
jambb11ed742017-05-01 17:27:5971IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabAudible) {
jared.sohn09a3ccc2015-07-09 03:47:3072 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "audible.html")) << message_;
73}
74
jam1d5d4e32015-08-16 22:10:5275// http://crbug.com/521410
jambb11ed742017-05-01 17:27:5976IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, DISABLED_TabMuted) {
jared.sohn09a3ccc2015-07-09 03:47:3077 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "muted.html")) << message_;
78}
79
[email protected]634c59f2013-05-07 16:30:2180// Flaky on windows: http://crbug.com/238667
81#if defined(OS_WIN)
82#define MAYBE_Tabs2 DISABLED_Tabs2
83#else
84#define MAYBE_Tabs2 Tabs2
85#endif
jambb11ed742017-05-01 17:27:5986IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, MAYBE_Tabs2) {
[email protected]d0591692011-06-07 23:52:4887 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "crud2.html")) << message_;
88}
89
[email protected]d45241c2012-09-17 14:27:3790// crbug.com/149924
jambb11ed742017-05-01 17:27:5991IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, DISABLED_TabDuplicate) {
[email protected]37bb5822012-09-10 15:09:5792 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "duplicate.html")) << message_;
93}
94
jambb11ed742017-05-01 17:27:5995IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabSize) {
[email protected]a16a5a52013-08-16 17:23:3596 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "tab_size.html")) << message_;
97}
98
jambb11ed742017-05-01 17:27:5999IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabUpdate) {
[email protected]a994358f2011-09-22 03:59:00100 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "update.html")) << message_;
101}
102
jambb11ed742017-05-01 17:27:59103IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabPinned) {
[email protected]4ce39882010-11-08 16:06:05104 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "pinned.html")) << message_;
105}
106
[email protected]fa9b5f82013-05-07 19:26:17107// Flaky on windows: http://crbug.com/238667
108#if defined(OS_WIN)
109#define MAYBE_TabMove DISABLED_TabMove
110#else
111#define MAYBE_TabMove TabMove
112#endif
jambb11ed742017-05-01 17:27:59113IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, MAYBE_TabMove) {
[email protected]9cc688d2010-11-01 06:18:32114 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "move.html")) << message_;
115}
116
jambb11ed742017-05-01 17:27:59117IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabEvents) {
[email protected]9cc688d2010-11-01 06:18:32118 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "events.html")) << message_;
119}
120
jambb11ed742017-05-01 17:27:59121IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, DISABLED_TabRelativeURLs) {
[email protected]9cc688d2010-11-01 06:18:32122 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "relative_urls.html"))
123 << message_;
[email protected]9b6d31d2009-09-01 01:44:03124}
[email protected]da9754b2010-04-01 14:56:19125
jambb11ed742017-05-01 17:27:59126IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabQuery) {
[email protected]8c3495c2011-09-28 03:32:30127 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "query.html")) << message_;
128}
129
[email protected]7c4f1ad2013-05-08 13:16:44130// Flaky on windows: http://crbug.com/239022
131#if defined(OS_WIN)
132#define MAYBE_TabHighlight DISABLED_TabHighlight
133#else
134#define MAYBE_TabHighlight TabHighlight
135#endif
jambb11ed742017-05-01 17:27:59136IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, MAYBE_TabHighlight) {
[email protected]8c3495c2011-09-28 03:32:30137 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "highlight.html")) << message_;
138}
139
jambb11ed742017-05-01 17:27:59140IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabCrashBrowser) {
[email protected]d33a22392011-02-24 21:39:35141 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "crash.html")) << message_;
142}
143
[email protected]b78885c2013-05-07 16:53:16144// Flaky on windows: http://crbug.com/238667
145#if defined(OS_WIN)
146#define MAYBE_TabOpener DISABLED_TabOpener
147#else
148#define MAYBE_TabOpener TabOpener
149#endif
jambb11ed742017-05-01 17:27:59150IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, MAYBE_TabOpener) {
[email protected]5fe4c122012-01-28 08:50:33151 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "opener.html")) << message_;
152}
153
jambb11ed742017-05-01 17:27:59154IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, DISABLED_TabGetCurrent) {
[email protected]893934382010-05-21 14:09:41155 ASSERT_TRUE(RunExtensionTest("tabs/get_current")) << message_;
156}
[email protected]e3eafb292010-04-14 21:30:41157
jambb11ed742017-05-01 17:27:59158IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabConnect) {
[email protected]893934382010-05-21 14:09:41159 ASSERT_TRUE(RunExtensionTest("tabs/connect")) << message_;
160}
[email protected]e3eafb292010-04-14 21:30:41161
[email protected]eacc2f42013-06-17 18:27:56162// Possible race in ChromeURLDataManager. http://crbug.com/59198
jambb11ed742017-05-01 17:27:59163IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, DISABLED_TabOnRemoved) {
[email protected]893934382010-05-21 14:09:41164 ASSERT_TRUE(RunExtensionTest("tabs/on_removed")) << message_;
[email protected]e3eafb292010-04-14 21:30:41165}
166
jambb11ed742017-05-01 17:27:59167IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, DISABLED_TabReload) {
[email protected]5d935112011-09-07 09:24:54168 ASSERT_TRUE(RunExtensionTest("tabs/reload")) << message_;
169}
170
jambb11ed742017-05-01 17:27:59171class ExtensionApiCaptureTest : public ExtensionApiTabTest {
[email protected]4baecad2013-09-12 23:00:36172 public:
173 ExtensionApiCaptureTest() {}
[email protected]577e2412014-01-22 01:42:52174
dcheng72191812014-10-28 20:49:56175 void SetUp() override {
[email protected]577e2412014-01-22 01:42:52176 EnablePixelOutput();
jambb11ed742017-05-01 17:27:59177 ExtensionApiTabTest::SetUp();
[email protected]4baecad2013-09-12 23:00:36178 }
179};
180
181IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest,
182 DISABLED_CaptureVisibleTabJpeg) {
[email protected]ff651392010-07-23 20:21:08183 ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
184 "test_jpeg.html")) << message_;
185}
186
[email protected]4baecad2013-09-12 23:00:36187IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest, DISABLED_CaptureVisibleTabPng) {
[email protected]ff651392010-07-23 20:21:08188 ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
189 "test_png.html")) << message_;
[email protected]da9754b2010-04-01 14:56:19190}
[email protected]5f362e012010-05-19 20:26:25191
[email protected]d389e152012-02-23 19:40:42192// Times out on non-Windows.
193// See http://crbug.com/80212
[email protected]4baecad2013-09-12 23:00:36194IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest,
195 DISABLED_CaptureVisibleTabRace) {
[email protected]7181ce52011-04-21 18:47:36196 ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
197 "test_race.html")) << message_;
198}
199
[email protected]6ee9e902014-04-28 12:00:40200
201// Disabled for being flaky, see http://crbug/367695.
202IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest,
203 DISABLED_CaptureVisibleFile) {
[email protected]d10f4602011-06-16 15:44:50204 ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
205 "test_file.html")) << message_;
206}
207
[email protected]4baecad2013-09-12 23:00:36208IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest, CaptureVisibleDisabled) {
[email protected]7ea48702012-09-03 20:41:06209 browser()->profile()->GetPrefs()->SetBoolean(prefs::kDisableScreenshots,
210 true);
211 ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
212 "test_disabled.html")) << message_;
213}
214
Konstantin Ganenko123a3a52018-03-01 02:26:54215IN_PROC_BROWSER_TEST_F(ExtensionApiCaptureTest, CaptureNullWindow) {
216 ASSERT_TRUE(RunExtensionTest("tabs/capture_visible_tab_null_window"))
217 << message_;
218}
219
jambb11ed742017-05-01 17:27:59220IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabsOnCreated) {
limasdf82dee7db2016-01-05 00:05:22221 ASSERT_TRUE(RunExtensionTest("tabs/on_created")) << message_;
222}
223
Istiaque Ahmed1e59aec2019-06-05 22:40:24224IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, LazyBackgroundTabsOnCreated) {
225 ASSERT_TRUE(RunExtensionTest("tabs/lazy_background_on_created")) << message_;
226}
227
jambb11ed742017-05-01 17:27:59228IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabsOnUpdated) {
[email protected]5f362e012010-05-19 20:26:25229 ASSERT_TRUE(RunExtensionTest("tabs/on_updated")) << message_;
230}
[email protected]1ee2f792011-02-07 13:22:35231
Guido Urdaneta634456e62016-10-19 13:05:32232// Flaky on Linux. http://crbug.com/657376.
233#if defined(OS_LINUX)
234#define MAYBE_TabsNoPermissions DISABLED_TabsNoPermissions
235#else
236#define MAYBE_TabsNoPermissions TabsNoPermissions
237#endif
jambb11ed742017-05-01 17:27:59238IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, MAYBE_TabsNoPermissions) {
[email protected]304fd152013-01-12 16:54:44239 ASSERT_TRUE(RunExtensionTest("tabs/no_permissions")) << message_;
240}
241
jambb11ed742017-05-01 17:27:59242IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, HostPermission) {
limasdf6dcdc442016-02-26 04:58:26243 ASSERT_TRUE(RunExtensionTest("tabs/host_permission")) << message_;
244}
245
Tsuyoshi Horo3cc2da92018-12-18 03:06:16246// Flaky on Windows, Mac and Linux. http://crbug.com/820110.
247#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
Hongchan Choi9c40fa52018-03-08 22:11:19248#define MAYBE_UpdateWindowResize DISABLED_UpdateWindowResize
249#else
250#define MAYBE_UpdateWindowResize UpdateWindowResize
251#endif
252IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, MAYBE_UpdateWindowResize) {
[email protected]518f4d92012-01-11 20:07:50253 ASSERT_TRUE(RunExtensionTest("window_update/resize")) << message_;
254}
255
[email protected]517fce722014-01-15 05:16:14256#if defined(OS_WIN)
jambb11ed742017-05-01 17:27:59257IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, FocusWindowDoesNotUnmaximize) {
[email protected]2374d1812014-03-04 03:42:27258 HWND window =
259 browser()->window()->GetNativeWindow()->GetHost()->GetAcceleratedWidget();
[email protected]d479b8e22011-02-09 05:19:49260 ::SendMessage(window, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
261 ASSERT_TRUE(RunExtensionTest("window_update/focus")) << message_;
262 ASSERT_TRUE(::IsZoomed(window));
263}
264#endif // OS_WIN
265
jambb11ed742017-05-01 17:27:59266IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, MAYBE_UpdateWindowShowState) {
[email protected]541e3ee2011-11-22 01:31:10267 ASSERT_TRUE(RunExtensionTest("window_update/show_state")) << message_;
268}
269
jambb11ed742017-05-01 17:27:59270IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, IncognitoDisabledByPref) {
[email protected]4e94ab32011-08-05 05:28:27271 IncognitoModePrefs::SetAvailability(browser()->profile()->GetPrefs(),
272 IncognitoModePrefs::DISABLED);
[email protected]1ee2f792011-02-07 13:22:35273
274 // This makes sure that creating an incognito window fails due to pref
275 // (policy) being set.
276 ASSERT_TRUE(RunExtensionTest("tabs/incognito_disabled")) << message_;
277}
[email protected]e524ff92011-03-30 13:26:58278
jambb11ed742017-05-01 17:27:59279IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, DISABLED_GetViewsOfCreatedPopup) {
[email protected]e524ff92011-03-30 13:26:58280 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "get_views_popup.html"))
281 << message_;
282}
jambb11ed742017-05-01 17:27:59283IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, DISABLED_GetViewsOfCreatedWindow) {
[email protected]e524ff92011-03-30 13:26:58284 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "get_views_window.html"))
285 << message_;
286}
[email protected]f215c3c2011-11-01 02:01:12287
jambb11ed742017-05-01 17:27:59288IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, OnUpdatedDiscardedState) {
andersoncss94afe442016-07-30 00:48:07289 ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "discarded.html")) << message_;
290}
291
jambb11ed742017-05-01 17:27:59292IN_PROC_BROWSER_TEST_F(ExtensionApiTabTest, TabOpenerCraziness) {
rdevlin.cronin5b3827b62017-03-08 02:38:09293 ASSERT_TRUE(RunExtensionTest("tabs/tab_opener_id"));
294}
295
Ramin Halavati1e2a1af2018-08-13 07:05:58296class IncognitoExtensionApiTabTest : public ExtensionApiTabTest,
297 public testing::WithParamInterface<bool> {
298};
299
300IN_PROC_BROWSER_TEST_P(IncognitoExtensionApiTabTest, Tabs) {
301 bool is_incognito_enabled = GetParam();
302 Browser* incognito_browser =
303 OpenURLOffTheRecord(browser()->profile(), GURL("about:blank"));
304 std::string args = base::StringPrintf(
305 R"({"isIncognito": %s, "windowId": %d})",
306 is_incognito_enabled ? "true" : "false",
307 extensions::ExtensionTabUtil::GetWindowId(incognito_browser));
308
309 EXPECT_TRUE(RunExtensionSubtestWithArgAndFlags(
310 "tabs/basics", "incognito.html", args.data(),
311 is_incognito_enabled ? extensions::ExtensionApiTest::kFlagEnableIncognito
312 : extensions::ExtensionApiTest::kFlagNone))
313 << message_;
314}
315
Victor Costan4a060e82019-01-28 18:25:34316INSTANTIATE_TEST_SUITE_P(, IncognitoExtensionApiTabTest, testing::Bool());
Ramin Halavati1e2a1af2018-08-13 07:05:58317
limasdfaa246b72015-04-24 01:13:35318// Adding a new test? Awesome. But API tests are the old hotness. The new
319// hotness is extension_function_test_utils. See tabs_test.cc for an example.
[email protected]f34706b2012-09-04 07:32:09320// We are trying to phase out many uses of API tests as they tend to be flaky.