| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/file_util.h" | 5 #include "base/file_util.h" |
| 6 #include "base/test/test_timeouts.h" | 6 #include "base/test/test_timeouts.h" |
| 7 #include "chrome/browser/net/url_request_mock_http_job.h" | 7 #include "chrome/browser/net/url_request_mock_http_job.h" |
| 8 #include "chrome/browser/ui/view_ids.h" | 8 #include "chrome/browser/ui/view_ids.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 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 | 407 |
| 408 #if defined(OS_MACOSX) | 408 #if defined(OS_MACOSX) |
| 409 // http://crbug.com/45162 | 409 // http://crbug.com/45162 |
| 410 #define MAYBE_BrowserCloseTabWhenOtherTabHasListener \ | 410 #define MAYBE_BrowserCloseTabWhenOtherTabHasListener \ |
| 411 DISABLED_BrowserCloseTabWhenOtherTabHasListener | 411 DISABLED_BrowserCloseTabWhenOtherTabHasListener |
| 412 #elif defined(OS_WIN) | 412 #elif defined(OS_WIN) |
| 413 // http://crbug.com/45281 | 413 // http://crbug.com/45281 |
| 414 #define MAYBE_BrowserCloseTabWhenOtherTabHasListener \ | 414 #define MAYBE_BrowserCloseTabWhenOtherTabHasListener \ |
| 415 DISABLED_BrowserCloseTabWhenOtherTabHasListener | 415 DISABLED_BrowserCloseTabWhenOtherTabHasListener |
| 416 #else | 416 #else |
| 417 // Flaky on Linux under valgrind. http://crbug.com/46781 | |
| 418 // TODO(stuartmorgan): Switch to just disabling for valgrind. | |
| 419 #define MAYBE_BrowserCloseTabWhenOtherTabHasListener \ | 417 #define MAYBE_BrowserCloseTabWhenOtherTabHasListener \ |
| 420 FLAKY_BrowserCloseTabWhenOtherTabHasListener | 418 BrowserCloseTabWhenOtherTabHasListener |
| 421 #endif | 419 #endif |
| 422 | 420 |
| 423 // Tests that if there's a renderer process with two tabs, one of which has an | 421 // Tests that if there's a renderer process with two tabs, one of which has an |
| 424 // unload handler, and the other doesn't, the tab that doesn't have an unload | 422 // unload handler, and the other doesn't, the tab that doesn't have an unload |
| 425 // handler can be closed. | 423 // handler can be closed. |
| 426 TEST_F(UnloadTest, MAYBE_BrowserCloseTabWhenOtherTabHasListener) { | 424 TEST_F(UnloadTest, MAYBE_BrowserCloseTabWhenOtherTabHasListener) { |
| 427 NavigateToDataURL(CLOSE_TAB_WHEN_OTHER_TAB_HAS_LISTENER, L"only_one_unload"); | 425 NavigateToDataURL(CLOSE_TAB_WHEN_OTHER_TAB_HAS_LISTENER, L"only_one_unload"); |
| 428 | 426 |
| 429 scoped_refptr<BrowserProxy> browser = automation()->GetBrowserWindow(0); | 427 scoped_refptr<BrowserProxy> browser = automation()->GetBrowserWindow(0); |
| 430 ASSERT_TRUE(browser.get()); | 428 ASSERT_TRUE(browser.get()); |
| 431 scoped_refptr<WindowProxy> window = browser->GetWindow(); | 429 scoped_refptr<WindowProxy> window = browser->GetWindow(); |
| 432 ASSERT_TRUE(window.get()); | 430 ASSERT_TRUE(window.get()); |
| 433 | 431 |
| 434 gfx::Rect tab_view_bounds; | 432 gfx::Rect tab_view_bounds; |
| 435 ASSERT_TRUE(window->GetViewBounds(VIEW_ID_TAB_CONTAINER, | 433 ASSERT_TRUE(window->GetViewBounds(VIEW_ID_TAB_CONTAINER, |
| 436 &tab_view_bounds, true)); | 434 &tab_view_bounds, true)); |
| 437 // Simulate a click to force user_gesture to true; if we don't, the resulting | 435 // Simulate a click to force user_gesture to true; if we don't, the resulting |
| 438 // popup will be constrained, which isn't what we want to test. | 436 // popup will be constrained, which isn't what we want to test. |
| 439 ASSERT_TRUE(window->SimulateOSClick(tab_view_bounds.CenterPoint(), | 437 ASSERT_TRUE(window->SimulateOSClick(tab_view_bounds.CenterPoint(), |
| 440 ui::EF_LEFT_BUTTON_DOWN)); | 438 ui::EF_LEFT_BUTTON_DOWN)); |
| 441 ASSERT_TRUE(browser->WaitForTabCountToBecome(2)); | 439 ASSERT_TRUE(browser->WaitForTabCountToBecome(2)); |
| 442 | 440 |
| 441 CheckTitle(L"popup"); |
| 443 scoped_refptr<TabProxy> popup_tab(browser->GetActiveTab()); | 442 scoped_refptr<TabProxy> popup_tab(browser->GetActiveTab()); |
| 444 ASSERT_TRUE(popup_tab.get()); | 443 ASSERT_TRUE(popup_tab.get()); |
| 445 std::wstring popup_title; | |
| 446 EXPECT_TRUE(popup_tab->GetTabTitle(&popup_title)); | |
| 447 EXPECT_EQ(std::wstring(L"popup"), popup_title); | |
| 448 EXPECT_TRUE(popup_tab->Close(true)); | 444 EXPECT_TRUE(popup_tab->Close(true)); |
| 449 | 445 |
| 450 ASSERT_TRUE(browser->WaitForTabCountToBecome(1)); | 446 ASSERT_TRUE(browser->WaitForTabCountToBecome(1)); |
| 451 scoped_refptr<TabProxy> main_tab(browser->GetActiveTab()); | 447 scoped_refptr<TabProxy> main_tab(browser->GetActiveTab()); |
| 452 ASSERT_TRUE(main_tab.get()); | 448 ASSERT_TRUE(main_tab.get()); |
| 453 std::wstring main_title; | 449 std::wstring main_title; |
| 454 EXPECT_TRUE(main_tab->GetTabTitle(&main_title)); | 450 EXPECT_TRUE(main_tab->GetTabTitle(&main_title)); |
| 455 EXPECT_EQ(std::wstring(L"only_one_unload"), main_title); | 451 EXPECT_EQ(std::wstring(L"only_one_unload"), main_title); |
| 456 } | 452 } |
| 457 | 453 |
| 458 // TODO(ojan): Add tests for unload/beforeunload that have multiple tabs | 454 // TODO(ojan): Add tests for unload/beforeunload that have multiple tabs |
| 459 // and multiple windows. | 455 // and multiple windows. |
| OLD | NEW |