diff options
author | stevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 18:20:02 +0000 |
---|---|---|
committer | stevenjb@google.com <stevenjb@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 18:20:02 +0000 |
commit | 7d32999df933d9cec367af38665331d755c9120f (patch) | |
tree | aaaad6f041d139b328c6cad690b358e29c1c2ae7 /chrome/browser/ui/browser_navigator_browsertest.cc | |
parent | be45d7c3673ff290fdf3025316b87db96a1f8e51 (diff) | |
download | chromium_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.cc | 45 |
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. |