OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "base/test/histogram_tester.h" | 8 #include "base/test/histogram_tester.h" |
9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
10 #include "content/browser/frame_host/cross_site_transferring_request.h" | 10 #include "content/browser/frame_host/cross_site_transferring_request.h" |
(...skipping 824 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
835 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(), | 835 NULL /* instance */, -1 /* page_id */, kUrl1, Referrer(), |
836 base::string16() /* title */, ui::PAGE_TRANSITION_TYPED, | 836 base::string16() /* title */, ui::PAGE_TRANSITION_TYPED, |
837 false /* is_renderer_init */); | 837 false /* is_renderer_init */); |
838 host = manager->Navigate(entry1); | 838 host = manager->Navigate(entry1); |
839 | 839 |
840 // The RenderFrameHost created in Init will be reused. | 840 // The RenderFrameHost created in Init will be reused. |
841 EXPECT_TRUE(host == manager->current_frame_host()); | 841 EXPECT_TRUE(host == manager->current_frame_host()); |
842 EXPECT_FALSE(manager->pending_frame_host()); | 842 EXPECT_FALSE(manager->pending_frame_host()); |
843 | 843 |
844 // Commit. | 844 // Commit. |
845 manager->DidNavigateFrame(host, true); | 845 manager->DidNavigateFrame(host, true, false); |
846 // Commit to SiteInstance should be delayed until RenderFrame commit. | 846 // Commit to SiteInstance should be delayed until RenderFrame commit. |
847 EXPECT_TRUE(host == manager->current_frame_host()); | 847 EXPECT_TRUE(host == manager->current_frame_host()); |
848 ASSERT_TRUE(host); | 848 ASSERT_TRUE(host); |
849 EXPECT_FALSE(host->GetSiteInstance()->HasSite()); | 849 EXPECT_FALSE(host->GetSiteInstance()->HasSite()); |
850 host->GetSiteInstance()->SetSite(kUrl1); | 850 host->GetSiteInstance()->SetSite(kUrl1); |
851 | 851 |
852 // 2) Navigate to next site. ------------------------- | 852 // 2) Navigate to next site. ------------------------- |
853 const GURL kUrl2("http://www.google.com/foo"); | 853 const GURL kUrl2("http://www.google.com/foo"); |
854 NavigationEntryImpl entry2( | 854 NavigationEntryImpl entry2( |
855 NULL /* instance */, -1 /* page_id */, kUrl2, | 855 NULL /* instance */, -1 /* page_id */, kUrl2, |
856 Referrer(kUrl1, blink::WebReferrerPolicyDefault), | 856 Referrer(kUrl1, blink::WebReferrerPolicyDefault), |
857 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, | 857 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, |
858 true /* is_renderer_init */); | 858 true /* is_renderer_init */); |
859 host = manager->Navigate(entry2); | 859 host = manager->Navigate(entry2); |
860 | 860 |
861 // The RenderFrameHost created in Init will be reused. | 861 // The RenderFrameHost created in Init will be reused. |
862 EXPECT_TRUE(host == manager->current_frame_host()); | 862 EXPECT_TRUE(host == manager->current_frame_host()); |
863 EXPECT_FALSE(manager->pending_frame_host()); | 863 EXPECT_FALSE(manager->pending_frame_host()); |
864 | 864 |
865 // Commit. | 865 // Commit. |
866 manager->DidNavigateFrame(host, true); | 866 manager->DidNavigateFrame(host, true, false); |
867 EXPECT_TRUE(host == manager->current_frame_host()); | 867 EXPECT_TRUE(host == manager->current_frame_host()); |
868 ASSERT_TRUE(host); | 868 ASSERT_TRUE(host); |
869 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); | 869 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); |
870 | 870 |
871 // 3) Cross-site navigate to next site. -------------- | 871 // 3) Cross-site navigate to next site. -------------- |
872 const GURL kUrl3("http://webkit.org/"); | 872 const GURL kUrl3("http://webkit.org/"); |
873 NavigationEntryImpl entry3( | 873 NavigationEntryImpl entry3( |
874 NULL /* instance */, -1 /* page_id */, kUrl3, | 874 NULL /* instance */, -1 /* page_id */, kUrl3, |
875 Referrer(kUrl2, blink::WebReferrerPolicyDefault), | 875 Referrer(kUrl2, blink::WebReferrerPolicyDefault), |
876 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, | 876 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, |
877 false /* is_renderer_init */); | 877 false /* is_renderer_init */); |
878 host = manager->Navigate(entry3); | 878 host = manager->Navigate(entry3); |
879 | 879 |
880 // A new RenderFrameHost should be created. | 880 // A new RenderFrameHost should be created. |
881 EXPECT_TRUE(manager->pending_frame_host()); | 881 EXPECT_TRUE(manager->pending_frame_host()); |
882 ASSERT_EQ(host, manager->pending_frame_host()); | 882 ASSERT_EQ(host, manager->pending_frame_host()); |
883 | 883 |
884 notifications.Reset(); | 884 notifications.Reset(); |
885 | 885 |
886 // Commit. | 886 // Commit. |
887 manager->DidNavigateFrame(manager->pending_frame_host(), true); | 887 manager->DidNavigateFrame(manager->pending_frame_host(), true, false); |
888 EXPECT_TRUE(host == manager->current_frame_host()); | 888 EXPECT_TRUE(host == manager->current_frame_host()); |
889 ASSERT_TRUE(host); | 889 ASSERT_TRUE(host); |
890 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); | 890 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); |
891 // Check the pending RenderFrameHost has been committed. | 891 // Check the pending RenderFrameHost has been committed. |
892 EXPECT_FALSE(manager->pending_frame_host()); | 892 EXPECT_FALSE(manager->pending_frame_host()); |
893 | 893 |
894 // We should observe a notification. | 894 // We should observe a notification. |
895 EXPECT_TRUE( | 895 EXPECT_TRUE( |
896 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); | 896 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); |
897 } | 897 } |
(...skipping 29 matching lines...) Expand all Loading... |
927 // get loaded in between. | 927 // get loaded in between. |
928 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); | 928 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); |
929 EXPECT_EQ(kUrl, host->GetSiteInstance()->GetSiteURL()); | 929 EXPECT_EQ(kUrl, host->GetSiteInstance()->GetSiteURL()); |
930 | 930 |
931 // The Web UI is committed immediately because the RenderViewHost has not been | 931 // The Web UI is committed immediately because the RenderViewHost has not been |
932 // used yet. UpdateStateForNavigate() took the short cut path. | 932 // used yet. UpdateStateForNavigate() took the short cut path. |
933 EXPECT_FALSE(manager->pending_web_ui()); | 933 EXPECT_FALSE(manager->pending_web_ui()); |
934 EXPECT_TRUE(manager->web_ui()); | 934 EXPECT_TRUE(manager->web_ui()); |
935 | 935 |
936 // Commit. | 936 // Commit. |
937 manager->DidNavigateFrame(host, true); | 937 manager->DidNavigateFrame(host, true, false); |
938 EXPECT_TRUE( | 938 EXPECT_TRUE( |
939 host->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); | 939 host->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); |
940 } | 940 } |
941 | 941 |
942 // Tests that we can open a WebUI link in a new tab from a WebUI page and still | 942 // Tests that we can open a WebUI link in a new tab from a WebUI page and still |
943 // grant the correct bindings. http://crbug.com/189101. | 943 // grant the correct bindings. http://crbug.com/189101. |
944 TEST_F(RenderFrameHostManagerTest, WebUIInNewTab) { | 944 TEST_F(RenderFrameHostManagerTest, WebUIInNewTab) { |
945 set_should_create_webui(true); | 945 set_should_create_webui(true); |
946 SiteInstance* blank_instance = SiteInstance::Create(browser_context()); | 946 SiteInstance* blank_instance = SiteInstance::Create(browser_context()); |
947 | 947 |
(...skipping 17 matching lines...) Expand all Loading... |
965 RenderFrameHostImpl* host1 = manager1->Navigate(entry1); | 965 RenderFrameHostImpl* host1 = manager1->Navigate(entry1); |
966 | 966 |
967 // We should have a pending navigation to the WebUI RenderViewHost. | 967 // We should have a pending navigation to the WebUI RenderViewHost. |
968 // It should already have bindings. | 968 // It should already have bindings. |
969 EXPECT_EQ(host1, manager1->pending_frame_host()); | 969 EXPECT_EQ(host1, manager1->pending_frame_host()); |
970 EXPECT_NE(host1, manager1->current_frame_host()); | 970 EXPECT_NE(host1, manager1->current_frame_host()); |
971 EXPECT_TRUE( | 971 EXPECT_TRUE( |
972 host1->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); | 972 host1->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); |
973 | 973 |
974 // Commit and ensure we still have bindings. | 974 // Commit and ensure we still have bindings. |
975 manager1->DidNavigateFrame(host1, true); | 975 manager1->DidNavigateFrame(host1, true, false); |
976 SiteInstance* webui_instance = host1->GetSiteInstance(); | 976 SiteInstance* webui_instance = host1->GetSiteInstance(); |
977 EXPECT_EQ(host1, manager1->current_frame_host()); | 977 EXPECT_EQ(host1, manager1->current_frame_host()); |
978 EXPECT_TRUE( | 978 EXPECT_TRUE( |
979 host1->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); | 979 host1->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); |
980 | 980 |
981 // Now simulate clicking a link that opens in a new tab. | 981 // Now simulate clicking a link that opens in a new tab. |
982 scoped_ptr<TestWebContents> web_contents2( | 982 scoped_ptr<TestWebContents> web_contents2( |
983 TestWebContents::Create(browser_context(), webui_instance)); | 983 TestWebContents::Create(browser_context(), webui_instance)); |
984 RenderFrameHostManager* manager2 = | 984 RenderFrameHostManager* manager2 = |
985 web_contents2->GetRenderManagerForTesting(); | 985 web_contents2->GetRenderManagerForTesting(); |
986 // Make sure the new RVH is considered live. This is usually done in | 986 // Make sure the new RVH is considered live. This is usually done in |
987 // RenderWidgetHost::Init when opening a new tab from a link. | 987 // RenderWidgetHost::Init when opening a new tab from a link. |
988 manager2->current_host()->CreateRenderView( | 988 manager2->current_host()->CreateRenderView( |
989 base::string16(), -1, MSG_ROUTING_NONE, -1, false); | 989 base::string16(), -1, MSG_ROUTING_NONE, -1, false); |
990 | 990 |
991 const GURL kUrl2("chrome://foo/bar"); | 991 const GURL kUrl2("chrome://foo/bar"); |
992 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2, | 992 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2, |
993 Referrer(), base::string16() /* title */, | 993 Referrer(), base::string16() /* title */, |
994 ui::PAGE_TRANSITION_LINK, | 994 ui::PAGE_TRANSITION_LINK, |
995 true /* is_renderer_init */); | 995 true /* is_renderer_init */); |
996 RenderFrameHostImpl* host2 = manager2->Navigate(entry2); | 996 RenderFrameHostImpl* host2 = manager2->Navigate(entry2); |
997 | 997 |
998 // No cross-process transition happens because we are already in the right | 998 // No cross-process transition happens because we are already in the right |
999 // SiteInstance. We should grant bindings immediately. | 999 // SiteInstance. We should grant bindings immediately. |
1000 EXPECT_EQ(host2, manager2->current_frame_host()); | 1000 EXPECT_EQ(host2, manager2->current_frame_host()); |
1001 EXPECT_TRUE( | 1001 EXPECT_TRUE( |
1002 host2->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); | 1002 host2->render_view_host()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); |
1003 | 1003 |
1004 manager2->DidNavigateFrame(host2, true); | 1004 manager2->DidNavigateFrame(host2, true, false); |
1005 } | 1005 } |
1006 | 1006 |
1007 // Tests that we don't end up in an inconsistent state if a page does a back and | 1007 // Tests that we don't end up in an inconsistent state if a page does a back and |
1008 // then reload. http://crbug.com/51680 | 1008 // then reload. http://crbug.com/51680 |
1009 // Also tests that only user-gesture navigations can interrupt cross-process | 1009 // Also tests that only user-gesture navigations can interrupt cross-process |
1010 // navigations. http://crbug.com/75195 | 1010 // navigations. http://crbug.com/75195 |
1011 TEST_F(RenderFrameHostManagerTest, PageDoesBackAndReload) { | 1011 TEST_F(RenderFrameHostManagerTest, PageDoesBackAndReload) { |
1012 const GURL kUrl1("http://www.google.com/"); | 1012 const GURL kUrl1("http://www.google.com/"); |
1013 const GURL kUrl2("http://www.evil-site.com/"); | 1013 const GURL kUrl2("http://www.evil-site.com/"); |
1014 | 1014 |
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1457 base::string16() /* title */, ui::PAGE_TRANSITION_TYPED, | 1457 base::string16() /* title */, ui::PAGE_TRANSITION_TYPED, |
1458 false /* is_renderer_init */); | 1458 false /* is_renderer_init */); |
1459 host = manager->Navigate(entry1); | 1459 host = manager->Navigate(entry1); |
1460 | 1460 |
1461 // The RenderFrameHost created in Init will be reused. | 1461 // The RenderFrameHost created in Init will be reused. |
1462 EXPECT_TRUE(host == manager->current_frame_host()); | 1462 EXPECT_TRUE(host == manager->current_frame_host()); |
1463 EXPECT_FALSE(manager->pending_frame_host()); | 1463 EXPECT_FALSE(manager->pending_frame_host()); |
1464 EXPECT_EQ(manager->current_frame_host()->GetSiteInstance(), instance); | 1464 EXPECT_EQ(manager->current_frame_host()->GetSiteInstance(), instance); |
1465 | 1465 |
1466 // Commit. | 1466 // Commit. |
1467 manager->DidNavigateFrame(host, true); | 1467 manager->DidNavigateFrame(host, true, false); |
1468 // Commit to SiteInstance should be delayed until RenderFrame commit. | 1468 // Commit to SiteInstance should be delayed until RenderFrame commit. |
1469 EXPECT_EQ(host, manager->current_frame_host()); | 1469 EXPECT_EQ(host, manager->current_frame_host()); |
1470 ASSERT_TRUE(host); | 1470 ASSERT_TRUE(host); |
1471 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); | 1471 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); |
1472 | 1472 |
1473 // 2) Navigate to a different domain. ------------------------- | 1473 // 2) Navigate to a different domain. ------------------------- |
1474 // Guests stay in the same process on navigation. | 1474 // Guests stay in the same process on navigation. |
1475 const GURL kUrl2("http://www.chromium.org"); | 1475 const GURL kUrl2("http://www.chromium.org"); |
1476 NavigationEntryImpl entry2( | 1476 NavigationEntryImpl entry2( |
1477 NULL /* instance */, -1 /* page_id */, kUrl2, | 1477 NULL /* instance */, -1 /* page_id */, kUrl2, |
1478 Referrer(kUrl1, blink::WebReferrerPolicyDefault), | 1478 Referrer(kUrl1, blink::WebReferrerPolicyDefault), |
1479 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, | 1479 base::string16() /* title */, ui::PAGE_TRANSITION_LINK, |
1480 true /* is_renderer_init */); | 1480 true /* is_renderer_init */); |
1481 host = manager->Navigate(entry2); | 1481 host = manager->Navigate(entry2); |
1482 | 1482 |
1483 // The RenderFrameHost created in Init will be reused. | 1483 // The RenderFrameHost created in Init will be reused. |
1484 EXPECT_EQ(host, manager->current_frame_host()); | 1484 EXPECT_EQ(host, manager->current_frame_host()); |
1485 EXPECT_FALSE(manager->pending_frame_host()); | 1485 EXPECT_FALSE(manager->pending_frame_host()); |
1486 | 1486 |
1487 // Commit. | 1487 // Commit. |
1488 manager->DidNavigateFrame(host, true); | 1488 manager->DidNavigateFrame(host, true, false); |
1489 EXPECT_EQ(host, manager->current_frame_host()); | 1489 EXPECT_EQ(host, manager->current_frame_host()); |
1490 ASSERT_TRUE(host); | 1490 ASSERT_TRUE(host); |
1491 EXPECT_EQ(host->GetSiteInstance(), instance); | 1491 EXPECT_EQ(host->GetSiteInstance(), instance); |
1492 } | 1492 } |
1493 | 1493 |
1494 // Test that we cancel a pending RVH if we close the tab while it's pending. | 1494 // Test that we cancel a pending RVH if we close the tab while it's pending. |
1495 // http://crbug.com/294697. | 1495 // http://crbug.com/294697. |
1496 TEST_F(RenderFrameHostManagerTest, NavigateWithEarlyClose) { | 1496 TEST_F(RenderFrameHostManagerTest, NavigateWithEarlyClose) { |
1497 TestNotificationTracker notifications; | 1497 TestNotificationTracker notifications; |
1498 | 1498 |
(...skipping 19 matching lines...) Expand all Loading... |
1518 // The RenderFrameHost created in Init will be reused. | 1518 // The RenderFrameHost created in Init will be reused. |
1519 EXPECT_EQ(host, manager->current_frame_host()); | 1519 EXPECT_EQ(host, manager->current_frame_host()); |
1520 EXPECT_FALSE(manager->pending_frame_host()); | 1520 EXPECT_FALSE(manager->pending_frame_host()); |
1521 | 1521 |
1522 // We should observe a notification. | 1522 // We should observe a notification. |
1523 EXPECT_TRUE( | 1523 EXPECT_TRUE( |
1524 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); | 1524 notifications.Check1AndReset(NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); |
1525 notifications.Reset(); | 1525 notifications.Reset(); |
1526 | 1526 |
1527 // Commit. | 1527 // Commit. |
1528 manager->DidNavigateFrame(host, true); | 1528 manager->DidNavigateFrame(host, true, false); |
1529 | 1529 |
1530 // Commit to SiteInstance should be delayed until RenderFrame commits. | 1530 // Commit to SiteInstance should be delayed until RenderFrame commits. |
1531 EXPECT_EQ(host, manager->current_frame_host()); | 1531 EXPECT_EQ(host, manager->current_frame_host()); |
1532 EXPECT_FALSE(host->GetSiteInstance()->HasSite()); | 1532 EXPECT_FALSE(host->GetSiteInstance()->HasSite()); |
1533 host->GetSiteInstance()->SetSite(kUrl1); | 1533 host->GetSiteInstance()->SetSite(kUrl1); |
1534 | 1534 |
1535 // 2) Cross-site navigate to next site. ------------------------- | 1535 // 2) Cross-site navigate to next site. ------------------------- |
1536 const GURL kUrl2("http://www.example.com"); | 1536 const GURL kUrl2("http://www.example.com"); |
1537 NavigationEntryImpl entry2( | 1537 NavigationEntryImpl entry2( |
1538 NULL /* instance */, -1 /* page_id */, kUrl2, Referrer(), | 1538 NULL /* instance */, -1 /* page_id */, kUrl2, Referrer(), |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1791 Referrer(), base::string16() /* title */, | 1791 Referrer(), base::string16() /* title */, |
1792 ui::PAGE_TRANSITION_TYPED, | 1792 ui::PAGE_TRANSITION_TYPED, |
1793 false /* is_renderer_init */); | 1793 false /* is_renderer_init */); |
1794 host = manager->Navigate(entry1); | 1794 host = manager->Navigate(entry1); |
1795 | 1795 |
1796 // The RenderFrameHost created in Init will be reused. | 1796 // The RenderFrameHost created in Init will be reused. |
1797 EXPECT_TRUE(host == manager->current_frame_host()); | 1797 EXPECT_TRUE(host == manager->current_frame_host()); |
1798 EXPECT_FALSE(manager->pending_frame_host()); | 1798 EXPECT_FALSE(manager->pending_frame_host()); |
1799 | 1799 |
1800 // Commit. | 1800 // Commit. |
1801 manager->DidNavigateFrame(host, true); | 1801 manager->DidNavigateFrame(host, true, false); |
1802 // Commit to SiteInstance should be delayed until RenderFrame commit. | 1802 // Commit to SiteInstance should be delayed until RenderFrame commit. |
1803 EXPECT_TRUE(host == manager->current_frame_host()); | 1803 EXPECT_TRUE(host == manager->current_frame_host()); |
1804 ASSERT_TRUE(host); | 1804 ASSERT_TRUE(host); |
1805 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); | 1805 EXPECT_TRUE(host->GetSiteInstance()->HasSite()); |
1806 | 1806 |
1807 // 2) Cross-site navigate to next site. -------------- | 1807 // 2) Cross-site navigate to next site. -------------- |
1808 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2, | 1808 NavigationEntryImpl entry2(NULL /* instance */, -1 /* page_id */, kUrl2, |
1809 Referrer(kUrl1, blink::WebReferrerPolicyDefault), | 1809 Referrer(kUrl1, blink::WebReferrerPolicyDefault), |
1810 base::string16() /* title */, | 1810 base::string16() /* title */, |
1811 ui::PAGE_TRANSITION_LINK, | 1811 ui::PAGE_TRANSITION_LINK, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1844 #if 0 | 1844 #if 0 |
1845 // TODO(nick): Currently a proxy to the removed frame lingers in the parent. | 1845 // TODO(nick): Currently a proxy to the removed frame lingers in the parent. |
1846 // Enable this assert below once the proxies to the subframe are correctly | 1846 // Enable this assert below once the proxies to the subframe are correctly |
1847 // cleaned up after detach. http://crbug.com/444955. | 1847 // cleaned up after detach. http://crbug.com/444955. |
1848 ASSERT_TRUE(site_instance->HasOneRef()) | 1848 ASSERT_TRUE(site_instance->HasOneRef()) |
1849 << "This SiteInstance should be destroyable now."; | 1849 << "This SiteInstance should be destroyable now."; |
1850 #endif | 1850 #endif |
1851 } | 1851 } |
1852 | 1852 |
1853 } // namespace content | 1853 } // namespace content |
OLD | NEW |