Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1803)

Unified Diff: chrome/browser/views/constrained_window_impl_interactive_uitest.cc

Issue 10282: Only block alert() requests from blocked popups; not all popups.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/views/constrained_window_impl_interactive_uitest.cc
===================================================================
--- chrome/browser/views/constrained_window_impl_interactive_uitest.cc (revision 5115)
+++ chrome/browser/views/constrained_window_impl_interactive_uitest.cc (working copy)
@@ -27,36 +27,49 @@
InteractiveConstrainedWindowTest() {
show_window_ = true;
}
-};
-TEST_F(InteractiveConstrainedWindowTest, TestOpenAndResizeTo) {
- scoped_ptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
- ASSERT_TRUE(browser.get());
+ virtual void SetUp() {
+ UITest::SetUp();
- scoped_ptr<WindowProxy> window(
- automation()->GetWindowForBrowser(browser.get()));
- ASSERT_TRUE(window.get());
+ browser_.reset(automation()->GetBrowserWindow(0));
+ ASSERT_TRUE(browser_.get());
- scoped_ptr<TabProxy> tab(browser->GetTab(0));
- ASSERT_TRUE(tab.get());
+ window_.reset(automation()->GetWindowForBrowser(browser_.get()));
+ ASSERT_TRUE(window_.get());
- std::wstring filename(test_data_directory_);
- file_util::AppendToPath(&filename, L"constrained_files");
- file_util::AppendToPath(&filename,
- L"constrained_window_onload_resizeto.html");
- ASSERT_TRUE(tab->NavigateToURL(net::FilePathToFileURL(filename)));
+ tab_.reset(browser_->GetTab(0));
+ ASSERT_TRUE(tab_.get());
+ }
- gfx::Rect tab_view_bounds;
- ASSERT_TRUE(window->GetViewBounds(VIEW_ID_TAB_CONTAINER,
- &tab_view_bounds, true));
+ void NavigateMainTabTo(const std::wstring& file_name) {
+ std::wstring filename(test_data_directory_);
+ file_util::AppendToPath(&filename, L"constrained_files");
+ file_util::AppendToPath(&filename, file_name);
+ ASSERT_TRUE(tab_->NavigateToURL(net::FilePathToFileURL(filename)));
+ }
- // Simulate a click of the actual link to force user_gesture to be
- // true; if we don't, the resulting popup will be constrained, which
- // isn't what we want to test.
- POINT link_point(tab_view_bounds.CenterPoint().ToPOINT());
- ASSERT_TRUE(window->SimulateOSClick(link_point,
- views::Event::EF_LEFT_BUTTON_DOWN));
+ void SimulateClickInCenterOf(const scoped_ptr<WindowProxy>& window) {
+ gfx::Rect tab_view_bounds;
+ ASSERT_TRUE(window->GetViewBounds(VIEW_ID_TAB_CONTAINER,
+ &tab_view_bounds, true));
+ // Simulate a click of the actual link to force user_gesture to be
+ // true; if we don't, the resulting popup will be constrained, which
+ // isn't what we want to test.
+ POINT link_point(tab_view_bounds.CenterPoint().ToPOINT());
+ ASSERT_TRUE(window->SimulateOSClick(link_point,
+ views::Event::EF_LEFT_BUTTON_DOWN));
+ }
+
+ scoped_ptr<BrowserProxy> browser_;
+ scoped_ptr<WindowProxy> window_;
+ scoped_ptr<TabProxy> tab_;
+};
+
+TEST_F(InteractiveConstrainedWindowTest, TestOpenAndResizeTo) {
+ NavigateMainTabTo(L"constrained_window_onload_resizeto.html");
+ SimulateClickInCenterOf(window_);
+
ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 1000));
scoped_ptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1));
@@ -74,12 +87,7 @@
ASSERT_EQ(300, rect.width());
ASSERT_EQ(320, rect.height());
- // Send a click to the popup window to test resizeTo.
- ASSERT_TRUE(popup_window->GetViewBounds(VIEW_ID_TAB_CONTAINER,
- &tab_view_bounds, true));
- POINT popup_link_point(tab_view_bounds.CenterPoint().ToPOINT());
- ASSERT_TRUE(popup_window->SimulateOSClick(
- popup_link_point, views::Event::EF_LEFT_BUTTON_DOWN));
+ SimulateClickInCenterOf(popup_window);
// No idea how to wait here other then sleeping. This timeout used to be
// lower, then we started hitting it before it was done. :(
@@ -120,33 +128,9 @@
// Tests that in the window.open() equivalent of a fork bomb, we stop building
// windows.
TEST_F(InteractiveConstrainedWindowTest, DontSpawnEndlessPopups) {
- scoped_ptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
- ASSERT_TRUE(browser.get());
+ NavigateMainTabTo(L"infinite_popups.html");
+ SimulateClickInCenterOf(window_);
- scoped_ptr<WindowProxy> window(
- automation()->GetWindowForBrowser(browser.get()));
- ASSERT_TRUE(window.get());
-
- scoped_ptr<TabProxy> tab(browser->GetTab(0));
- ASSERT_TRUE(tab.get());
-
- std::wstring filename(test_data_directory_);
- file_util::AppendToPath(&filename, L"constrained_files");
- file_util::AppendToPath(&filename,
- L"infinite_popups.html");
- ASSERT_TRUE(tab->NavigateToURL(net::FilePathToFileURL(filename)));
-
- gfx::Rect tab_view_bounds;
- ASSERT_TRUE(window->GetViewBounds(VIEW_ID_TAB_CONTAINER,
- &tab_view_bounds, true));
-
- // Simulate a click of the actual link to force user_gesture to be
- // true; if we don't, the resulting popup will be constrained, which
- // isn't what we want to test.
- POINT link_point(tab_view_bounds.CenterPoint().ToPOINT());
- ASSERT_TRUE(window->SimulateOSClick(link_point,
- views::Event::EF_LEFT_BUTTON_DOWN));
-
ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 1000));
scoped_ptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1));
@@ -194,34 +178,12 @@
}
}
-// Make sure that we refuse to close windows when a constrained popup is displayed.
+// Make sure that we refuse to close windows when a constrained popup is
+// displayed.
TEST_F(InteractiveConstrainedWindowTest, WindowOpenWindowClosePopup) {
- scoped_ptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
- ASSERT_TRUE(browser.get());
+ NavigateMainTabTo(L"openclose_main.html");
+ SimulateClickInCenterOf(window_);
- scoped_ptr<WindowProxy> window(
- automation()->GetWindowForBrowser(browser.get()));
- ASSERT_TRUE(window.get());
-
- scoped_ptr<TabProxy> tab(browser->GetTab(0));
- ASSERT_TRUE(tab.get());
-
- std::wstring filename(test_data_directory_);
- file_util::AppendToPath(&filename, L"constrained_files");
- file_util::AppendToPath(&filename, L"openclose_main.html");
- ASSERT_TRUE(tab->NavigateToURL(net::FilePathToFileURL(filename)));
-
- gfx::Rect tab_view_bounds;
- ASSERT_TRUE(window->GetViewBounds(VIEW_ID_TAB_CONTAINER,
- &tab_view_bounds, true));
-
- // Simulate a click of the actual link to force user_gesture to be
- // true; if we don't, the resulting popup will be constrained, which
- // isn't what we want to test.
- POINT link_point(tab_view_bounds.CenterPoint().ToPOINT());
- ASSERT_TRUE(window->SimulateOSClick(link_point,
- views::Event::EF_LEFT_BUTTON_DOWN));
-
ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 5000));
Sleep(1000);
@@ -246,3 +208,45 @@
// Ensure we didn't close the first popup window.
ASSERT_FALSE(automation()->WaitForWindowCountToBecome(1, 3000));
}
+
+TEST_F(InteractiveConstrainedWindowTest, BlockAlertFromBlockedPopup) {
+ NavigateMainTabTo(L"block_alert.html");
+
+ // Wait for there to be an app modal dialog (and fail if it's shown).
+ ASSERT_FALSE(automation()->WaitForAppModalDialog(4000));
+
+ // Ensure one browser window.
+ int browser_window_count;
+ ASSERT_TRUE(automation()->GetBrowserWindowCount(&browser_window_count));
+ ASSERT_EQ(1, browser_window_count);
+
+ // Ensure one blocked popup window: the popup didn't escape.
+ scoped_ptr<ConstrainedWindowProxy> popup_notification(
+ tab_->GetConstrainedWindow(0));
+ ASSERT_TRUE(popup_notification.get());
+ std::wstring title;
+ ASSERT_TRUE(popup_notification->GetTitle(&title));
+ int popup_count = 0;
+ ASSERT_TRUE(ParseCountOutOfTitle(title, &popup_count));
+ ASSERT_EQ(1, popup_count);
+}
+
+TEST_F(InteractiveConstrainedWindowTest, ShowAlertFromNormalPopup) {
+ NavigateMainTabTo(L"show_alert.html");
+ SimulateClickInCenterOf(window_);
+
+ ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 5000));
+
+ scoped_ptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1));
+ ASSERT_TRUE(popup_browser.get());
+ scoped_ptr<WindowProxy> popup_window(
+ automation()->GetWindowForBrowser(popup_browser.get()));
+ ASSERT_TRUE(popup_window.get());
+ scoped_ptr<TabProxy> popup_tab(popup_browser->GetTab(0));
+ ASSERT_TRUE(popup_tab.get());
+
+ SimulateClickInCenterOf(popup_window);
+
+ // Wait for there to be an app modal dialog.
+ ASSERT_TRUE(automation()->WaitForAppModalDialog(5000));
+}

Powered by Google App Engine
This is Rietveld 408576698