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 "app/message_box_flags.h" | 5 #include "app/message_box_flags.h" |
6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
7 #include "base/platform_thread.h" | 7 #include "base/platform_thread.h" |
8 #include "chrome/browser/automation/url_request_mock_http_job.h" | 8 #include "chrome/browser/automation/url_request_mock_http_job.h" |
9 #include "chrome/common/chrome_switches.h" | 9 #include "chrome/common/chrome_switches.h" |
10 #include "chrome/test/automation/browser_proxy.h" | 10 #include "chrome/test/automation/browser_proxy.h" |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 URLRequestMockHTTPJob::GetMockUrl(L"title2.html")); | 139 URLRequestMockHTTPJob::GetMockUrl(L"title2.html")); |
140 PlatformThread::Sleep(400); | 140 PlatformThread::Sleep(400); |
141 NavigateToURL( | 141 NavigateToURL( |
142 URLRequestMockHTTPJob::GetMockUrl(L"title2.html")); | 142 URLRequestMockHTTPJob::GetMockUrl(L"title2.html")); |
143 | 143 |
144 CheckTitle(L"Title Of Awesomeness"); | 144 CheckTitle(L"Title Of Awesomeness"); |
145 } | 145 } |
146 | 146 |
147 void LoadUrlAndQuitBrowser(const std::string& html_content, | 147 void LoadUrlAndQuitBrowser(const std::string& html_content, |
148 const std::wstring& expected_title = L"") { | 148 const std::wstring& expected_title = L"") { |
149 scoped_ptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); | 149 scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); |
150 NavigateToDataURL(html_content, expected_title); | 150 NavigateToDataURL(html_content, expected_title); |
151 bool application_closed = false; | 151 bool application_closed = false; |
152 EXPECT_TRUE(CloseBrowser(browser.get(), &application_closed)); | 152 EXPECT_TRUE(CloseBrowser(browser.get(), &application_closed)); |
153 } | 153 } |
154 | 154 |
155 void ClickModalDialogButton(MessageBoxFlags::DialogButton button) { | 155 void ClickModalDialogButton(MessageBoxFlags::DialogButton button) { |
156 #if defined(OS_WIN) || defined(OS_LINUX) | 156 #if defined(OS_WIN) || defined(OS_LINUX) |
157 bool modal_dialog_showing = false; | 157 bool modal_dialog_showing = false; |
158 MessageBoxFlags::DialogButton available_buttons; | 158 MessageBoxFlags::DialogButton available_buttons; |
159 EXPECT_TRUE(automation()->WaitForAppModalDialog(3000)); | 159 EXPECT_TRUE(automation()->WaitForAppModalDialog(3000)); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 } | 232 } |
233 | 233 |
234 // Tests closing the browser on a page with an unload listener registered. | 234 // Tests closing the browser on a page with an unload listener registered. |
235 TEST_F(UnloadTest, BrowserCloseUnload) { | 235 TEST_F(UnloadTest, BrowserCloseUnload) { |
236 LoadUrlAndQuitBrowser(UNLOAD_HTML, L"unload"); | 236 LoadUrlAndQuitBrowser(UNLOAD_HTML, L"unload"); |
237 } | 237 } |
238 | 238 |
239 // Tests closing the browser with a beforeunload handler and clicking | 239 // Tests closing the browser with a beforeunload handler and clicking |
240 // OK in the beforeunload confirm dialog. | 240 // OK in the beforeunload confirm dialog. |
241 TEST_F(UnloadTest, BrowserCloseBeforeUnloadOK) { | 241 TEST_F(UnloadTest, BrowserCloseBeforeUnloadOK) { |
242 scoped_ptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); | 242 scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); |
243 NavigateToDataURL(BEFORE_UNLOAD_HTML, L"beforeunload"); | 243 NavigateToDataURL(BEFORE_UNLOAD_HTML, L"beforeunload"); |
244 | 244 |
245 CloseBrowserAsync(browser.get()); | 245 CloseBrowserAsync(browser.get()); |
246 ClickModalDialogButton(MessageBoxFlags::DIALOGBUTTON_OK); | 246 ClickModalDialogButton(MessageBoxFlags::DIALOGBUTTON_OK); |
247 WaitForBrowserClosed(); | 247 WaitForBrowserClosed(); |
248 EXPECT_FALSE(IsBrowserRunning()); | 248 EXPECT_FALSE(IsBrowserRunning()); |
249 } | 249 } |
250 | 250 |
251 // Tests closing the browser with a beforeunload handler and clicking | 251 // Tests closing the browser with a beforeunload handler and clicking |
252 // CANCEL in the beforeunload confirm dialog. | 252 // CANCEL in the beforeunload confirm dialog. |
253 TEST_F(UnloadTest, BrowserCloseBeforeUnloadCancel) { | 253 TEST_F(UnloadTest, BrowserCloseBeforeUnloadCancel) { |
254 scoped_ptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); | 254 scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); |
255 NavigateToDataURL(BEFORE_UNLOAD_HTML, L"beforeunload"); | 255 NavigateToDataURL(BEFORE_UNLOAD_HTML, L"beforeunload"); |
256 | 256 |
257 CloseBrowserAsync(browser.get()); | 257 CloseBrowserAsync(browser.get()); |
258 ClickModalDialogButton(MessageBoxFlags::DIALOGBUTTON_CANCEL); | 258 ClickModalDialogButton(MessageBoxFlags::DIALOGBUTTON_CANCEL); |
259 WaitForBrowserClosed(); | 259 WaitForBrowserClosed(); |
260 EXPECT_TRUE(IsBrowserRunning()); | 260 EXPECT_TRUE(IsBrowserRunning()); |
261 | 261 |
262 CloseBrowserAsync(browser.get()); | 262 CloseBrowserAsync(browser.get()); |
263 ClickModalDialogButton(MessageBoxFlags::DIALOGBUTTON_OK); | 263 ClickModalDialogButton(MessageBoxFlags::DIALOGBUTTON_OK); |
264 WaitForBrowserClosed(); | 264 WaitForBrowserClosed(); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 | 329 |
330 // Tests that if there's a renderer process with two tabs, one of which has an | 330 // Tests that if there's a renderer process with two tabs, one of which has an |
331 // unload handler, and the other doesn't, the tab that doesn't have an unload | 331 // unload handler, and the other doesn't, the tab that doesn't have an unload |
332 // handler can be closed. If this test fails, the Close() call will hang. | 332 // handler can be closed. If this test fails, the Close() call will hang. |
333 TEST_F(UnloadTest, BrowserCloseTabWhenOtherTabHasListener) { | 333 TEST_F(UnloadTest, BrowserCloseTabWhenOtherTabHasListener) { |
334 NavigateToDataURL(CLOSE_TAB_WHEN_OTHER_TAB_HAS_LISTENER, L"only_one_unload"); | 334 NavigateToDataURL(CLOSE_TAB_WHEN_OTHER_TAB_HAS_LISTENER, L"only_one_unload"); |
335 int window_count; | 335 int window_count; |
336 automation()->GetBrowserWindowCount(&window_count); | 336 automation()->GetBrowserWindowCount(&window_count); |
337 ASSERT_EQ(2, window_count); | 337 ASSERT_EQ(2, window_count); |
338 | 338 |
339 scoped_ptr<BrowserProxy> popup_browser_proxy( | 339 scoped_refptr<BrowserProxy> popup_browser_proxy( |
340 automation()->GetBrowserWindow(1)); | 340 automation()->GetBrowserWindow(1)); |
341 ASSERT_TRUE(popup_browser_proxy.get()); | 341 ASSERT_TRUE(popup_browser_proxy.get()); |
342 int popup_tab_count; | 342 int popup_tab_count; |
343 EXPECT_TRUE(popup_browser_proxy->GetTabCount(&popup_tab_count)); | 343 EXPECT_TRUE(popup_browser_proxy->GetTabCount(&popup_tab_count)); |
344 EXPECT_EQ(1, popup_tab_count); | 344 EXPECT_EQ(1, popup_tab_count); |
345 scoped_ptr<TabProxy> popup_tab(popup_browser_proxy->GetActiveTab()); | 345 scoped_refptr<TabProxy> popup_tab(popup_browser_proxy->GetActiveTab()); |
346 std::wstring popup_title; | 346 std::wstring popup_title; |
347 ASSERT_TRUE(popup_tab.get() != NULL); | 347 ASSERT_TRUE(popup_tab.get() != NULL); |
348 EXPECT_TRUE(popup_tab->GetTabTitle(&popup_title)); | 348 EXPECT_TRUE(popup_tab->GetTabTitle(&popup_title)); |
349 EXPECT_EQ(std::wstring(L"popup"), popup_title); | 349 EXPECT_EQ(std::wstring(L"popup"), popup_title); |
350 EXPECT_TRUE(popup_tab->Close(true)); | 350 EXPECT_TRUE(popup_tab->Close(true)); |
351 | 351 |
352 scoped_ptr<BrowserProxy> main_browser_proxy( | 352 scoped_refptr<BrowserProxy> main_browser_proxy( |
353 automation()->GetBrowserWindow(0)); | 353 automation()->GetBrowserWindow(0)); |
354 ASSERT_TRUE(main_browser_proxy.get()); | 354 ASSERT_TRUE(main_browser_proxy.get()); |
355 int main_tab_count; | 355 int main_tab_count; |
356 EXPECT_TRUE(main_browser_proxy->GetTabCount(&main_tab_count)); | 356 EXPECT_TRUE(main_browser_proxy->GetTabCount(&main_tab_count)); |
357 EXPECT_EQ(1, main_tab_count); | 357 EXPECT_EQ(1, main_tab_count); |
358 scoped_ptr<TabProxy> main_tab(main_browser_proxy->GetActiveTab()); | 358 scoped_refptr<TabProxy> main_tab(main_browser_proxy->GetActiveTab()); |
359 std::wstring main_title; | 359 std::wstring main_title; |
360 ASSERT_TRUE(main_tab.get() != NULL); | 360 ASSERT_TRUE(main_tab.get() != NULL); |
361 EXPECT_TRUE(main_tab->GetTabTitle(&main_title)); | 361 EXPECT_TRUE(main_tab->GetTabTitle(&main_title)); |
362 EXPECT_EQ(std::wstring(L"only_one_unload"), main_title); | 362 EXPECT_EQ(std::wstring(L"only_one_unload"), main_title); |
363 } | 363 } |
364 | 364 |
365 // TODO(ojan): Add tests for unload/beforeunload that have multiple tabs | 365 // TODO(ojan): Add tests for unload/beforeunload that have multiple tabs |
366 // and multiple windows. | 366 // and multiple windows. |
OLD | NEW |