| Index: content/browser/frame_host/render_frame_host_manager_unittest.cc
|
| diff --git a/content/browser/frame_host/render_frame_host_manager_unittest.cc b/content/browser/frame_host/render_frame_host_manager_unittest.cc
|
| index 23b49c8cde575de2dec6b95bc533236b58a864e0..5d6e7d4a515afb882fa377bbe9b006e570621c4e 100644
|
| --- a/content/browser/frame_host/render_frame_host_manager_unittest.cc
|
| +++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc
|
| @@ -8,18 +8,14 @@
|
| #include "base/test/histogram_tester.h"
|
| #include "base/time/time.h"
|
| #include "content/browser/frame_host/cross_site_transferring_request.h"
|
| -#include "content/browser/frame_host/navigation_before_commit_info.h"
|
| #include "content/browser/frame_host/navigation_controller_impl.h"
|
| #include "content/browser/frame_host/navigation_entry_impl.h"
|
| -#include "content/browser/frame_host/navigation_request.h"
|
| -#include "content/browser/frame_host/navigation_request_info.h"
|
| #include "content/browser/frame_host/navigator.h"
|
| -#include "content/browser/frame_host/navigator_impl.h"
|
| #include "content/browser/frame_host/render_frame_host_manager.h"
|
| #include "content/browser/frame_host/render_frame_proxy_host.h"
|
| #include "content/browser/site_instance_impl.h"
|
| #include "content/browser/webui/web_ui_controller_factory_registry.h"
|
| -#include "content/common/navigation_params.h"
|
| +#include "content/common/frame_messages.h"
|
| #include "content/common/view_messages.h"
|
| #include "content/public/browser/notification_details.h"
|
| #include "content/public/browser/notification_service.h"
|
| @@ -388,56 +384,6 @@ class RenderFrameHostManagerTest
|
| return ntp_rfh;
|
| }
|
|
|
| - NavigationRequest* GetNavigationRequestForRenderFrameManager(
|
| - RenderFrameHostManager* manager) const {
|
| - return manager->navigation_request_for_testing();
|
| - }
|
| -
|
| - void EnableBrowserSideNavigation() {
|
| - CommandLine::ForCurrentProcess()->AppendSwitch(
|
| - switches::kEnableBrowserSideNavigation);
|
| - }
|
| -
|
| - void SendRequestNavigation(FrameTreeNode* node,
|
| - const GURL& url) {
|
| - SendRequestNavigationWithParameters(
|
| - node, url, Referrer(), ui::PAGE_TRANSITION_LINK,
|
| - FrameMsg_Navigate_Type::NORMAL);
|
| - }
|
| -
|
| - void SendRequestNavigationWithParameters(
|
| - FrameTreeNode* node,
|
| - const GURL& url,
|
| - const Referrer& referrer,
|
| - ui::PageTransition transition_type,
|
| - FrameMsg_Navigate_Type::Value navigation_type) {
|
| - scoped_ptr<NavigationEntryImpl> entry(
|
| - NavigationEntryImpl::FromNavigationEntry(
|
| - NavigationController::CreateNavigationEntry(
|
| - url,
|
| - referrer,
|
| - transition_type,
|
| - false,
|
| - std::string(),
|
| - controller().GetBrowserContext())));
|
| - scoped_ptr<NavigationRequest> navigation_request(new NavigationRequest(
|
| - node->frame_tree_node_id(),
|
| - CommonNavigationParams(entry->GetURL(),
|
| - entry->GetReferrer(),
|
| - entry->GetTransitionType(),
|
| - navigation_type,
|
| - !entry->IsViewSourceMode()),
|
| - CommitNavigationParams(entry->GetPageState(),
|
| - entry->GetIsOverridingUserAgent(),
|
| - base::TimeTicks::Now())));
|
| - RequestNavigationParams request_params(
|
| - entry->GetHasPostData(),
|
| - entry->extra_headers(),
|
| - entry->GetBrowserInitiatedPostData());
|
| - node->render_manager()->RequestNavigation(navigation_request.Pass(),
|
| - request_params);
|
| - }
|
| -
|
| private:
|
| RenderFrameHostManagerTestWebUIControllerFactory factory_;
|
| scoped_ptr<FrameLifetimeConsistencyChecker> lifetime_checker_;
|
| @@ -1750,235 +1696,4 @@ TEST_F(RenderFrameHostManagerTest,
|
| }
|
| }
|
|
|
| -// PlzNavigate: Test that a proper NavigationRequest is created by
|
| -// BeginNavigation.
|
| -// Note that all PlzNavigate methods on the browser side require the use of the
|
| -// flag kEnableBrowserSideNavigation.
|
| -TEST_F(RenderFrameHostManagerTest, BrowserSideNavigationBeginNavigation) {
|
| - const GURL kUrl1("http://www.google.com/");
|
| - const GURL kUrl2("http://www.chromium.org/");
|
| - const GURL kUrl3("http://www.gmail.com/");
|
| - const int64 kFirstNavRequestID = 1;
|
| -
|
| - // TODO(clamy): we should be enabling browser side navigations here
|
| - // when CommitNavigation is properly implemented.
|
| - // Navigate to the first page.
|
| - contents()->NavigateAndCommit(kUrl1);
|
| -
|
| - EnableBrowserSideNavigation();
|
| - // Add a subframe.
|
| - TestRenderFrameHost* subframe_rfh = static_cast<TestRenderFrameHost*>(
|
| - contents()->GetFrameTree()->AddFrame(
|
| - contents()->GetFrameTree()->root(), 14, "Child"));
|
| -
|
| - RenderFrameHostManager* subframe_manager =
|
| - subframe_rfh->frame_tree_node()->render_manager();
|
| - SendRequestNavigation(subframe_rfh->frame_tree_node(), kUrl2);
|
| - // Simulate a BeginNavigation IPC on the subframe.
|
| - subframe_rfh->SendBeginNavigationWithURL(kUrl2);
|
| - NavigationRequest* subframe_request =
|
| - GetNavigationRequestForRenderFrameManager(subframe_manager);
|
| - ASSERT_TRUE(subframe_request);
|
| - EXPECT_EQ(kUrl2, subframe_request->common_params().url);
|
| - // First party for cookies url should be that of the main frame.
|
| - EXPECT_EQ(kUrl1, subframe_request->info_for_test()->first_party_for_cookies);
|
| - EXPECT_FALSE(subframe_request->info_for_test()->is_main_frame);
|
| - EXPECT_TRUE(subframe_request->info_for_test()->parent_is_main_frame);
|
| - EXPECT_EQ(kFirstNavRequestID, subframe_request->navigation_request_id());
|
| -
|
| - RenderFrameHostManager* main_frame_manager =
|
| - contents()->GetMainFrame()->frame_tree_node()->render_manager();
|
| - SendRequestNavigation(contents()->GetMainFrame()->frame_tree_node(), kUrl3);
|
| - // Simulate a BeginNavigation IPC on the main frame.
|
| - contents()->GetMainFrame()->SendBeginNavigationWithURL(kUrl3);
|
| - NavigationRequest* main_request =
|
| - GetNavigationRequestForRenderFrameManager(main_frame_manager);
|
| - ASSERT_TRUE(main_request);
|
| - EXPECT_EQ(kUrl3, main_request->common_params().url);
|
| - EXPECT_EQ(kUrl3, main_request->info_for_test()->first_party_for_cookies);
|
| - EXPECT_TRUE(main_request->info_for_test()->is_main_frame);
|
| - EXPECT_FALSE(main_request->info_for_test()->parent_is_main_frame);
|
| - EXPECT_EQ(kFirstNavRequestID + 1, main_request->navigation_request_id());
|
| -}
|
| -
|
| -// PlzNavigate: Test that RequestNavigation creates a NavigationRequest and that
|
| -// RenderFrameHost is not modified when the navigation commits.
|
| -TEST_F(RenderFrameHostManagerTest,
|
| - BrowserSideNavigationRequestNavigationNoLiveRenderer) {
|
| - const GURL kUrl("http://www.google.com/");
|
| -
|
| - EnableBrowserSideNavigation();
|
| - EXPECT_FALSE(main_test_rfh()->render_view_host()->IsRenderViewLive());
|
| - RenderFrameHostManager* render_manager =
|
| - main_test_rfh()->frame_tree_node()->render_manager();
|
| - SendRequestNavigation(main_test_rfh()->frame_tree_node(), kUrl);
|
| - NavigationRequest* main_request =
|
| - GetNavigationRequestForRenderFrameManager(render_manager);
|
| - // A NavigationRequest should have been generated.
|
| - EXPECT_TRUE(main_request != NULL);
|
| - RenderFrameHostImpl* rfh = main_test_rfh();
|
| -
|
| - // Now commit the same url.
|
| - NavigationBeforeCommitInfo commit_info;
|
| - commit_info.navigation_url = kUrl;
|
| - commit_info.navigation_request_id = main_request->navigation_request_id();
|
| - render_manager->CommitNavigation(commit_info);
|
| - main_request = GetNavigationRequestForRenderFrameManager(render_manager);
|
| -
|
| - // The main RFH should not have been changed, and the renderer should have
|
| - // been initialized.
|
| - EXPECT_EQ(rfh, main_test_rfh());
|
| - EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive());
|
| - EXPECT_TRUE(main_test_rfh()->render_view_host()->IsRenderViewLive());
|
| -}
|
| -
|
| -// PlzNavigate: Test that a new RenderFrameHost is created when doing a cross
|
| -// site navigation.
|
| -TEST_F(RenderFrameHostManagerTest,
|
| - BrowserSideNavigationCrossSiteNavigation) {
|
| - const GURL kUrl1("http://www.chromium.org/");
|
| - const GURL kUrl2("http://www.google.com/");
|
| -
|
| - // TODO(clamy): we should be enabling browser side navigations here
|
| - // when CommitNavigation is properly implemented.
|
| - // Navigate to the first page.
|
| - contents()->NavigateAndCommit(kUrl1);
|
| - RenderFrameHostImpl* rfh = main_test_rfh();
|
| - EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh->rfh_state());
|
| - RenderFrameHostManager* render_manager =
|
| - main_test_rfh()->frame_tree_node()->render_manager();
|
| -
|
| - EnableBrowserSideNavigation();
|
| - // Navigate to a different site.
|
| - SendRequestNavigation(main_test_rfh()->frame_tree_node(), kUrl2);
|
| - main_test_rfh()->SendBeginNavigationWithURL(kUrl2);
|
| - NavigationRequest* main_request =
|
| - GetNavigationRequestForRenderFrameManager(render_manager);
|
| - ASSERT_TRUE(main_request);
|
| -
|
| - NavigationBeforeCommitInfo commit_info;
|
| - commit_info.navigation_url = kUrl2;
|
| - commit_info.navigation_request_id = main_request->navigation_request_id();
|
| - render_manager->CommitNavigation(commit_info);
|
| - EXPECT_NE(main_test_rfh(), rfh);
|
| - EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive());
|
| - EXPECT_TRUE(main_test_rfh()->render_view_host()->IsRenderViewLive());
|
| -}
|
| -
|
| -// PlzNavigate: Test that a navigation commit is ignored if another request has
|
| -// been issued in the meantime.
|
| -// TODO(carlosk): add checks to assert that the cancel call was sent to
|
| -// ResourceDispatcherHost in the IO thread by extending
|
| -// ResourceDispatcherHostDelegate (like in cross_site_transfer_browsertest.cc
|
| -// and plugin_browsertest.cc).
|
| -TEST_F(RenderFrameHostManagerTest,
|
| - BrowserSideNavigationIgnoreStaleNavigationCommit) {
|
| - const GURL kUrl0("http://www.wikipedia.org/");
|
| - const GURL kUrl0_site = SiteInstance::GetSiteForURL(browser_context(), kUrl0);
|
| - const GURL kUrl1("http://www.chromium.org/");
|
| - const GURL kUrl2("http://www.google.com/");
|
| - const GURL kUrl2_site = SiteInstance::GetSiteForURL(browser_context(), kUrl2);
|
| -
|
| - // Initialization.
|
| - contents()->NavigateAndCommit(kUrl0);
|
| - RenderFrameHostManager* render_manager =
|
| - main_test_rfh()->frame_tree_node()->render_manager();
|
| - EnableBrowserSideNavigation();
|
| - EXPECT_EQ(kUrl0_site, main_test_rfh()->GetSiteInstance()->GetSiteURL());
|
| -
|
| - // Request navigation to the 1st URL and gather data.
|
| - SendRequestNavigation(main_test_rfh()->frame_tree_node(), kUrl1);
|
| - main_test_rfh()->SendBeginNavigationWithURL(kUrl1);
|
| - NavigationRequest* request1 =
|
| - GetNavigationRequestForRenderFrameManager(render_manager);
|
| - ASSERT_TRUE(request1);
|
| - int64 request_id1 = request1->navigation_request_id();
|
| -
|
| - // Request navigation to the 2nd URL and gather more data.
|
| - SendRequestNavigation(main_test_rfh()->frame_tree_node(), kUrl2);
|
| - main_test_rfh()->SendBeginNavigationWithURL(kUrl2);
|
| - NavigationRequest* request2 =
|
| - GetNavigationRequestForRenderFrameManager(render_manager);
|
| - ASSERT_TRUE(request2);
|
| - int64 request_id2 = request2->navigation_request_id();
|
| - EXPECT_NE(request_id1, request_id2);
|
| -
|
| - // Confirms that a stale commit is ignored by the RHFM.
|
| - NavigationBeforeCommitInfo nbc_info;
|
| - nbc_info.navigation_url = kUrl1;
|
| - nbc_info.navigation_request_id = request_id1;
|
| - render_manager->CommitNavigation(nbc_info);
|
| - EXPECT_EQ(kUrl0_site, main_test_rfh()->GetSiteInstance()->GetSiteURL());
|
| -
|
| - // Confirms that a valid, request-matching commit is correctly processed.
|
| - nbc_info.navigation_url = kUrl2;
|
| - nbc_info.navigation_request_id = request_id2;
|
| - render_manager->CommitNavigation(nbc_info);
|
| - EXPECT_EQ(kUrl2_site, main_test_rfh()->GetSiteInstance()->GetSiteURL());
|
| -}
|
| -
|
| -// PlzNavigate: Tests that the navigation histograms are correctly tracked both
|
| -// when PlzNavigate is enabled and disabled, and also ignores in-tab renderer
|
| -// initiated navigation for the non-enabled case.
|
| -// Note: the related histogram, Navigation.TimeToURLJobStart, cannot be tracked
|
| -// by this test as the IO thread is not running.
|
| -TEST_F(RenderFrameHostManagerTest, BrowserSideNavigationHistogramTest) {
|
| - const GURL kUrl0("http://www.google.com/");
|
| - const GURL kUrl1("http://www.chromium.org/");
|
| - base::HistogramTester histo_tester;
|
| -
|
| - // Performs a "normal" non-PlzNavigate navigation
|
| - contents()->NavigateAndCommit(kUrl0);
|
| - histo_tester.ExpectTotalCount("Navigation.TimeToCommit", 1);
|
| -
|
| - // Performs an in-tab renderer initiated navigation
|
| - int32 new_page_id = 1 + contents()->GetMaxPageIDForSiteInstance(
|
| - main_test_rfh()->GetSiteInstance());
|
| - main_test_rfh()->SendNavigate(new_page_id, kUrl0);
|
| - histo_tester.ExpectTotalCount("Navigation.TimeToCommit", 1);
|
| -
|
| - // Performs a PlzNavigate navigation
|
| - EnableBrowserSideNavigation();
|
| - contents()->NavigateAndCommit(kUrl1);
|
| - histo_tester.ExpectTotalCount("Navigation.TimeToCommit", 2);
|
| -}
|
| -
|
| -// PlzNavigate: Test that a reload navigation is properly signaled to the
|
| -// renderer when the navigation can commit.
|
| -TEST_F(RenderFrameHostManagerTest, BrowserSideNavigationReload) {
|
| - const GURL kUrl("http://www.google.com/");
|
| - contents()->NavigateAndCommit(kUrl);
|
| -
|
| - EnableBrowserSideNavigation();
|
| - RenderFrameHostManager* render_manager =
|
| - main_test_rfh()->frame_tree_node()->render_manager();
|
| - SendRequestNavigationWithParameters(
|
| - main_test_rfh()->frame_tree_node(), kUrl, Referrer(),
|
| - ui::PAGE_TRANSITION_LINK, FrameMsg_Navigate_Type::RELOAD);
|
| - contents()->GetMainFrame()->SendBeginNavigationWithURL(kUrl);
|
| - // A NavigationRequest should have been generated.
|
| - NavigationRequest* main_request =
|
| - GetNavigationRequestForRenderFrameManager(render_manager);
|
| - ASSERT_TRUE(main_request != NULL);
|
| - EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD,
|
| - main_request->common_params().navigation_type);
|
| - int page_id = contents()->GetMaxPageIDForSiteInstance(
|
| - main_test_rfh()->GetSiteInstance()) + 1;
|
| - main_test_rfh()->SendNavigate(page_id, kUrl);
|
| -
|
| - // Now do a shift+reload.
|
| - SendRequestNavigationWithParameters(
|
| - main_test_rfh()->frame_tree_node(),
|
| - kUrl,
|
| - Referrer(),
|
| - ui::PAGE_TRANSITION_LINK,
|
| - FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE);
|
| - contents()->GetMainFrame()->SendBeginNavigationWithURL(kUrl);
|
| - // A NavigationRequest should have been generated.
|
| - main_request = GetNavigationRequestForRenderFrameManager(render_manager);
|
| - ASSERT_TRUE(main_request != NULL);
|
| - EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE,
|
| - main_request->common_params().navigation_type);
|
| -}
|
| -
|
| } // namespace content
|
|
|