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/net/url_request_mock_http_job.h" | 8 #include "chrome/browser/net/url_request_mock_http_job.h" |
9 #include "chrome/browser/view_ids.h" | 9 #include "chrome/browser/view_ids.h" |
10 #include "chrome/common/chrome_switches.h" | 10 #include "chrome/common/chrome_switches.h" |
11 #include "chrome/test/automation/browser_proxy.h" | 11 #include "chrome/test/automation/browser_proxy.h" |
12 #include "chrome/test/automation/tab_proxy.h" | 12 #include "chrome/test/automation/tab_proxy.h" |
13 #include "chrome/test/automation/window_proxy.h" | 13 #include "chrome/test/automation/window_proxy.h" |
14 #include "chrome/test/ui/ui_test.h" | 14 #include "chrome/test/ui/ui_test.h" |
15 #include "net/url_request/url_request_unittest.h" | 15 #include "net/url_request/url_request_unittest.h" |
16 #include "views/event.h" | 16 #include "views/event.h" |
17 | 17 |
| 18 #if defined(OS_LINUX) |
| 19 // http://crbug.com/47575 |
| 20 #define MAYBE_BrowserCloseNoUnloadListeners FLAKY_BrowserCloseNoUnloadListeners |
| 21 #else |
| 22 #define MAYBE_BrowserCloseNoUnloadListeners BrowserCloseNoUnloadListeners |
| 23 #endif |
| 24 |
18 const std::string NOLISTENERS_HTML = | 25 const std::string NOLISTENERS_HTML = |
19 "<html><head><title>nolisteners</title></head><body></body></html>"; | 26 "<html><head><title>nolisteners</title></head><body></body></html>"; |
20 | 27 |
21 const std::string UNLOAD_HTML = | 28 const std::string UNLOAD_HTML = |
22 "<html><head><title>unload</title></head><body>" | 29 "<html><head><title>unload</title></head><body>" |
23 "<script>window.onunload=function(e){}</script></body></html>"; | 30 "<script>window.onunload=function(e){}</script></body></html>"; |
24 | 31 |
25 const std::string BEFORE_UNLOAD_HTML = | 32 const std::string BEFORE_UNLOAD_HTML = |
26 "<html><head><title>beforeunload</title></head><body>" | 33 "<html><head><title>beforeunload</title></head><body>" |
27 "<script>window.onbeforeunload=function(e){return 'foo'}</script>" | 34 "<script>window.onbeforeunload=function(e){return 'foo'}</script>" |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)) | 271 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)) |
265 return; | 272 return; |
266 | 273 |
267 NavigateToDataURL(INFINITE_BEFORE_UNLOAD_HTML, L"infinitebeforeunload"); | 274 NavigateToDataURL(INFINITE_BEFORE_UNLOAD_HTML, L"infinitebeforeunload"); |
268 // Must navigate to a non-data URL to trigger cross-site codepath. | 275 // Must navigate to a non-data URL to trigger cross-site codepath. |
269 NavigateToNolistenersFileTwice(); | 276 NavigateToNolistenersFileTwice(); |
270 ASSERT_TRUE(IsBrowserRunning()); | 277 ASSERT_TRUE(IsBrowserRunning()); |
271 } | 278 } |
272 | 279 |
273 // Tests closing the browser on a page with no unload listeners registered. | 280 // Tests closing the browser on a page with no unload listeners registered. |
274 TEST_F(UnloadTest, BrowserCloseNoUnloadListeners) { | 281 TEST_F(UnloadTest, MAYBE_BrowserCloseNoUnloadListeners) { |
275 LoadUrlAndQuitBrowser(NOLISTENERS_HTML, L"nolisteners"); | 282 LoadUrlAndQuitBrowser(NOLISTENERS_HTML, L"nolisteners"); |
276 } | 283 } |
277 | 284 |
278 // Tests closing the browser on a page with an unload listener registered. | 285 // Tests closing the browser on a page with an unload listener registered. |
279 TEST_F(UnloadTest, BrowserCloseUnload) { | 286 TEST_F(UnloadTest, BrowserCloseUnload) { |
280 LoadUrlAndQuitBrowser(UNLOAD_HTML, L"unload"); | 287 LoadUrlAndQuitBrowser(UNLOAD_HTML, L"unload"); |
281 } | 288 } |
282 | 289 |
283 // Tests closing the browser with a beforeunload handler and clicking | 290 // Tests closing the browser with a beforeunload handler and clicking |
284 // OK in the beforeunload confirm dialog. | 291 // OK in the beforeunload confirm dialog. |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 ASSERT_TRUE(browser->WaitForTabCountToBecome(1, action_timeout_ms())); | 444 ASSERT_TRUE(browser->WaitForTabCountToBecome(1, action_timeout_ms())); |
438 scoped_refptr<TabProxy> main_tab(browser->GetActiveTab()); | 445 scoped_refptr<TabProxy> main_tab(browser->GetActiveTab()); |
439 ASSERT_TRUE(main_tab.get()); | 446 ASSERT_TRUE(main_tab.get()); |
440 std::wstring main_title; | 447 std::wstring main_title; |
441 EXPECT_TRUE(main_tab->GetTabTitle(&main_title)); | 448 EXPECT_TRUE(main_tab->GetTabTitle(&main_title)); |
442 EXPECT_EQ(std::wstring(L"only_one_unload"), main_title); | 449 EXPECT_EQ(std::wstring(L"only_one_unload"), main_title); |
443 } | 450 } |
444 | 451 |
445 // TODO(ojan): Add tests for unload/beforeunload that have multiple tabs | 452 // TODO(ojan): Add tests for unload/beforeunload that have multiple tabs |
446 // and multiple windows. | 453 // and multiple windows. |
OLD | NEW |