// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/test/scoped_feature_list.h" #include "content/browser/renderer_host/render_frame_host_manager_browsertest.h" #include "content/browser/web_contents/web_contents_impl.h" #include "content/public/test/browser_test.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/content_browser_test.h" #include "content/public/test/content_browser_test_utils.h" #include "content/public/test/test_utils.h" #include "content/shell/browser/shell.h" #include "content/test/content_browser_test_utils_internal.h" #include "content/test/render_document_feature.h" #include "net/test/embedded_test_server/embedded_test_server.h" namespace content { // Fully enable RenderDocument for speculative RenderViewHost tests. This is // done by parameterizing this test suite with a single test parameter. SpeculativeRenderViewHostTest; // Check that FrameTree::speculative_render_view_host_ is used correctly. IN_PROC_BROWSER_TEST_P(SpeculativeRenderViewHostTest, SameSiteInstanceGroupCase) { … } // Test that cross-SiteInstanceGroup navigations do not yet use speculative // RenderViewHosts. IN_PROC_BROWSER_TEST_P(SpeculativeRenderViewHostTest, CrossSiteInstanceGroupNavigation) { … } // Check that FrameTree::speculative_render_view_host_ is removed when the // navigation is cancelled before completing. IN_PROC_BROWSER_TEST_P(SpeculativeRenderViewHostTest, SpeculativeRenderViewHostCreatedNotUsed) { … } // With RenderDocument, a same-SiteInstanceGroup history navigation page should // not be reusing RenderViewHosts, so check that a new speculative // RenderViewHost is being created for history navigations. IN_PROC_BROWSER_TEST_P(SpeculativeRenderViewHostTest, HistoryNavigation) { … } // Check that opener proxies are unaffected in a navigation that has a // speculative RenderViewHost. When navigating a tab with an opener proxy, the // opener proxy to the tab shouldn't change when the page that was opened // navigates. IN_PROC_BROWSER_TEST_P(SpeculativeRenderViewHostTest, OpenerProxies) { … } // Make sure any subframe proxies are deleted after a navigation that uses // speculative RenderViewHosts. IN_PROC_BROWSER_TEST_P(SpeculativeRenderViewHostTest, SubframeProxies) { … } // Crash a page, then navigate to a same-site URL. The new navigation should use // a new RenderFrameHost and speculative RenderViewHost. // TODO(crbug.com/1336305, yangsharon): This navigation is not using a // speculative RenderViewHost, when it should be. Fix and enable this test. IN_PROC_BROWSER_TEST_P(SpeculativeRenderViewHostTest, DISABLED_CrashedRenderFrameHost) { … } // Check that FrameTree::ForEachRenderViewHost includes the speculative // RenderViewHost when one exists. IN_PROC_BROWSER_TEST_P(SpeculativeRenderViewHostTest, ForEachRenderViewHost) { … } INSTANTIATE_TEST_SUITE_P(…); } // namespace content