172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/extensions/extension_apitest.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/prefs/pref_service.h"
821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile.h"
94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/ui/browser.h"
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/browser_window.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/pref_names.h"
12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "net/base/mock_host_resolver.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Possible race in ChromeURLDataManager. http://crbug.com/59198
15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if defined(OS_MACOSX) || defined(OS_LINUX)
16513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_TabOnRemoved DISABLED_TabOnRemoved
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#else
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define MAYBE_TabOnRemoved TabOnRemoved
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
21513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Crashes on linux views. http://crbug.com/61592
22513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(OS_LINUX) && defined(TOOLKIT_VIEWS)
23513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_Tabs DISABLED_Tabs
24513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#else
25513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define MAYBE_Tabs Tabs
26513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif
27513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Window resizes are not completed by the time the callback happens,
2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// so these tests fail on linux. http://crbug.com/72369
3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#if defined(OS_LINUX)
3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define MAYBE_FocusWindowDoesNotExitFullscreen \
3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  DISABLED_FocusWindowDoesNotExitFullscreen
3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define MAYBE_UpdateWindowSizeExitsFullscreen \
3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  DISABLED_UpdateWindowSizeExitsFullscreen
3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#else
3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define MAYBE_FocusWindowDoesNotExitFullscreen FocusWindowDoesNotExitFullscreen
3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define MAYBE_UpdateWindowSizeExitsFullscreen UpdateWindowSizeExitsFullscreen
3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif
3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_Tabs) {
4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(StartTestServer());
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // The test creates a tab and checks that the URL of the new tab
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // is that of the new tab page.  Make sure the pref that controls
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // this is set.
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  browser()->profile()->GetPrefs()->SetBoolean(
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      prefs::kHomePageIsNewTabPage, true);
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
49513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "crud.html")) << message_;
50513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}
51513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
52513209b27ff55e2841eac0e4120199c23acce758Ben MurdochIN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabPinned) {
5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(StartTestServer());
54513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "pinned.html")) << message_;
55513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}
56513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
57513209b27ff55e2841eac0e4120199c23acce758Ben MurdochIN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabMove) {
5872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(StartTestServer());
59513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "move.html")) << message_;
60513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}
61513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
62513209b27ff55e2841eac0e4120199c23acce758Ben MurdochIN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabEvents) {
6372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(StartTestServer());
64513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "events.html")) << message_;
65513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}
66513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
67513209b27ff55e2841eac0e4120199c23acce758Ben MurdochIN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabRelativeURLs) {
6872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(StartTestServer());
69513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "relative_urls.html"))
70513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      << message_;
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
73dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenIN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabCrashBrowser) {
74dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ASSERT_TRUE(StartTestServer());
75dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "crash.html")) << message_;
76dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}
77dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabGetCurrent) {
79731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ASSERT_TRUE(StartTestServer());
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(RunExtensionTest("tabs/get_current")) << message_;
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabConnect) {
84731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ASSERT_TRUE(StartTestServer());
85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(RunExtensionTest("tabs/connect")) << message_;
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(ExtensionApiTest, MAYBE_TabOnRemoved) {
89731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ASSERT_TRUE(StartTestServer());
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(RunExtensionTest("tabs/on_removed")) << message_;
91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
933345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickIN_PROC_BROWSER_TEST_F(ExtensionApiTest, CaptureVisibleTabJpeg) {
94dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  host_resolver()->AddRule("a.com", "127.0.0.1");
95dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  host_resolver()->AddRule("b.com", "127.0.0.1");
96731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ASSERT_TRUE(StartTestServer());
973345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
983345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                  "test_jpeg.html")) << message_;
993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick}
1003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
1013345a6884c488ff3a535c2c9acdd33d74b37e311Iain MerrickIN_PROC_BROWSER_TEST_F(ExtensionApiTest, CaptureVisibleTabPng) {
102dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  host_resolver()->AddRule("a.com", "127.0.0.1");
103dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  host_resolver()->AddRule("b.com", "127.0.0.1");
104731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ASSERT_TRUE(StartTestServer());
1053345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  ASSERT_TRUE(RunExtensionSubtest("tabs/capture_visible_tab",
1063345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                                  "test_png.html")) << message_;
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
109c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(ExtensionApiTest, TabsOnUpdated) {
110731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ASSERT_TRUE(StartTestServer());
111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ASSERT_TRUE(RunExtensionTest("tabs/on_updated")) << message_;
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
11372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
11472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenIN_PROC_BROWSER_TEST_F(ExtensionApiTest,
11572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                       MAYBE_FocusWindowDoesNotExitFullscreen) {
11672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  browser()->window()->SetFullscreen(true);
11772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  bool is_fullscreen = browser()->window()->IsFullscreen();
11872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(RunExtensionTest("window_update/focus")) << message_;
11972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_EQ(is_fullscreen, browser()->window()->IsFullscreen());
12072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
12172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
12272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenIN_PROC_BROWSER_TEST_F(ExtensionApiTest,
12372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                       MAYBE_UpdateWindowSizeExitsFullscreen) {
12472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  browser()->window()->SetFullscreen(true);
12572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(RunExtensionTest("window_update/sizing")) << message_;
12672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_FALSE(browser()->window()->IsFullscreen());
12772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
12872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
12972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#if defined(OS_WIN)
13072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenIN_PROC_BROWSER_TEST_F(ExtensionApiTest, FocusWindowDoesNotUnmaximize) {
13172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  gfx::NativeWindow window = browser()->window()->GetNativeHandle();
13272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ::SendMessage(window, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
13372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(RunExtensionTest("window_update/focus")) << message_;
13472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(::IsZoomed(window));
13572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
13672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif  // OS_WIN
13772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
13872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenIN_PROC_BROWSER_TEST_F(ExtensionApiTest, IncognitoDisabledByPref) {
13972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(StartTestServer());
14072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
14172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  browser()->profile()->GetPrefs()->SetBoolean(prefs::kIncognitoEnabled, false);
14272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
14372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // This makes sure that creating an incognito window fails due to pref
14472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // (policy) being set.
14572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  ASSERT_TRUE(RunExtensionTest("tabs/incognito_disabled")) << message_;
14672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
147ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
148ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenIN_PROC_BROWSER_TEST_F(ExtensionApiTest, GetViewsOfCreatedPopup) {
149ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  ASSERT_TRUE(StartTestServer());
150ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "get_views_popup.html"))
151ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      << message_;
152ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
153ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenIN_PROC_BROWSER_TEST_F(ExtensionApiTest, GetViewsOfCreatedWindow) {
154ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  ASSERT_TRUE(StartTestServer());
155ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  ASSERT_TRUE(RunExtensionSubtest("tabs/basics", "get_views_window.html"))
156ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      << message_;
157ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
158