| OLD | NEW |
| 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
| 9 #include "base/gfx/rect.h" | 9 #include "base/gfx/rect.h" |
| 10 #include "chrome/browser/view_ids.h" | 10 #include "chrome/browser/view_ids.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 // isn't what we want to test. | 54 // isn't what we want to test. |
| 55 ASSERT_TRUE(window->SimulateOSClick(tab_view_bounds.CenterPoint(), | 55 ASSERT_TRUE(window->SimulateOSClick(tab_view_bounds.CenterPoint(), |
| 56 views::Event::EF_LEFT_BUTTON_DOWN)); | 56 views::Event::EF_LEFT_BUTTON_DOWN)); |
| 57 } | 57 } |
| 58 | 58 |
| 59 scoped_refptr<BrowserProxy> browser_; | 59 scoped_refptr<BrowserProxy> browser_; |
| 60 scoped_refptr<WindowProxy> window_; | 60 scoped_refptr<WindowProxy> window_; |
| 61 scoped_refptr<TabProxy> tab_; | 61 scoped_refptr<TabProxy> tab_; |
| 62 }; | 62 }; |
| 63 | 63 |
| 64 TEST_F(BlockedPopupContainerInteractiveTest, DISABLED_TestOpenAndResizeTo) { | 64 TEST_F(BlockedPopupContainerInteractiveTest, TestOpenAndResizeTo) { |
| 65 NavigateMainTabTo(L"constrained_window_onload_resizeto.html"); | 65 NavigateMainTabTo(L"constrained_window_onload_resizeto.html"); |
| 66 SimulateClickInCenterOf(window_); | 66 SimulateClickInCenterOf(window_); |
| 67 | 67 |
| 68 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 1000)); | 68 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 1000)); |
| 69 | 69 |
| 70 scoped_refptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1)); | 70 scoped_refptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1)); |
| 71 ASSERT_TRUE(popup_browser != NULL); | 71 ASSERT_TRUE(popup_browser != NULL); |
| 72 scoped_refptr<WindowProxy> popup_window(popup_browser->GetWindow()); | 72 scoped_refptr<WindowProxy> popup_window(popup_browser->GetWindow()); |
| 73 ASSERT_TRUE(popup_window != NULL); | 73 ASSERT_TRUE(popup_window != NULL); |
| 74 | 74 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 93 // lower, then we started hitting it before it was done. :( | 93 // lower, then we started hitting it before it was done. :( |
| 94 PlatformThread::Sleep(5000); | 94 PlatformThread::Sleep(5000); |
| 95 | 95 |
| 96 // The actual content will be LESS than (200, 200) because resizeTo | 96 // The actual content will be LESS than (200, 200) because resizeTo |
| 97 // deals with a window's outer{Width,Height} instead of its | 97 // deals with a window's outer{Width,Height} instead of its |
| 98 // inner{Width,Height}. | 98 // inner{Width,Height}. |
| 99 is_timeout = false; | 99 is_timeout = false; |
| 100 ASSERT_TRUE(popup_window->GetViewBoundsWithTimeout( | 100 ASSERT_TRUE(popup_window->GetViewBoundsWithTimeout( |
| 101 VIEW_ID_TAB_CONTAINER, &rect, false, 1000, &is_timeout)); | 101 VIEW_ID_TAB_CONTAINER, &rect, false, 1000, &is_timeout)); |
| 102 ASSERT_FALSE(is_timeout); | 102 ASSERT_FALSE(is_timeout); |
| 103 EXPECT_LT(rect.height(), 200); |
| 104 #if defined(OS_LINUX) |
| 105 // On Linux we may run in an environment where there is no window frame. In |
| 106 // this case our width might be exactly 200. The height will still be less |
| 107 // because we have to show the location bar. |
| 108 EXPECT_LE(rect.width(), 200); |
| 109 #else |
| 103 EXPECT_LT(rect.width(), 200); | 110 EXPECT_LT(rect.width(), 200); |
| 104 EXPECT_LT(rect.height(), 200); | 111 #endif |
| 105 } | 112 } |
| 106 | 113 |
| 107 // TODO(estade): port. | |
| 108 #if !defined(OS_LINUX) | |
| 109 // Helper function used to get the number of blocked popups out of the window | 114 // Helper function used to get the number of blocked popups out of the window |
| 110 // title. | 115 // title. |
| 111 bool ParseCountOutOfTitle(const std::wstring& title, int* output) { | 116 bool ParseCountOutOfTitle(const std::wstring& title, int* output) { |
| 112 // Since we will be reading the number of popup windows open by grabbing the | 117 // Since we will be reading the number of popup windows open by grabbing the |
| 113 // number out of the window title, and that format string is localized, we | 118 // number out of the window title, and that format string is localized, we |
| 114 // need to find out the offset into that string. | 119 // need to find out the offset into that string. |
| 115 const wchar_t* placeholder = L"XXXX"; | 120 const wchar_t* placeholder = L"XXXX"; |
| 116 size_t offset = | 121 size_t offset = |
| 117 l10n_util::GetStringF(IDS_POPUPS_BLOCKED_COUNT, placeholder). | 122 l10n_util::GetStringF(IDS_POPUPS_BLOCKED_COUNT, placeholder). |
| 118 find(placeholder); | 123 find(placeholder); |
| 119 | 124 |
| 120 std::wstring number; | 125 std::wstring number; |
| 121 while (offset < title.size() && iswdigit(title[offset])) { | 126 while (offset < title.size() && iswdigit(title[offset])) { |
| 122 number += title[offset]; | 127 number += title[offset]; |
| 123 offset++; | 128 offset++; |
| 124 } | 129 } |
| 125 | 130 |
| 126 return StringToInt(WideToUTF16(number), output); | 131 return StringToInt(WideToUTF16(number), output); |
| 127 } | 132 } |
| 128 | 133 |
| 129 // Tests that in the window.open() equivalent of a fork bomb, we stop building | 134 // Tests that in the window.open() equivalent of a fork bomb, we stop building |
| 130 // windows. | 135 // windows. |
| 131 TEST_F(BlockedPopupContainerInteractiveTest, DISABLED_DontSpawnEndlessPopups) { | 136 TEST_F(BlockedPopupContainerInteractiveTest, DontSpawnEndlessPopups) { |
| 132 NavigateMainTabTo(L"infinite_popups.html"); | 137 NavigateMainTabTo(L"infinite_popups.html"); |
| 133 SimulateClickInCenterOf(window_); | 138 SimulateClickInCenterOf(window_); |
| 134 | 139 |
| 135 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 1000)); | 140 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 1000)); |
| 136 | 141 |
| 137 scoped_refptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1)); | 142 scoped_refptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1)); |
| 138 ASSERT_TRUE(popup_browser.get()); | 143 ASSERT_TRUE(popup_browser.get()); |
| 139 scoped_refptr<TabProxy> popup_tab(popup_browser->GetTab(0)); | 144 scoped_refptr<TabProxy> popup_tab(popup_browser->GetTab(0)); |
| 140 ASSERT_TRUE(popup_tab.get()); | 145 ASSERT_TRUE(popup_tab.get()); |
| 141 | 146 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 164 } | 169 } |
| 165 | 170 |
| 166 EXPECT_GE(new_popup_window_count, popup_window_count); | 171 EXPECT_GE(new_popup_window_count, popup_window_count); |
| 167 EXPECT_LE(new_popup_window_count, kMaxPopupWindows); | 172 EXPECT_LE(new_popup_window_count, kMaxPopupWindows); |
| 168 popup_window_count = new_popup_window_count; | 173 popup_window_count = new_popup_window_count; |
| 169 } | 174 } |
| 170 } | 175 } |
| 171 | 176 |
| 172 // Make sure that we refuse to close windows when a constrained popup is | 177 // Make sure that we refuse to close windows when a constrained popup is |
| 173 // displayed. | 178 // displayed. |
| 174 TEST_F(BlockedPopupContainerInteractiveTest, DISABLED_WindowOpenWindowClosePopup
) { | 179 TEST_F(BlockedPopupContainerInteractiveTest, WindowOpenWindowClosePopup) { |
| 175 NavigateMainTabTo(L"openclose_main.html"); | 180 NavigateMainTabTo(L"openclose_main.html"); |
| 176 SimulateClickInCenterOf(window_); | 181 SimulateClickInCenterOf(window_); |
| 177 | 182 |
| 178 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 5000)); | 183 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 5000)); |
| 179 | 184 |
| 180 // Make sure we have a blocked popup notification | 185 // Make sure we have a blocked popup notification |
| 181 scoped_refptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1)); | 186 scoped_refptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1)); |
| 182 ASSERT_TRUE(popup_browser.get()); | 187 ASSERT_TRUE(popup_browser.get()); |
| 183 scoped_refptr<WindowProxy> popup_window(popup_browser->GetWindow()); | 188 scoped_refptr<WindowProxy> popup_window(popup_browser->GetWindow()); |
| 184 ASSERT_TRUE(popup_window.get()); | 189 ASSERT_TRUE(popup_window.get()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 200 int browser_window_count; | 205 int browser_window_count; |
| 201 ASSERT_TRUE(automation()->GetBrowserWindowCount(&browser_window_count)); | 206 ASSERT_TRUE(automation()->GetBrowserWindowCount(&browser_window_count)); |
| 202 ASSERT_EQ(1, browser_window_count); | 207 ASSERT_EQ(1, browser_window_count); |
| 203 | 208 |
| 204 // Ensure one blocked popup window: the popup didn't escape. | 209 // Ensure one blocked popup window: the popup didn't escape. |
| 205 int popup_count = 0; | 210 int popup_count = 0; |
| 206 ASSERT_TRUE(tab_->GetBlockedPopupCount(&popup_count)); | 211 ASSERT_TRUE(tab_->GetBlockedPopupCount(&popup_count)); |
| 207 ASSERT_EQ(1, popup_count); | 212 ASSERT_EQ(1, popup_count); |
| 208 } | 213 } |
| 209 | 214 |
| 210 TEST_F(BlockedPopupContainerInteractiveTest, DISABLED_ShowAlertFromNormalPopup)
{ | 215 TEST_F(BlockedPopupContainerInteractiveTest, ShowAlertFromNormalPopup) { |
| 211 NavigateMainTabTo(L"show_alert.html"); | 216 NavigateMainTabTo(L"show_alert.html"); |
| 212 SimulateClickInCenterOf(window_); | 217 SimulateClickInCenterOf(window_); |
| 213 | 218 |
| 214 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 5000)); | 219 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 5000)); |
| 215 | 220 |
| 216 scoped_refptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1)); | 221 scoped_refptr<BrowserProxy> popup_browser(automation()->GetBrowserWindow(1)); |
| 217 ASSERT_TRUE(popup_browser.get()); | 222 ASSERT_TRUE(popup_browser.get()); |
| 218 scoped_refptr<WindowProxy> popup_window(popup_browser->GetWindow()); | 223 scoped_refptr<WindowProxy> popup_window(popup_browser->GetWindow()); |
| 219 ASSERT_TRUE(popup_window.get()); | 224 ASSERT_TRUE(popup_window.get()); |
| 220 scoped_refptr<TabProxy> popup_tab(popup_browser->GetTab(0)); | 225 scoped_refptr<TabProxy> popup_tab(popup_browser->GetTab(0)); |
| 221 ASSERT_TRUE(popup_tab.get()); | 226 ASSERT_TRUE(popup_tab.get()); |
| 222 | 227 |
| 223 SimulateClickInCenterOf(popup_window); | 228 SimulateClickInCenterOf(popup_window); |
| 224 | 229 |
| 225 // Wait for there to be an app modal dialog. | 230 // Wait for there to be an app modal dialog. |
| 226 ASSERT_TRUE(automation()->WaitForAppModalDialog(5000)); | 231 ASSERT_TRUE(automation()->WaitForAppModalDialog(5000)); |
| 227 } | 232 } |
| 228 | 233 |
| 229 // Make sure that window focus works while creating a popup window so that we | 234 // Make sure that window focus works while creating a popup window so that we |
| 230 // don't | 235 // don't |
| 231 TEST_F(BlockedPopupContainerInteractiveTest, DISABLED_DontBreakOnBlur) { | 236 TEST_F(BlockedPopupContainerInteractiveTest, DontBreakOnBlur) { |
| 232 NavigateMainTabTo(L"window_blur_test.html"); | 237 NavigateMainTabTo(L"window_blur_test.html"); |
| 233 SimulateClickInCenterOf(window_); | 238 SimulateClickInCenterOf(window_); |
| 234 | 239 |
| 235 // Wait for the popup window to open. | 240 // Wait for the popup window to open. |
| 236 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 1000)); | 241 ASSERT_TRUE(automation()->WaitForWindowCountToBecome(2, 1000)); |
| 237 | 242 |
| 238 // We popup shouldn't be closed by the onblur handler. | 243 // We popup shouldn't be closed by the onblur handler. |
| 239 ASSERT_FALSE(automation()->WaitForWindowCountToBecome(1, 1500)); | 244 ASSERT_FALSE(automation()->WaitForWindowCountToBecome(1, 1500)); |
| 240 } | 245 } |
| 241 #endif | |
| OLD | NEW |