Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: content/browser/frame_host/navigation_controller_impl_browsertest.cc

Issue 2132603002: [page_load_metrics] Add a NavigationThrottle for richer abort metrics (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nasko@ nits Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/page_load_metrics.gypi ('k') | content/browser/frame_host/navigation_handle_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/frame_host/navigation_controller_impl.h" 5 #include "content/browser/frame_host/navigation_controller_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 1865 matching lines...) Expand 10 before | Expand all | Expand 10 after
1876 // 1. Create a iframe with a URL that doesn't commit. 1876 // 1. Create a iframe with a URL that doesn't commit.
1877 GURL slow_url(embedded_test_server()->GetURL( 1877 GURL slow_url(embedded_test_server()->GetURL(
1878 "/navigation_controller/simple_page_2.html")); 1878 "/navigation_controller/simple_page_2.html"));
1879 TestNavigationManager subframe_delayer(shell()->web_contents(), slow_url); 1879 TestNavigationManager subframe_delayer(shell()->web_contents(), slow_url);
1880 { 1880 {
1881 std::string script = "var iframe = document.createElement('iframe');" 1881 std::string script = "var iframe = document.createElement('iframe');"
1882 "iframe.src = '" + slow_url.spec() + "';" 1882 "iframe.src = '" + slow_url.spec() + "';"
1883 "document.body.appendChild(iframe);"; 1883 "document.body.appendChild(iframe);";
1884 EXPECT_TRUE(ExecuteScript(root, script)); 1884 EXPECT_TRUE(ExecuteScript(root, script));
1885 } 1885 }
1886 subframe_delayer.WaitForWillStartRequest(); 1886 EXPECT_TRUE(subframe_delayer.WaitForWillStartRequest());
1887 1887
1888 // Stop the request so that we can wait for load stop below, without ending up 1888 // Stop the request so that we can wait for load stop below, without ending up
1889 // with a commit for this frame. 1889 // with a commit for this frame.
1890 shell()->web_contents()->Stop(); 1890 shell()->web_contents()->Stop();
1891 1891
1892 // 2. A nested iframe with a cross-site URL should be able to commit. 1892 // 2. A nested iframe with a cross-site URL should be able to commit.
1893 GURL foo_url(embedded_test_server()->GetURL( 1893 GURL foo_url(embedded_test_server()->GetURL(
1894 "foo.com", "/navigation_controller/simple_page_1.html")); 1894 "foo.com", "/navigation_controller/simple_page_1.html"));
1895 { 1895 {
1896 std::string script = "var iframe = document.createElement('iframe');" 1896 std::string script = "var iframe = document.createElement('iframe');"
(...skipping 2170 matching lines...) Expand 10 before | Expand all | Expand 10 after
4067 std::string script = "document.getElementById('thelink').click()"; 4067 std::string script = "document.getElementById('thelink').click()";
4068 EXPECT_TRUE(ExecuteScript(root, script)); 4068 EXPECT_TRUE(ExecuteScript(root, script));
4069 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); 4069 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
4070 EXPECT_EQ(2, controller.GetEntryCount()); 4070 EXPECT_EQ(2, controller.GetEntryCount());
4071 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); 4071 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
4072 4072
4073 // Go back to the first page, which never completes. The attempt to unload the 4073 // Go back to the first page, which never completes. The attempt to unload the
4074 // second page, though, causes it to do a replaceState(). 4074 // second page, though, causes it to do a replaceState().
4075 TestNavigationManager manager(shell()->web_contents(), start_url); 4075 TestNavigationManager manager(shell()->web_contents(), start_url);
4076 controller.GoBack(); 4076 controller.GoBack();
4077 manager.WaitForWillStartRequest(); 4077 EXPECT_TRUE(manager.WaitForWillStartRequest());
4078 4078
4079 // The navigation that just happened was the replaceState(), which should not 4079 // The navigation that just happened was the replaceState(), which should not
4080 // have changed the position into the navigation entry list. Make sure that 4080 // have changed the position into the navigation entry list. Make sure that
4081 // the pending navigation didn't confuse anything. 4081 // the pending navigation didn't confuse anything.
4082 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); 4082 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
4083 } 4083 }
4084 4084
4085 // Ensure the renderer process does not get confused about the current entry 4085 // Ensure the renderer process does not get confused about the current entry
4086 // due to subframes and replaced entries. See https://crbug.com/480201. 4086 // due to subframes and replaced entries. See https://crbug.com/480201.
4087 // TODO(creis): Re-enable for Site Isolation FYI bots: https://crbug.com/502317. 4087 // TODO(creis): Re-enable for Site Isolation FYI bots: https://crbug.com/502317.
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after
4985 controller.GoToOffset(-2); 4985 controller.GoToOffset(-2);
4986 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); 4986 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
4987 4987
4988 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); 4988 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
4989 EXPECT_EQ(url_a, root->current_url()); 4989 EXPECT_EQ(url_a, root->current_url());
4990 EXPECT_EQ(frame_url_a1, root->child_at(0)->current_url()); 4990 EXPECT_EQ(frame_url_a1, root->child_at(0)->current_url());
4991 4991
4992 // Go forward two times in a row, being careful that the subframe commits 4992 // Go forward two times in a row, being careful that the subframe commits
4993 // after the second forward navigation begins but before the main frame 4993 // after the second forward navigation begins but before the main frame
4994 // commits. 4994 // commits.
4995 TestNavigationManager subframe_delayer( 4995 FrameTestNavigationManager subframe_delayer(
4996 root->child_at(0)->frame_tree_node_id(), shell()->web_contents(), 4996 root->child_at(0)->frame_tree_node_id(), shell()->web_contents(),
4997 frame_url_a2); 4997 frame_url_a2);
4998 TestNavigationManager mainframe_delayer(shell()->web_contents(), url_b); 4998 TestNavigationManager mainframe_delayer(shell()->web_contents(), url_b);
4999 controller.GoForward(); 4999 controller.GoForward();
5000 subframe_delayer.WaitForWillStartRequest(); 5000 EXPECT_TRUE(subframe_delayer.WaitForWillStartRequest());
5001 controller.GoForward(); 5001 controller.GoForward();
5002 mainframe_delayer.WaitForWillStartRequest(); 5002 EXPECT_TRUE(mainframe_delayer.WaitForWillStartRequest());
5003 EXPECT_EQ(2, controller.GetPendingEntryIndex()); 5003 EXPECT_EQ(2, controller.GetPendingEntryIndex());
5004 5004
5005 // Let the subframe commit. 5005 // Let the subframe commit.
5006 subframe_delayer.WaitForNavigationFinished(); 5006 subframe_delayer.WaitForNavigationFinished();
5007 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); 5007 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
5008 EXPECT_EQ(url_a, root->current_url()); 5008 EXPECT_EQ(url_a, root->current_url());
5009 EXPECT_EQ(frame_url_a2, root->child_at(0)->current_url()); 5009 EXPECT_EQ(frame_url_a2, root->child_at(0)->current_url());
5010 5010
5011 // Let the main frame commit. 5011 // Let the main frame commit.
5012 mainframe_delayer.WaitForNavigationFinished(); 5012 mainframe_delayer.WaitForNavigationFinished();
(...skipping 22 matching lines...) Expand all
5035 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, 5035 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
5036 AbortProvisionalLoadRetainsNavigationParams) { 5036 AbortProvisionalLoadRetainsNavigationParams) {
5037 EXPECT_TRUE( 5037 EXPECT_TRUE(
5038 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html"))); 5038 NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html")));
5039 EXPECT_TRUE( 5039 EXPECT_TRUE(
5040 NavigateToURL(shell(), embedded_test_server()->GetURL("/title2.html"))); 5040 NavigateToURL(shell(), embedded_test_server()->GetURL("/title2.html")));
5041 5041
5042 TestNavigationManager delayer(shell()->web_contents(), 5042 TestNavigationManager delayer(shell()->web_contents(),
5043 embedded_test_server()->GetURL("/title3.html")); 5043 embedded_test_server()->GetURL("/title3.html"));
5044 shell()->LoadURL(embedded_test_server()->GetURL("/title3.html")); 5044 shell()->LoadURL(embedded_test_server()->GetURL("/title3.html"));
5045 delayer.WaitForWillStartRequest(); 5045 EXPECT_TRUE(delayer.WaitForWillStartRequest());
5046 5046
5047 NavigationController& controller = shell()->web_contents()->GetController(); 5047 NavigationController& controller = shell()->web_contents()->GetController();
5048 5048
5049 TestNavigationManager back_manager( 5049 TestNavigationManager back_manager(
5050 shell()->web_contents(), embedded_test_server()->GetURL("/title1.html")); 5050 shell()->web_contents(), embedded_test_server()->GetURL("/title1.html"));
5051 controller.GoBack(); 5051 controller.GoBack();
5052 back_manager.WaitForNavigationFinished(); 5052 back_manager.WaitForNavigationFinished();
5053 5053
5054 EXPECT_TRUE(controller.CanGoForward()); 5054 EXPECT_TRUE(controller.CanGoForward());
5055 EXPECT_EQ(0, controller.GetCurrentEntryIndex()); 5055 EXPECT_EQ(0, controller.GetCurrentEntryIndex());
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
5610 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { 5610 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) {
5611 EXPECT_EQ(1U, nav_entry->root_node()->children.size()); 5611 EXPECT_EQ(1U, nav_entry->root_node()->children.size());
5612 EXPECT_EQ(tree_node, nav_entry->root_node()->children[0]); 5612 EXPECT_EQ(tree_node, nav_entry->root_node()->children[0]);
5613 } 5613 }
5614 5614
5615 EXPECT_TRUE(ExecuteScript(root, kRemoveFrameScript)); 5615 EXPECT_TRUE(ExecuteScript(root, kRemoveFrameScript));
5616 EXPECT_EQ(0U, root->child_count()); 5616 EXPECT_EQ(0U, root->child_count());
5617 } 5617 }
5618 5618
5619 } // namespace content 5619 } // namespace content
OLDNEW
« no previous file with comments | « components/page_load_metrics.gypi ('k') | content/browser/frame_host/navigation_handle_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698