| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/logging.h" | 5 #include "base/logging.h" |
| 6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
| 7 #include "content/browser/frame_host/cross_site_transferring_request.h" | 7 #include "content/browser/frame_host/cross_site_transferring_request.h" |
| 8 #include "content/browser/frame_host/interstitial_page_impl.h" | 8 #include "content/browser/frame_host/interstitial_page_impl.h" |
| 9 #include "content/browser/frame_host/navigation_entry_impl.h" | 9 #include "content/browser/frame_host/navigation_entry_impl.h" |
| 10 #include "content/browser/media/audio_stream_monitor.h" | 10 #include "content/browser/media/audio_stream_monitor.h" |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 | 149 |
| 150 int command_received_count() const { | 150 int command_received_count() const { |
| 151 return command_received_count_; | 151 return command_received_count_; |
| 152 } | 152 } |
| 153 | 153 |
| 154 void TestDomOperationResponse(const std::string& json_string) { | 154 void TestDomOperationResponse(const std::string& json_string) { |
| 155 if (enabled()) | 155 if (enabled()) |
| 156 CommandReceived(); | 156 CommandReceived(); |
| 157 } | 157 } |
| 158 | 158 |
| 159 void TestDidNavigate(int page_id, const GURL& url) { | 159 void TestDidNavigate(const GURL& url) { |
| 160 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 160 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
| 161 InitNavigateParams(¶ms, page_id, url, ui::PAGE_TRANSITION_TYPED); | 161 InitNavigateParams(¶ms, url, ui::PAGE_TRANSITION_TYPED); |
| 162 DidNavigate(GetRenderViewHostForTesting(), params); | 162 DidNavigate(GetRenderViewHostForTesting(), params); |
| 163 } | 163 } |
| 164 | 164 |
| 165 void TestRenderViewTerminated(base::TerminationStatus status, | 165 void TestRenderViewTerminated(base::TerminationStatus status, |
| 166 int error_code) { | 166 int error_code) { |
| 167 RenderViewTerminated(GetRenderViewHostForTesting(), status, error_code); | 167 RenderViewTerminated(GetRenderViewHostForTesting(), status, error_code); |
| 168 } | 168 } |
| 169 | 169 |
| 170 bool is_showing() const { | 170 bool is_showing() const { |
| 171 return static_cast<TestRenderWidgetHostView*>( | 171 return static_cast<TestRenderWidgetHostView*>( |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 }; | 336 }; |
| 337 | 337 |
| 338 } // namespace | 338 } // namespace |
| 339 | 339 |
| 340 // Test to make sure that title updates get stripped of whitespace. | 340 // Test to make sure that title updates get stripped of whitespace. |
| 341 TEST_F(WebContentsImplTest, UpdateTitle) { | 341 TEST_F(WebContentsImplTest, UpdateTitle) { |
| 342 NavigationControllerImpl& cont = | 342 NavigationControllerImpl& cont = |
| 343 static_cast<NavigationControllerImpl&>(controller()); | 343 static_cast<NavigationControllerImpl&>(controller()); |
| 344 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 344 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
| 345 InitNavigateParams( | 345 InitNavigateParams( |
| 346 ¶ms, 0, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED); | 346 ¶ms, GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_TYPED); |
| 347 | 347 |
| 348 LoadCommittedDetails details; | 348 LoadCommittedDetails details; |
| 349 cont.RendererDidNavigate(contents()->GetMainFrame(), params, &details); | 349 cont.RendererDidNavigate(contents()->GetMainFrame(), 0, params, &details); |
| 350 | 350 |
| 351 contents()->UpdateTitle(contents()->GetMainFrame(), 0, | 351 contents()->UpdateTitle(contents()->GetMainFrame(), 0, |
| 352 base::ASCIIToUTF16(" Lots O' Whitespace\n"), | 352 base::ASCIIToUTF16(" Lots O' Whitespace\n"), |
| 353 base::i18n::LEFT_TO_RIGHT); | 353 base::i18n::LEFT_TO_RIGHT); |
| 354 EXPECT_EQ(base::ASCIIToUTF16("Lots O' Whitespace"), contents()->GetTitle()); | 354 EXPECT_EQ(base::ASCIIToUTF16("Lots O' Whitespace"), contents()->GetTitle()); |
| 355 } | 355 } |
| 356 | 356 |
| 357 TEST_F(WebContentsImplTest, DontUseTitleFromPendingEntry) { | 357 TEST_F(WebContentsImplTest, DontUseTitleFromPendingEntry) { |
| 358 const GURL kGURL("chrome://blah"); | 358 const GURL kGURL("chrome://blah"); |
| 359 controller().LoadURL( | 359 controller().LoadURL( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 384 process()->sink().ClearMessages(); | 384 process()->sink().ClearMessages(); |
| 385 | 385 |
| 386 cont.LoadURL( | 386 cont.LoadURL( |
| 387 kGURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); | 387 kGURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
| 388 rvh()->GetDelegate()->RenderViewCreated(rvh()); | 388 rvh()->GetDelegate()->RenderViewCreated(rvh()); |
| 389 // Did we get the expected message? | 389 // Did we get the expected message? |
| 390 EXPECT_TRUE(process()->sink().GetFirstMessageMatching( | 390 EXPECT_TRUE(process()->sink().GetFirstMessageMatching( |
| 391 ViewMsg_EnableViewSourceMode::ID)); | 391 ViewMsg_EnableViewSourceMode::ID)); |
| 392 | 392 |
| 393 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 393 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
| 394 InitNavigateParams(¶ms, 0, kGURL, ui::PAGE_TRANSITION_TYPED); | 394 InitNavigateParams(¶ms, kGURL, ui::PAGE_TRANSITION_TYPED); |
| 395 LoadCommittedDetails details; | 395 LoadCommittedDetails details; |
| 396 cont.RendererDidNavigate(contents()->GetMainFrame(), params, &details); | 396 cont.RendererDidNavigate(contents()->GetMainFrame(), 0, params, &details); |
| 397 // Also check title and url. | 397 // Also check title and url. |
| 398 EXPECT_EQ(base::ASCIIToUTF16(kUrl), contents()->GetTitle()); | 398 EXPECT_EQ(base::ASCIIToUTF16(kUrl), contents()->GetTitle()); |
| 399 } | 399 } |
| 400 | 400 |
| 401 // Test to ensure UpdateMaxPageID is working properly. | 401 // Test to ensure UpdateMaxPageID is working properly. |
| 402 TEST_F(WebContentsImplTest, UpdateMaxPageID) { | 402 TEST_F(WebContentsImplTest, UpdateMaxPageID) { |
| 403 SiteInstance* instance1 = contents()->GetSiteInstance(); | 403 SiteInstance* instance1 = contents()->GetSiteInstance(); |
| 404 scoped_refptr<SiteInstance> instance2(SiteInstance::Create(NULL)); | 404 scoped_refptr<SiteInstance> instance2(SiteInstance::Create(NULL)); |
| 405 | 405 |
| 406 // Starts at -1. | 406 // Starts at -1. |
| (...skipping 1046 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1453 GURL url2("http://interstitial"); | 1453 GURL url2("http://interstitial"); |
| 1454 TestInterstitialPage* interstitial = | 1454 TestInterstitialPage* interstitial = |
| 1455 new TestInterstitialPage(contents(), true, url2, &state, &deleted); | 1455 new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
| 1456 TestInterstitialPageStateGuard state_guard(interstitial); | 1456 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1457 interstitial->Show(); | 1457 interstitial->Show(); |
| 1458 // The interstitial should not show until its navigation has committed. | 1458 // The interstitial should not show until its navigation has committed. |
| 1459 EXPECT_FALSE(interstitial->is_showing()); | 1459 EXPECT_FALSE(interstitial->is_showing()); |
| 1460 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1460 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
| 1461 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1461 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
| 1462 // Let's commit the interstitial navigation. | 1462 // Let's commit the interstitial navigation. |
| 1463 interstitial->TestDidNavigate(1, url2); | 1463 interstitial->TestDidNavigate(url2); |
| 1464 EXPECT_TRUE(interstitial->is_showing()); | 1464 EXPECT_TRUE(interstitial->is_showing()); |
| 1465 EXPECT_TRUE(contents()->ShowingInterstitialPage()); | 1465 EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
| 1466 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); | 1466 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
| 1467 NavigationEntry* entry = controller().GetVisibleEntry(); | 1467 NavigationEntry* entry = controller().GetVisibleEntry(); |
| 1468 ASSERT_TRUE(entry != NULL); | 1468 ASSERT_TRUE(entry != NULL); |
| 1469 EXPECT_TRUE(entry->GetURL() == url2); | 1469 EXPECT_TRUE(entry->GetURL() == url2); |
| 1470 | 1470 |
| 1471 // Now don't proceed. | 1471 // Now don't proceed. |
| 1472 interstitial->DontProceed(); | 1472 interstitial->DontProceed(); |
| 1473 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1473 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1500 GURL url2("http://interstitial"); | 1500 GURL url2("http://interstitial"); |
| 1501 TestInterstitialPage* interstitial = | 1501 TestInterstitialPage* interstitial = |
| 1502 new TestInterstitialPage(contents(), true, url2, &state, &deleted); | 1502 new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
| 1503 TestInterstitialPageStateGuard state_guard(interstitial); | 1503 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1504 interstitial->Show(); | 1504 interstitial->Show(); |
| 1505 // The interstitial should not show until its navigation has committed. | 1505 // The interstitial should not show until its navigation has committed. |
| 1506 EXPECT_FALSE(interstitial->is_showing()); | 1506 EXPECT_FALSE(interstitial->is_showing()); |
| 1507 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1507 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
| 1508 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1508 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
| 1509 // Let's commit the interstitial navigation. | 1509 // Let's commit the interstitial navigation. |
| 1510 interstitial->TestDidNavigate(1, url2); | 1510 interstitial->TestDidNavigate(url2); |
| 1511 EXPECT_TRUE(interstitial->is_showing()); | 1511 EXPECT_TRUE(interstitial->is_showing()); |
| 1512 EXPECT_TRUE(contents()->ShowingInterstitialPage()); | 1512 EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
| 1513 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); | 1513 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
| 1514 NavigationEntry* entry = controller().GetVisibleEntry(); | 1514 NavigationEntry* entry = controller().GetVisibleEntry(); |
| 1515 ASSERT_TRUE(entry != NULL); | 1515 ASSERT_TRUE(entry != NULL); |
| 1516 EXPECT_TRUE(entry->GetURL() == url2); | 1516 EXPECT_TRUE(entry->GetURL() == url2); |
| 1517 | 1517 |
| 1518 // Now don't proceed. | 1518 // Now don't proceed. |
| 1519 interstitial->DontProceed(); | 1519 interstitial->DontProceed(); |
| 1520 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1520 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1545 GURL url2("http://interstitial"); | 1545 GURL url2("http://interstitial"); |
| 1546 TestInterstitialPage* interstitial = | 1546 TestInterstitialPage* interstitial = |
| 1547 new TestInterstitialPage(contents(), false, url2, &state, &deleted); | 1547 new TestInterstitialPage(contents(), false, url2, &state, &deleted); |
| 1548 TestInterstitialPageStateGuard state_guard(interstitial); | 1548 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1549 interstitial->Show(); | 1549 interstitial->Show(); |
| 1550 // The interstitial should not show until its navigation has committed. | 1550 // The interstitial should not show until its navigation has committed. |
| 1551 EXPECT_FALSE(interstitial->is_showing()); | 1551 EXPECT_FALSE(interstitial->is_showing()); |
| 1552 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1552 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
| 1553 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1553 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
| 1554 // Let's commit the interstitial navigation. | 1554 // Let's commit the interstitial navigation. |
| 1555 interstitial->TestDidNavigate(1, url2); | 1555 interstitial->TestDidNavigate(url2); |
| 1556 EXPECT_TRUE(interstitial->is_showing()); | 1556 EXPECT_TRUE(interstitial->is_showing()); |
| 1557 EXPECT_TRUE(contents()->ShowingInterstitialPage()); | 1557 EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
| 1558 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); | 1558 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
| 1559 NavigationEntry* entry = controller().GetVisibleEntry(); | 1559 NavigationEntry* entry = controller().GetVisibleEntry(); |
| 1560 ASSERT_TRUE(entry != NULL); | 1560 ASSERT_TRUE(entry != NULL); |
| 1561 // The URL specified to the interstitial should have been ignored. | 1561 // The URL specified to the interstitial should have been ignored. |
| 1562 EXPECT_TRUE(entry->GetURL() == url1); | 1562 EXPECT_TRUE(entry->GetURL() == url1); |
| 1563 | 1563 |
| 1564 // Now don't proceed. | 1564 // Now don't proceed. |
| 1565 interstitial->DontProceed(); | 1565 interstitial->DontProceed(); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1596 GURL url2("http://interstitial"); | 1596 GURL url2("http://interstitial"); |
| 1597 TestInterstitialPage* interstitial = | 1597 TestInterstitialPage* interstitial = |
| 1598 new TestInterstitialPage(contents(), true, url2, &state, &deleted); | 1598 new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
| 1599 TestInterstitialPageStateGuard state_guard(interstitial); | 1599 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1600 interstitial->Show(); | 1600 interstitial->Show(); |
| 1601 // The interstitial should not show until its navigation has committed. | 1601 // The interstitial should not show until its navigation has committed. |
| 1602 EXPECT_FALSE(interstitial->is_showing()); | 1602 EXPECT_FALSE(interstitial->is_showing()); |
| 1603 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1603 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
| 1604 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1604 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
| 1605 // Let's commit the interstitial navigation. | 1605 // Let's commit the interstitial navigation. |
| 1606 interstitial->TestDidNavigate(1, url2); | 1606 interstitial->TestDidNavigate(url2); |
| 1607 EXPECT_TRUE(interstitial->is_showing()); | 1607 EXPECT_TRUE(interstitial->is_showing()); |
| 1608 EXPECT_TRUE(contents()->ShowingInterstitialPage()); | 1608 EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
| 1609 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); | 1609 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
| 1610 NavigationEntry* entry = controller().GetVisibleEntry(); | 1610 NavigationEntry* entry = controller().GetVisibleEntry(); |
| 1611 ASSERT_TRUE(entry != NULL); | 1611 ASSERT_TRUE(entry != NULL); |
| 1612 EXPECT_TRUE(entry->GetURL() == url2); | 1612 EXPECT_TRUE(entry->GetURL() == url2); |
| 1613 | 1613 |
| 1614 // Then proceed. | 1614 // Then proceed. |
| 1615 interstitial->Proceed(); | 1615 interstitial->Proceed(); |
| 1616 // The interstitial should show until the new navigation commits. | 1616 // The interstitial should show until the new navigation commits. |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1654 GURL url2("http://interstitial"); | 1654 GURL url2("http://interstitial"); |
| 1655 TestInterstitialPage* interstitial = | 1655 TestInterstitialPage* interstitial = |
| 1656 new TestInterstitialPage(contents(), true, url2, &state, &deleted); | 1656 new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
| 1657 TestInterstitialPageStateGuard state_guard(interstitial); | 1657 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1658 interstitial->Show(); | 1658 interstitial->Show(); |
| 1659 // The interstitial should not show until its navigation has committed. | 1659 // The interstitial should not show until its navigation has committed. |
| 1660 EXPECT_FALSE(interstitial->is_showing()); | 1660 EXPECT_FALSE(interstitial->is_showing()); |
| 1661 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1661 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
| 1662 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1662 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
| 1663 // Let's commit the interstitial navigation. | 1663 // Let's commit the interstitial navigation. |
| 1664 interstitial->TestDidNavigate(1, url2); | 1664 interstitial->TestDidNavigate(url2); |
| 1665 EXPECT_TRUE(interstitial->is_showing()); | 1665 EXPECT_TRUE(interstitial->is_showing()); |
| 1666 EXPECT_TRUE(contents()->ShowingInterstitialPage()); | 1666 EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
| 1667 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); | 1667 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
| 1668 NavigationEntry* entry = controller().GetVisibleEntry(); | 1668 NavigationEntry* entry = controller().GetVisibleEntry(); |
| 1669 ASSERT_TRUE(entry != NULL); | 1669 ASSERT_TRUE(entry != NULL); |
| 1670 EXPECT_TRUE(entry->GetURL() == url2); | 1670 EXPECT_TRUE(entry->GetURL() == url2); |
| 1671 | 1671 |
| 1672 // Then proceed. | 1672 // Then proceed. |
| 1673 interstitial->Proceed(); | 1673 interstitial->Proceed(); |
| 1674 // The interstitial should show until the new navigation commits. | 1674 // The interstitial should show until the new navigation commits. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1711 GURL url2("http://interstitial"); | 1711 GURL url2("http://interstitial"); |
| 1712 TestInterstitialPage* interstitial = | 1712 TestInterstitialPage* interstitial = |
| 1713 new TestInterstitialPage(contents(), false, url2, &state, &deleted); | 1713 new TestInterstitialPage(contents(), false, url2, &state, &deleted); |
| 1714 TestInterstitialPageStateGuard state_guard(interstitial); | 1714 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1715 interstitial->Show(); | 1715 interstitial->Show(); |
| 1716 // The interstitial should not show until its navigation has committed. | 1716 // The interstitial should not show until its navigation has committed. |
| 1717 EXPECT_FALSE(interstitial->is_showing()); | 1717 EXPECT_FALSE(interstitial->is_showing()); |
| 1718 EXPECT_FALSE(contents()->ShowingInterstitialPage()); | 1718 EXPECT_FALSE(contents()->ShowingInterstitialPage()); |
| 1719 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); | 1719 EXPECT_TRUE(contents()->GetInterstitialPage() == NULL); |
| 1720 // Let's commit the interstitial navigation. | 1720 // Let's commit the interstitial navigation. |
| 1721 interstitial->TestDidNavigate(1, url2); | 1721 interstitial->TestDidNavigate(url2); |
| 1722 EXPECT_TRUE(interstitial->is_showing()); | 1722 EXPECT_TRUE(interstitial->is_showing()); |
| 1723 EXPECT_TRUE(contents()->ShowingInterstitialPage()); | 1723 EXPECT_TRUE(contents()->ShowingInterstitialPage()); |
| 1724 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); | 1724 EXPECT_TRUE(contents()->GetInterstitialPage() == interstitial); |
| 1725 NavigationEntry* entry = controller().GetVisibleEntry(); | 1725 NavigationEntry* entry = controller().GetVisibleEntry(); |
| 1726 ASSERT_TRUE(entry != NULL); | 1726 ASSERT_TRUE(entry != NULL); |
| 1727 // The URL specified to the interstitial should have been ignored. | 1727 // The URL specified to the interstitial should have been ignored. |
| 1728 EXPECT_TRUE(entry->GetURL() == url1); | 1728 EXPECT_TRUE(entry->GetURL() == url1); |
| 1729 | 1729 |
| 1730 // Then proceed. | 1730 // Then proceed. |
| 1731 interstitial->Proceed(); | 1731 interstitial->Proceed(); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1748 TEST_F(WebContentsImplTest, ShowInterstitialThenNavigate) { | 1748 TEST_F(WebContentsImplTest, ShowInterstitialThenNavigate) { |
| 1749 // Show interstitial. | 1749 // Show interstitial. |
| 1750 TestInterstitialPage::InterstitialState state = | 1750 TestInterstitialPage::InterstitialState state = |
| 1751 TestInterstitialPage::INVALID; | 1751 TestInterstitialPage::INVALID; |
| 1752 bool deleted = false; | 1752 bool deleted = false; |
| 1753 GURL url("http://interstitial"); | 1753 GURL url("http://interstitial"); |
| 1754 TestInterstitialPage* interstitial = | 1754 TestInterstitialPage* interstitial = |
| 1755 new TestInterstitialPage(contents(), true, url, &state, &deleted); | 1755 new TestInterstitialPage(contents(), true, url, &state, &deleted); |
| 1756 TestInterstitialPageStateGuard state_guard(interstitial); | 1756 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1757 interstitial->Show(); | 1757 interstitial->Show(); |
| 1758 interstitial->TestDidNavigate(1, url); | 1758 interstitial->TestDidNavigate(url); |
| 1759 | 1759 |
| 1760 // While interstitial showing, navigate to a new URL. | 1760 // While interstitial showing, navigate to a new URL. |
| 1761 const GURL url2("http://www.yahoo.com"); | 1761 const GURL url2("http://www.yahoo.com"); |
| 1762 contents()->GetMainFrame()->SendNavigate(1, url2); | 1762 contents()->GetMainFrame()->SendNavigate(1, url2); |
| 1763 | 1763 |
| 1764 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1764 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 1765 | 1765 |
| 1766 RunAllPendingInMessageLoop(); | 1766 RunAllPendingInMessageLoop(); |
| 1767 EXPECT_TRUE(deleted); | 1767 EXPECT_TRUE(deleted); |
| 1768 } | 1768 } |
| 1769 | 1769 |
| 1770 // Test navigating to a page that shows an interstitial, then going back. | 1770 // Test navigating to a page that shows an interstitial, then going back. |
| 1771 TEST_F(WebContentsImplTest, ShowInterstitialThenGoBack) { | 1771 TEST_F(WebContentsImplTest, ShowInterstitialThenGoBack) { |
| 1772 // Navigate to a page so we have a navigation entry in the controller. | 1772 // Navigate to a page so we have a navigation entry in the controller. |
| 1773 GURL url1("http://www.google.com"); | 1773 GURL url1("http://www.google.com"); |
| 1774 contents()->GetMainFrame()->SendNavigate(1, url1); | 1774 contents()->GetMainFrame()->SendNavigate(1, url1); |
| 1775 EXPECT_EQ(1, controller().GetEntryCount()); | 1775 EXPECT_EQ(1, controller().GetEntryCount()); |
| 1776 | 1776 |
| 1777 // Show interstitial. | 1777 // Show interstitial. |
| 1778 TestInterstitialPage::InterstitialState state = | 1778 TestInterstitialPage::InterstitialState state = |
| 1779 TestInterstitialPage::INVALID; | 1779 TestInterstitialPage::INVALID; |
| 1780 bool deleted = false; | 1780 bool deleted = false; |
| 1781 GURL interstitial_url("http://interstitial"); | 1781 GURL interstitial_url("http://interstitial"); |
| 1782 TestInterstitialPage* interstitial = | 1782 TestInterstitialPage* interstitial = |
| 1783 new TestInterstitialPage(contents(), true, interstitial_url, | 1783 new TestInterstitialPage(contents(), true, interstitial_url, |
| 1784 &state, &deleted); | 1784 &state, &deleted); |
| 1785 TestInterstitialPageStateGuard state_guard(interstitial); | 1785 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1786 interstitial->Show(); | 1786 interstitial->Show(); |
| 1787 interstitial->TestDidNavigate(2, interstitial_url); | 1787 interstitial->TestDidNavigate(interstitial_url); |
| 1788 | 1788 |
| 1789 // While the interstitial is showing, go back. | 1789 // While the interstitial is showing, go back. |
| 1790 controller().GoBack(); | 1790 controller().GoBack(); |
| 1791 contents()->GetMainFrame()->SendNavigate(1, url1); | 1791 contents()->GetMainFrame()->SendNavigate(1, url1); |
| 1792 | 1792 |
| 1793 // Make sure we are back to the original page and that the interstitial is | 1793 // Make sure we are back to the original page and that the interstitial is |
| 1794 // gone. | 1794 // gone. |
| 1795 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1795 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 1796 NavigationEntry* entry = controller().GetVisibleEntry(); | 1796 NavigationEntry* entry = controller().GetVisibleEntry(); |
| 1797 ASSERT_TRUE(entry); | 1797 ASSERT_TRUE(entry); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1812 // Show interstitial. | 1812 // Show interstitial. |
| 1813 TestInterstitialPage::InterstitialState state = | 1813 TestInterstitialPage::InterstitialState state = |
| 1814 TestInterstitialPage::INVALID; | 1814 TestInterstitialPage::INVALID; |
| 1815 bool deleted = false; | 1815 bool deleted = false; |
| 1816 GURL interstitial_url("http://interstitial"); | 1816 GURL interstitial_url("http://interstitial"); |
| 1817 TestInterstitialPage* interstitial = | 1817 TestInterstitialPage* interstitial = |
| 1818 new TestInterstitialPage(contents(), true, interstitial_url, | 1818 new TestInterstitialPage(contents(), true, interstitial_url, |
| 1819 &state, &deleted); | 1819 &state, &deleted); |
| 1820 TestInterstitialPageStateGuard state_guard(interstitial); | 1820 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1821 interstitial->Show(); | 1821 interstitial->Show(); |
| 1822 interstitial->TestDidNavigate(2, interstitial_url); | 1822 interstitial->TestDidNavigate(interstitial_url); |
| 1823 | 1823 |
| 1824 // Crash the renderer | 1824 // Crash the renderer |
| 1825 test_rvh()->OnMessageReceived( | 1825 test_rvh()->OnMessageReceived( |
| 1826 ViewHostMsg_RenderProcessGone( | 1826 ViewHostMsg_RenderProcessGone( |
| 1827 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); | 1827 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
| 1828 | 1828 |
| 1829 // While the interstitial is showing, go back. | 1829 // While the interstitial is showing, go back. |
| 1830 controller().GoBack(); | 1830 controller().GoBack(); |
| 1831 contents()->GetMainFrame()->SendNavigate(1, url1); | 1831 contents()->GetMainFrame()->SendNavigate(1, url1); |
| 1832 | 1832 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1858 new TestInterstitialPage(contents(), true, interstitial_url, | 1858 new TestInterstitialPage(contents(), true, interstitial_url, |
| 1859 &state, &deleted); | 1859 &state, &deleted); |
| 1860 TestInterstitialPageStateGuard state_guard(interstitial); | 1860 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1861 interstitial->Show(); | 1861 interstitial->Show(); |
| 1862 | 1862 |
| 1863 // Crash the renderer | 1863 // Crash the renderer |
| 1864 test_rvh()->OnMessageReceived( | 1864 test_rvh()->OnMessageReceived( |
| 1865 ViewHostMsg_RenderProcessGone( | 1865 ViewHostMsg_RenderProcessGone( |
| 1866 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); | 1866 0, base::TERMINATION_STATUS_PROCESS_CRASHED, -1)); |
| 1867 | 1867 |
| 1868 interstitial->TestDidNavigate(2, interstitial_url); | 1868 interstitial->TestDidNavigate(interstitial_url); |
| 1869 } | 1869 } |
| 1870 | 1870 |
| 1871 // Test navigating to a page that shows an interstitial, then close the | 1871 // Test navigating to a page that shows an interstitial, then close the |
| 1872 // contents. | 1872 // contents. |
| 1873 TEST_F(WebContentsImplTest, ShowInterstitialThenCloseTab) { | 1873 TEST_F(WebContentsImplTest, ShowInterstitialThenCloseTab) { |
| 1874 // Show interstitial. | 1874 // Show interstitial. |
| 1875 TestInterstitialPage::InterstitialState state = | 1875 TestInterstitialPage::InterstitialState state = |
| 1876 TestInterstitialPage::INVALID; | 1876 TestInterstitialPage::INVALID; |
| 1877 bool deleted = false; | 1877 bool deleted = false; |
| 1878 GURL url("http://interstitial"); | 1878 GURL url("http://interstitial"); |
| 1879 TestInterstitialPage* interstitial = | 1879 TestInterstitialPage* interstitial = |
| 1880 new TestInterstitialPage(contents(), true, url, &state, &deleted); | 1880 new TestInterstitialPage(contents(), true, url, &state, &deleted); |
| 1881 TestInterstitialPageStateGuard state_guard(interstitial); | 1881 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1882 interstitial->Show(); | 1882 interstitial->Show(); |
| 1883 interstitial->TestDidNavigate(1, url); | 1883 interstitial->TestDidNavigate(url); |
| 1884 | 1884 |
| 1885 // Now close the contents. | 1885 // Now close the contents. |
| 1886 DeleteContents(); | 1886 DeleteContents(); |
| 1887 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1887 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 1888 | 1888 |
| 1889 RunAllPendingInMessageLoop(); | 1889 RunAllPendingInMessageLoop(); |
| 1890 EXPECT_TRUE(deleted); | 1890 EXPECT_TRUE(deleted); |
| 1891 } | 1891 } |
| 1892 | 1892 |
| 1893 // Test navigating to a page that shows an interstitial, then close the | 1893 // Test navigating to a page that shows an interstitial, then close the |
| 1894 // contents. | 1894 // contents. |
| 1895 TEST_F(WebContentsImplTest, ShowInterstitialThenCloseAndShutdown) { | 1895 TEST_F(WebContentsImplTest, ShowInterstitialThenCloseAndShutdown) { |
| 1896 // Show interstitial. | 1896 // Show interstitial. |
| 1897 TestInterstitialPage::InterstitialState state = | 1897 TestInterstitialPage::InterstitialState state = |
| 1898 TestInterstitialPage::INVALID; | 1898 TestInterstitialPage::INVALID; |
| 1899 bool deleted = false; | 1899 bool deleted = false; |
| 1900 GURL url("http://interstitial"); | 1900 GURL url("http://interstitial"); |
| 1901 TestInterstitialPage* interstitial = | 1901 TestInterstitialPage* interstitial = |
| 1902 new TestInterstitialPage(contents(), true, url, &state, &deleted); | 1902 new TestInterstitialPage(contents(), true, url, &state, &deleted); |
| 1903 TestInterstitialPageStateGuard state_guard(interstitial); | 1903 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1904 interstitial->Show(); | 1904 interstitial->Show(); |
| 1905 interstitial->TestDidNavigate(1, url); | 1905 interstitial->TestDidNavigate(url); |
| 1906 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( | 1906 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( |
| 1907 interstitial->GetRenderViewHostForTesting()); | 1907 interstitial->GetRenderViewHostForTesting()); |
| 1908 | 1908 |
| 1909 // Now close the contents. | 1909 // Now close the contents. |
| 1910 DeleteContents(); | 1910 DeleteContents(); |
| 1911 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 1911 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 1912 | 1912 |
| 1913 // Before the interstitial has a chance to process its shutdown task, | 1913 // Before the interstitial has a chance to process its shutdown task, |
| 1914 // simulate quitting the browser. This goes through all processes and | 1914 // simulate quitting the browser. This goes through all processes and |
| 1915 // tells them to destruct. | 1915 // tells them to destruct. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1930 | 1930 |
| 1931 // Show an interstitial. | 1931 // Show an interstitial. |
| 1932 TestInterstitialPage::InterstitialState state = | 1932 TestInterstitialPage::InterstitialState state = |
| 1933 TestInterstitialPage::INVALID; | 1933 TestInterstitialPage::INVALID; |
| 1934 bool deleted = false; | 1934 bool deleted = false; |
| 1935 GURL url2("http://interstitial"); | 1935 GURL url2("http://interstitial"); |
| 1936 TestInterstitialPage* interstitial = | 1936 TestInterstitialPage* interstitial = |
| 1937 new TestInterstitialPage(contents(), true, url2, &state, &deleted); | 1937 new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
| 1938 TestInterstitialPageStateGuard state_guard(interstitial); | 1938 TestInterstitialPageStateGuard state_guard(interstitial); |
| 1939 interstitial->Show(); | 1939 interstitial->Show(); |
| 1940 interstitial->TestDidNavigate(1, url2); | 1940 interstitial->TestDidNavigate(url2); |
| 1941 | 1941 |
| 1942 // Run a command. | 1942 // Run a command. |
| 1943 EXPECT_EQ(0, interstitial->command_received_count()); | 1943 EXPECT_EQ(0, interstitial->command_received_count()); |
| 1944 interstitial->TestDomOperationResponse("toto"); | 1944 interstitial->TestDomOperationResponse("toto"); |
| 1945 EXPECT_EQ(1, interstitial->command_received_count()); | 1945 EXPECT_EQ(1, interstitial->command_received_count()); |
| 1946 | 1946 |
| 1947 // Then proceed. | 1947 // Then proceed. |
| 1948 interstitial->Proceed(); | 1948 interstitial->Proceed(); |
| 1949 RunAllPendingInMessageLoop(); | 1949 RunAllPendingInMessageLoop(); |
| 1950 ASSERT_FALSE(deleted); | 1950 ASSERT_FALSE(deleted); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1965 | 1965 |
| 1966 // Show an interstitial. | 1966 // Show an interstitial. |
| 1967 TestInterstitialPage::InterstitialState state1 = | 1967 TestInterstitialPage::InterstitialState state1 = |
| 1968 TestInterstitialPage::INVALID; | 1968 TestInterstitialPage::INVALID; |
| 1969 bool deleted1 = false; | 1969 bool deleted1 = false; |
| 1970 GURL url1("http://interstitial1"); | 1970 GURL url1("http://interstitial1"); |
| 1971 TestInterstitialPage* interstitial1 = | 1971 TestInterstitialPage* interstitial1 = |
| 1972 new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); | 1972 new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); |
| 1973 TestInterstitialPageStateGuard state_guard1(interstitial1); | 1973 TestInterstitialPageStateGuard state_guard1(interstitial1); |
| 1974 interstitial1->Show(); | 1974 interstitial1->Show(); |
| 1975 interstitial1->TestDidNavigate(1, url1); | 1975 interstitial1->TestDidNavigate(url1); |
| 1976 | 1976 |
| 1977 // Now show another interstitial. | 1977 // Now show another interstitial. |
| 1978 TestInterstitialPage::InterstitialState state2 = | 1978 TestInterstitialPage::InterstitialState state2 = |
| 1979 TestInterstitialPage::INVALID; | 1979 TestInterstitialPage::INVALID; |
| 1980 bool deleted2 = false; | 1980 bool deleted2 = false; |
| 1981 GURL url2("http://interstitial2"); | 1981 GURL url2("http://interstitial2"); |
| 1982 TestInterstitialPage* interstitial2 = | 1982 TestInterstitialPage* interstitial2 = |
| 1983 new TestInterstitialPage(contents(), true, url2, &state2, &deleted2); | 1983 new TestInterstitialPage(contents(), true, url2, &state2, &deleted2); |
| 1984 TestInterstitialPageStateGuard state_guard2(interstitial2); | 1984 TestInterstitialPageStateGuard state_guard2(interstitial2); |
| 1985 interstitial2->Show(); | 1985 interstitial2->Show(); |
| 1986 interstitial2->TestDidNavigate(1, url2); | 1986 interstitial2->TestDidNavigate(url2); |
| 1987 | 1987 |
| 1988 // Showing interstitial2 should have caused interstitial1 to go away. | 1988 // Showing interstitial2 should have caused interstitial1 to go away. |
| 1989 EXPECT_EQ(TestInterstitialPage::CANCELED, state1); | 1989 EXPECT_EQ(TestInterstitialPage::CANCELED, state1); |
| 1990 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); | 1990 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); |
| 1991 | 1991 |
| 1992 RunAllPendingInMessageLoop(); | 1992 RunAllPendingInMessageLoop(); |
| 1993 EXPECT_TRUE(deleted1); | 1993 EXPECT_TRUE(deleted1); |
| 1994 ASSERT_FALSE(deleted2); | 1994 ASSERT_FALSE(deleted2); |
| 1995 | 1995 |
| 1996 // Let's make sure interstitial2 is working as intended. | 1996 // Let's make sure interstitial2 is working as intended. |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2018 | 2018 |
| 2019 // Show an interstitial. | 2019 // Show an interstitial. |
| 2020 TestInterstitialPage::InterstitialState state1 = | 2020 TestInterstitialPage::InterstitialState state1 = |
| 2021 TestInterstitialPage::INVALID; | 2021 TestInterstitialPage::INVALID; |
| 2022 bool deleted1 = false; | 2022 bool deleted1 = false; |
| 2023 GURL url1("http://interstitial1"); | 2023 GURL url1("http://interstitial1"); |
| 2024 TestInterstitialPage* interstitial1 = | 2024 TestInterstitialPage* interstitial1 = |
| 2025 new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); | 2025 new TestInterstitialPage(contents(), true, url1, &state1, &deleted1); |
| 2026 TestInterstitialPageStateGuard state_guard1(interstitial1); | 2026 TestInterstitialPageStateGuard state_guard1(interstitial1); |
| 2027 interstitial1->Show(); | 2027 interstitial1->Show(); |
| 2028 interstitial1->TestDidNavigate(1, url1); | 2028 interstitial1->TestDidNavigate(url1); |
| 2029 | 2029 |
| 2030 // Take action. The interstitial won't be hidden until the navigation is | 2030 // Take action. The interstitial won't be hidden until the navigation is |
| 2031 // committed. | 2031 // committed. |
| 2032 interstitial1->Proceed(); | 2032 interstitial1->Proceed(); |
| 2033 EXPECT_EQ(TestInterstitialPage::OKED, state1); | 2033 EXPECT_EQ(TestInterstitialPage::OKED, state1); |
| 2034 | 2034 |
| 2035 // Now show another interstitial (simulating the navigation causing another | 2035 // Now show another interstitial (simulating the navigation causing another |
| 2036 // interstitial). | 2036 // interstitial). |
| 2037 TestInterstitialPage::InterstitialState state2 = | 2037 TestInterstitialPage::InterstitialState state2 = |
| 2038 TestInterstitialPage::INVALID; | 2038 TestInterstitialPage::INVALID; |
| 2039 bool deleted2 = false; | 2039 bool deleted2 = false; |
| 2040 GURL url2("http://interstitial2"); | 2040 GURL url2("http://interstitial2"); |
| 2041 TestInterstitialPage* interstitial2 = | 2041 TestInterstitialPage* interstitial2 = |
| 2042 new TestInterstitialPage(contents(), true, url2, &state2, &deleted2); | 2042 new TestInterstitialPage(contents(), true, url2, &state2, &deleted2); |
| 2043 TestInterstitialPageStateGuard state_guard2(interstitial2); | 2043 TestInterstitialPageStateGuard state_guard2(interstitial2); |
| 2044 interstitial2->Show(); | 2044 interstitial2->Show(); |
| 2045 interstitial2->TestDidNavigate(1, url2); | 2045 interstitial2->TestDidNavigate(url2); |
| 2046 | 2046 |
| 2047 // Showing interstitial2 should have caused interstitial1 to go away. | 2047 // Showing interstitial2 should have caused interstitial1 to go away. |
| 2048 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); | 2048 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); |
| 2049 RunAllPendingInMessageLoop(); | 2049 RunAllPendingInMessageLoop(); |
| 2050 EXPECT_TRUE(deleted1); | 2050 EXPECT_TRUE(deleted1); |
| 2051 ASSERT_FALSE(deleted2); | 2051 ASSERT_FALSE(deleted2); |
| 2052 | 2052 |
| 2053 // Let's make sure interstitial2 is working as intended. | 2053 // Let's make sure interstitial2 is working as intended. |
| 2054 interstitial2->Proceed(); | 2054 interstitial2->Proceed(); |
| 2055 GURL landing_url("http://www.thepage.com"); | 2055 GURL landing_url("http://www.thepage.com"); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2082 // Let's simulate a navigation initiated from the browser before the | 2082 // Let's simulate a navigation initiated from the browser before the |
| 2083 // interstitial finishes loading. | 2083 // interstitial finishes loading. |
| 2084 const GURL url("http://www.google.com"); | 2084 const GURL url("http://www.google.com"); |
| 2085 controller().LoadURL( | 2085 controller().LoadURL( |
| 2086 url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); | 2086 url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
| 2087 EXPECT_FALSE(interstitial->is_showing()); | 2087 EXPECT_FALSE(interstitial->is_showing()); |
| 2088 RunAllPendingInMessageLoop(); | 2088 RunAllPendingInMessageLoop(); |
| 2089 ASSERT_FALSE(deleted); | 2089 ASSERT_FALSE(deleted); |
| 2090 | 2090 |
| 2091 // Now let's make the interstitial navigation commit. | 2091 // Now let's make the interstitial navigation commit. |
| 2092 interstitial->TestDidNavigate(1, interstitial_url); | 2092 interstitial->TestDidNavigate(interstitial_url); |
| 2093 | 2093 |
| 2094 // After it loaded the interstitial should be gone. | 2094 // After it loaded the interstitial should be gone. |
| 2095 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 2095 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 2096 | 2096 |
| 2097 RunAllPendingInMessageLoop(); | 2097 RunAllPendingInMessageLoop(); |
| 2098 EXPECT_TRUE(deleted); | 2098 EXPECT_TRUE(deleted); |
| 2099 } | 2099 } |
| 2100 | 2100 |
| 2101 // Test that a new request to show an interstitial while an interstitial is | 2101 // Test that a new request to show an interstitial while an interstitial is |
| 2102 // pending does not cause problems. htp://crbug/29655 and htp://crbug/9442. | 2102 // pending does not cause problems. htp://crbug/29655 and htp://crbug/9442. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 2127 // The first interstitial should have been closed and deleted. | 2127 // The first interstitial should have been closed and deleted. |
| 2128 EXPECT_EQ(TestInterstitialPage::CANCELED, state1); | 2128 EXPECT_EQ(TestInterstitialPage::CANCELED, state1); |
| 2129 // The 2nd one should still be OK. | 2129 // The 2nd one should still be OK. |
| 2130 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); | 2130 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); |
| 2131 | 2131 |
| 2132 RunAllPendingInMessageLoop(); | 2132 RunAllPendingInMessageLoop(); |
| 2133 EXPECT_TRUE(deleted1); | 2133 EXPECT_TRUE(deleted1); |
| 2134 ASSERT_FALSE(deleted2); | 2134 ASSERT_FALSE(deleted2); |
| 2135 | 2135 |
| 2136 // Make the interstitial navigation commit it should be showing. | 2136 // Make the interstitial navigation commit it should be showing. |
| 2137 interstitial2->TestDidNavigate(1, interstitial_url); | 2137 interstitial2->TestDidNavigate(interstitial_url); |
| 2138 EXPECT_EQ(interstitial2, contents()->GetInterstitialPage()); | 2138 EXPECT_EQ(interstitial2, contents()->GetInterstitialPage()); |
| 2139 } | 2139 } |
| 2140 | 2140 |
| 2141 // Test showing an interstitial and have its renderer crash. | 2141 // Test showing an interstitial and have its renderer crash. |
| 2142 TEST_F(WebContentsImplTest, InterstitialCrasher) { | 2142 TEST_F(WebContentsImplTest, InterstitialCrasher) { |
| 2143 // Show an interstitial. | 2143 // Show an interstitial. |
| 2144 TestInterstitialPage::InterstitialState state = | 2144 TestInterstitialPage::InterstitialState state = |
| 2145 TestInterstitialPage::INVALID; | 2145 TestInterstitialPage::INVALID; |
| 2146 bool deleted = false; | 2146 bool deleted = false; |
| 2147 GURL url("http://interstitial"); | 2147 GURL url("http://interstitial"); |
| 2148 TestInterstitialPage* interstitial = | 2148 TestInterstitialPage* interstitial = |
| 2149 new TestInterstitialPage(contents(), true, url, &state, &deleted); | 2149 new TestInterstitialPage(contents(), true, url, &state, &deleted); |
| 2150 TestInterstitialPageStateGuard state_guard(interstitial); | 2150 TestInterstitialPageStateGuard state_guard(interstitial); |
| 2151 interstitial->Show(); | 2151 interstitial->Show(); |
| 2152 // Simulate a renderer crash before the interstitial is shown. | 2152 // Simulate a renderer crash before the interstitial is shown. |
| 2153 interstitial->TestRenderViewTerminated( | 2153 interstitial->TestRenderViewTerminated( |
| 2154 base::TERMINATION_STATUS_PROCESS_CRASHED, -1); | 2154 base::TERMINATION_STATUS_PROCESS_CRASHED, -1); |
| 2155 // The interstitial should have been dismissed. | 2155 // The interstitial should have been dismissed. |
| 2156 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 2156 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 2157 RunAllPendingInMessageLoop(); | 2157 RunAllPendingInMessageLoop(); |
| 2158 EXPECT_TRUE(deleted); | 2158 EXPECT_TRUE(deleted); |
| 2159 | 2159 |
| 2160 // Now try again but this time crash the intersitial after it was shown. | 2160 // Now try again but this time crash the intersitial after it was shown. |
| 2161 interstitial = | 2161 interstitial = |
| 2162 new TestInterstitialPage(contents(), true, url, &state, &deleted); | 2162 new TestInterstitialPage(contents(), true, url, &state, &deleted); |
| 2163 interstitial->Show(); | 2163 interstitial->Show(); |
| 2164 interstitial->TestDidNavigate(1, url); | 2164 interstitial->TestDidNavigate(url); |
| 2165 // Simulate a renderer crash. | 2165 // Simulate a renderer crash. |
| 2166 interstitial->TestRenderViewTerminated( | 2166 interstitial->TestRenderViewTerminated( |
| 2167 base::TERMINATION_STATUS_PROCESS_CRASHED, -1); | 2167 base::TERMINATION_STATUS_PROCESS_CRASHED, -1); |
| 2168 // The interstitial should have been dismissed. | 2168 // The interstitial should have been dismissed. |
| 2169 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 2169 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 2170 RunAllPendingInMessageLoop(); | 2170 RunAllPendingInMessageLoop(); |
| 2171 EXPECT_TRUE(deleted); | 2171 EXPECT_TRUE(deleted); |
| 2172 } | 2172 } |
| 2173 | 2173 |
| 2174 // Tests that showing an interstitial as a result of a browser initiated | 2174 // Tests that showing an interstitial as a result of a browser initiated |
| 2175 // navigation while an interstitial is showing does not remove the pending | 2175 // navigation while an interstitial is showing does not remove the pending |
| 2176 // entry (see http://crbug.com/9791). | 2176 // entry (see http://crbug.com/9791). |
| 2177 TEST_F(WebContentsImplTest, NewInterstitialDoesNotCancelPendingEntry) { | 2177 TEST_F(WebContentsImplTest, NewInterstitialDoesNotCancelPendingEntry) { |
| 2178 const char kUrl[] = "http://www.badguys.com/"; | 2178 const char kUrl[] = "http://www.badguys.com/"; |
| 2179 const GURL kGURL(kUrl); | 2179 const GURL kGURL(kUrl); |
| 2180 | 2180 |
| 2181 // Start a navigation to a page | 2181 // Start a navigation to a page |
| 2182 contents()->GetController().LoadURL( | 2182 contents()->GetController().LoadURL( |
| 2183 kGURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); | 2183 kGURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
| 2184 | 2184 |
| 2185 // Simulate that navigation triggering an interstitial. | 2185 // Simulate that navigation triggering an interstitial. |
| 2186 TestInterstitialPage::InterstitialState state = | 2186 TestInterstitialPage::InterstitialState state = |
| 2187 TestInterstitialPage::INVALID; | 2187 TestInterstitialPage::INVALID; |
| 2188 bool deleted = false; | 2188 bool deleted = false; |
| 2189 TestInterstitialPage* interstitial = | 2189 TestInterstitialPage* interstitial = |
| 2190 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); | 2190 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); |
| 2191 TestInterstitialPageStateGuard state_guard(interstitial); | 2191 TestInterstitialPageStateGuard state_guard(interstitial); |
| 2192 interstitial->Show(); | 2192 interstitial->Show(); |
| 2193 interstitial->TestDidNavigate(1, kGURL); | 2193 interstitial->TestDidNavigate(kGURL); |
| 2194 | 2194 |
| 2195 // Initiate a new navigation from the browser that also triggers an | 2195 // Initiate a new navigation from the browser that also triggers an |
| 2196 // interstitial. | 2196 // interstitial. |
| 2197 contents()->GetController().LoadURL( | 2197 contents()->GetController().LoadURL( |
| 2198 kGURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); | 2198 kGURL, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
| 2199 TestInterstitialPage::InterstitialState state2 = | 2199 TestInterstitialPage::InterstitialState state2 = |
| 2200 TestInterstitialPage::INVALID; | 2200 TestInterstitialPage::INVALID; |
| 2201 bool deleted2 = false; | 2201 bool deleted2 = false; |
| 2202 TestInterstitialPage* interstitial2 = | 2202 TestInterstitialPage* interstitial2 = |
| 2203 new TestInterstitialPage(contents(), true, kGURL, &state2, &deleted2); | 2203 new TestInterstitialPage(contents(), true, kGURL, &state2, &deleted2); |
| 2204 TestInterstitialPageStateGuard state_guard2(interstitial2); | 2204 TestInterstitialPageStateGuard state_guard2(interstitial2); |
| 2205 interstitial2->Show(); | 2205 interstitial2->Show(); |
| 2206 interstitial2->TestDidNavigate(1, kGURL); | 2206 interstitial2->TestDidNavigate(kGURL); |
| 2207 | 2207 |
| 2208 // Make sure we still have an entry. | 2208 // Make sure we still have an entry. |
| 2209 NavigationEntry* entry = contents()->GetController().GetPendingEntry(); | 2209 NavigationEntry* entry = contents()->GetController().GetPendingEntry(); |
| 2210 ASSERT_TRUE(entry); | 2210 ASSERT_TRUE(entry); |
| 2211 EXPECT_EQ(kUrl, entry->GetURL().spec()); | 2211 EXPECT_EQ(kUrl, entry->GetURL().spec()); |
| 2212 | 2212 |
| 2213 // And that the first interstitial is gone, but not the second. | 2213 // And that the first interstitial is gone, but not the second. |
| 2214 EXPECT_EQ(TestInterstitialPage::CANCELED, state); | 2214 EXPECT_EQ(TestInterstitialPage::CANCELED, state); |
| 2215 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); | 2215 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); |
| 2216 RunAllPendingInMessageLoop(); | 2216 RunAllPendingInMessageLoop(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2232 contents()->GetMainFrame(), 1, kGURL, ui::PAGE_TRANSITION_TYPED); | 2232 contents()->GetMainFrame(), 1, kGURL, ui::PAGE_TRANSITION_TYPED); |
| 2233 | 2233 |
| 2234 // Simulate showing an interstitial while the page is showing. | 2234 // Simulate showing an interstitial while the page is showing. |
| 2235 TestInterstitialPage::InterstitialState state = | 2235 TestInterstitialPage::InterstitialState state = |
| 2236 TestInterstitialPage::INVALID; | 2236 TestInterstitialPage::INVALID; |
| 2237 bool deleted = false; | 2237 bool deleted = false; |
| 2238 TestInterstitialPage* interstitial = | 2238 TestInterstitialPage* interstitial = |
| 2239 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); | 2239 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); |
| 2240 TestInterstitialPageStateGuard state_guard(interstitial); | 2240 TestInterstitialPageStateGuard state_guard(interstitial); |
| 2241 interstitial->Show(); | 2241 interstitial->Show(); |
| 2242 interstitial->TestDidNavigate(1, kGURL); | 2242 interstitial->TestDidNavigate(kGURL); |
| 2243 | 2243 |
| 2244 // While the interstitial is showing, let's simulate the hidden page | 2244 // While the interstitial is showing, let's simulate the hidden page |
| 2245 // attempting to show a JS message. | 2245 // attempting to show a JS message. |
| 2246 IPC::Message* dummy_message = new IPC::Message; | 2246 IPC::Message* dummy_message = new IPC::Message; |
| 2247 contents()->RunJavaScriptMessage(contents()->GetMainFrame(), | 2247 contents()->RunJavaScriptMessage(contents()->GetMainFrame(), |
| 2248 base::ASCIIToUTF16("This is an informative message"), | 2248 base::ASCIIToUTF16("This is an informative message"), |
| 2249 base::ASCIIToUTF16("OK"), | 2249 base::ASCIIToUTF16("OK"), |
| 2250 kGURL, JAVASCRIPT_MESSAGE_TYPE_ALERT, dummy_message); | 2250 kGURL, JAVASCRIPT_MESSAGE_TYPE_ALERT, dummy_message); |
| 2251 EXPECT_TRUE(contents()->last_dialog_suppressed_); | 2251 EXPECT_TRUE(contents()->last_dialog_suppressed_); |
| 2252 } | 2252 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2265 | 2265 |
| 2266 // Show an interstitial. | 2266 // Show an interstitial. |
| 2267 TestInterstitialPage::InterstitialState state = | 2267 TestInterstitialPage::InterstitialState state = |
| 2268 TestInterstitialPage::INVALID; | 2268 TestInterstitialPage::INVALID; |
| 2269 bool deleted = false; | 2269 bool deleted = false; |
| 2270 GURL url2("http://interstitial"); | 2270 GURL url2("http://interstitial"); |
| 2271 TestInterstitialPage* interstitial = | 2271 TestInterstitialPage* interstitial = |
| 2272 new TestInterstitialPage(contents(), true, url2, &state, &deleted); | 2272 new TestInterstitialPage(contents(), true, url2, &state, &deleted); |
| 2273 TestInterstitialPageStateGuard state_guard(interstitial); | 2273 TestInterstitialPageStateGuard state_guard(interstitial); |
| 2274 interstitial->Show(); | 2274 interstitial->Show(); |
| 2275 interstitial->TestDidNavigate(1, url2); | 2275 interstitial->TestDidNavigate(url2); |
| 2276 EXPECT_TRUE(interstitial->is_showing()); | 2276 EXPECT_TRUE(interstitial->is_showing()); |
| 2277 EXPECT_EQ(2, controller().GetEntryCount()); | 2277 EXPECT_EQ(2, controller().GetEntryCount()); |
| 2278 | 2278 |
| 2279 // Create another NavigationController. | 2279 // Create another NavigationController. |
| 2280 GURL url3("http://foo2"); | 2280 GURL url3("http://foo2"); |
| 2281 scoped_ptr<TestWebContents> other_contents( | 2281 scoped_ptr<TestWebContents> other_contents( |
| 2282 static_cast<TestWebContents*>(CreateTestWebContents())); | 2282 static_cast<TestWebContents*>(CreateTestWebContents())); |
| 2283 NavigationControllerImpl& other_controller = other_contents->GetController(); | 2283 NavigationControllerImpl& other_controller = other_contents->GetController(); |
| 2284 other_contents->NavigateAndCommit(url3); | 2284 other_contents->NavigateAndCommit(url3); |
| 2285 other_contents->ExpectSetHistoryLengthAndPrune( | 2285 other_contents->ExpectSetHistoryLengthAndPrune( |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2317 // Show an interstitial. | 2317 // Show an interstitial. |
| 2318 TestInterstitialPage::InterstitialState state = | 2318 TestInterstitialPage::InterstitialState state = |
| 2319 TestInterstitialPage::INVALID; | 2319 TestInterstitialPage::INVALID; |
| 2320 bool deleted = false; | 2320 bool deleted = false; |
| 2321 GURL url3("http://interstitial"); | 2321 GURL url3("http://interstitial"); |
| 2322 TestInterstitialPage* interstitial = | 2322 TestInterstitialPage* interstitial = |
| 2323 new TestInterstitialPage(other_contents.get(), true, url3, &state, | 2323 new TestInterstitialPage(other_contents.get(), true, url3, &state, |
| 2324 &deleted); | 2324 &deleted); |
| 2325 TestInterstitialPageStateGuard state_guard(interstitial); | 2325 TestInterstitialPageStateGuard state_guard(interstitial); |
| 2326 interstitial->Show(); | 2326 interstitial->Show(); |
| 2327 interstitial->TestDidNavigate(1, url3); | 2327 interstitial->TestDidNavigate(url3); |
| 2328 EXPECT_TRUE(interstitial->is_showing()); | 2328 EXPECT_TRUE(interstitial->is_showing()); |
| 2329 EXPECT_EQ(2, other_controller.GetEntryCount()); | 2329 EXPECT_EQ(2, other_controller.GetEntryCount()); |
| 2330 | 2330 |
| 2331 // Ensure that we do not allow calling CopyStateFromAndPrune when an | 2331 // Ensure that we do not allow calling CopyStateFromAndPrune when an |
| 2332 // interstitial is showing in the target. | 2332 // interstitial is showing in the target. |
| 2333 EXPECT_FALSE(other_controller.CanPruneAllButLastCommitted()); | 2333 EXPECT_FALSE(other_controller.CanPruneAllButLastCommitted()); |
| 2334 } | 2334 } |
| 2335 | 2335 |
| 2336 // Regression test for http://crbug.com/168611 - the URLs passed by the | 2336 // Regression test for http://crbug.com/168611 - the URLs passed by the |
| 2337 // DidFinishLoad and DidFailLoadWithError IPCs should get filtered. | 2337 // DidFinishLoad and DidFailLoadWithError IPCs should get filtered. |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2788 | 2788 |
| 2789 // Destroy the remote player. No power save blockers should remain. | 2789 // Destroy the remote player. No power save blockers should remain. |
| 2790 rfh->OnMessageReceived( | 2790 rfh->OnMessageReceived( |
| 2791 FrameHostMsg_MediaPausedNotification(0, kPlayerRemoteId)); | 2791 FrameHostMsg_MediaPausedNotification(0, kPlayerRemoteId)); |
| 2792 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing()); | 2792 EXPECT_FALSE(contents()->has_video_power_save_blocker_for_testing()); |
| 2793 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing()); | 2793 EXPECT_FALSE(contents()->has_audio_power_save_blocker_for_testing()); |
| 2794 } | 2794 } |
| 2795 #endif | 2795 #endif |
| 2796 | 2796 |
| 2797 } // namespace content | 2797 } // namespace content |
| OLD | NEW |