summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/browser_navigator_browsertest.cc
diff options
context:
space:
mode:
authorstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-15 18:20:02 +0000
committerstevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-15 18:20:02 +0000
commit7d32999df933d9cec367af38665331d755c9120f (patch)
treeaaaad6f041d139b328c6cad690b358e29c1c2ae7 /chrome/browser/ui/browser_navigator_browsertest.cc
parentbe45d7c3673ff290fdf3025316b87db96a1f8e51 (diff)
downloadchromium_src-7d32999df933d9cec367af38665331d755c9120f.zip
chromium_src-7d32999df933d9cec367af38665331d755c9120f.tar.gz
chromium_src-7d32999df933d9cec367af38665331d755c9120f.tar.bz2
Don't focus popup windows / panels unless spawned by a user gesture.
BUG=chromium-os:4046 TEST=Test opening popup windows / panels with and without a user gesture on all platforms. Ensure that only windows opened with a user gesture are focused (activated). Review URL: http://codereview.chromium.org/6831020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81768 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/browser_navigator_browsertest.cc')
-rw-r--r--chrome/browser/ui/browser_navigator_browsertest.cc45
1 files changed, 35 insertions, 10 deletions
diff --git a/chrome/browser/ui/browser_navigator_browsertest.cc b/chrome/browser/ui/browser_navigator_browsertest.cc
index d2848d3..11b9a0c 100644
--- a/chrome/browser/ui/browser_navigator_browsertest.cc
+++ b/chrome/browser/ui/browser_navigator_browsertest.cc
@@ -28,7 +28,7 @@ browser::NavigateParams BrowserNavigatorTest::MakeNavigateParams(
Browser* browser) const {
browser::NavigateParams params(browser, GetGoogleURL(),
PageTransition::LINK);
- params.show_window = true;
+ params.window_action = browser::NavigateParams::SHOW_WINDOW;
return params;
}
@@ -245,9 +245,15 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopup) {
browser::NavigateParams p(MakeNavigateParams());
p.disposition = NEW_POPUP;
browser::Navigate(&p);
+ // Wait for new popup to to load and gain focus.
+ ui_test_utils::WaitForNavigationInCurrentTab(p.browser);
- // Navigate() should have opened a new popup window.
+ // Navigate() should have opened a new, focused popup window.
EXPECT_NE(browser(), p.browser);
+#if defined(OS_WIN)
+ // TODO(stevenjb): Enable this test for other OSs, see: crbug.com/79493
+ EXPECT_TRUE(p.browser->window()->IsActive());
+#endif
EXPECT_EQ(Browser::TYPE_POPUP, p.browser->type());
// We should have two windows, the browser() provided by the framework and the
@@ -340,6 +346,25 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
// TODO(beng): TBD.
}
+#if defined(OS_WIN)
+// TODO(stevenjb): Enable this test for other OSs, see: crbug.com/79493
+// This test verifies that navigating with window_action = SHOW_WINDOW_INACTIVE
+// does not focus a new new popup window.
+IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupUnfocused) {
+ browser::NavigateParams p(MakeNavigateParams());
+ p.disposition = NEW_POPUP;
+ p.window_action = browser::NavigateParams::SHOW_WINDOW_INACTIVE;
+ browser::Navigate(&p);
+ // Wait for new popup to load (and gain focus if the test fails).
+ ui_test_utils::WaitForNavigationInCurrentTab(p.browser);
+
+ // Navigate() should have opened a new, unfocused, popup window.
+ EXPECT_NE(browser(), p.browser);
+ EXPECT_EQ(Browser::TYPE_POPUP, p.browser->type());
+ EXPECT_FALSE(p.browser->window()->IsActive());
+}
+#endif
+
// This test verifies that navigating with WindowOpenDisposition = NEW_WINDOW
// always opens a new window.
IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewWindow) {
@@ -570,7 +595,7 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
browser::NavigateParams p(MakeNavigateParams());
p.disposition = SINGLETON_TAB;
p.url = GURL("chrome://settings/advanced");
- p.show_window = true;
+ p.window_action = browser::NavigateParams::SHOW_WINDOW;
p.path_behavior = browser::NavigateParams::IGNORE_AND_NAVIGATE;
browser::Navigate(&p);
@@ -602,7 +627,7 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
browser::NavigateParams p(MakeNavigateParams());
p.disposition = SINGLETON_TAB;
p.url = GURL("chrome://settings/advanced");
- p.show_window = true;
+ p.window_action = browser::NavigateParams::SHOW_WINDOW;
p.path_behavior = browser::NavigateParams::IGNORE_AND_NAVIGATE;
browser::Navigate(&p);
@@ -634,7 +659,7 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
browser::NavigateParams p(MakeNavigateParams());
p.disposition = SINGLETON_TAB;
p.url = GURL("chrome://settings/personal");
- p.show_window = true;
+ p.window_action = browser::NavigateParams::SHOW_WINDOW;
p.path_behavior = browser::NavigateParams::IGNORE_AND_NAVIGATE;
browser::Navigate(&p);
@@ -666,7 +691,7 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
browser::NavigateParams p(MakeNavigateParams());
p.disposition = SINGLETON_TAB;
p.url = GURL("chrome://settings/personal");
- p.show_window = true;
+ p.window_action = browser::NavigateParams::SHOW_WINDOW;
p.path_behavior = browser::NavigateParams::IGNORE_AND_STAY_PUT;
browser::Navigate(&p);
@@ -697,7 +722,7 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
browser::NavigateParams p(MakeNavigateParams());
p.disposition = SINGLETON_TAB;
p.url = singleton_url_target;
- p.show_window = true;
+ p.window_action = browser::NavigateParams::SHOW_WINDOW;
p.path_behavior = browser::NavigateParams::IGNORE_AND_NAVIGATE;
browser::Navigate(&p);
@@ -728,7 +753,7 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
browser::NavigateParams p(MakeNavigateParams());
p.disposition = SINGLETON_TAB;
p.url = singleton_url_target;
- p.show_window = true;
+ p.window_action = browser::NavigateParams::SHOW_WINDOW;
p.path_behavior = browser::NavigateParams::IGNORE_AND_NAVIGATE;
browser::Navigate(&p);
@@ -752,7 +777,7 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
browser::NavigateParams p(MakeNavigateParams(incognito_browser));
p.disposition = SINGLETON_TAB;
p.url = GURL("chrome://settings");
- p.show_window = true;
+ p.window_action = browser::NavigateParams::SHOW_WINDOW;
browser::Navigate(&p);
// The settings page should be opened in browser() window.
@@ -777,7 +802,7 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
browser::NavigateParams p(MakeNavigateParams(incognito_browser));
p.disposition = SINGLETON_TAB;
p.url = GURL("chrome://bookmarks");
- p.show_window = true;
+ p.window_action = browser::NavigateParams::SHOW_WINDOW;
browser::Navigate(&p);
// The bookmarks page should be opened in browser() window.