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

Side by Side Diff: content/renderer/render_view_browsertest.cc

Issue 2657323003: Convert HistoryTabHelper to use the new navigation callbacks. (Closed)
Patch Set: nit Created 3 years, 10 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 | « content/renderer/render_frame_impl.cc ('k') | content/test/test_render_frame_host.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 (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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <tuple> 7 #include <tuple>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 1978 matching lines...) Expand 10 before | Expand all | Expand 10 after
1989 1989
1990 // Checks that when a navigation starts in the renderer, |navigation_start| is 1990 // Checks that when a navigation starts in the renderer, |navigation_start| is
1991 // recorded at an appropriate time and is passed in the corresponding message. 1991 // recorded at an appropriate time and is passed in the corresponding message.
1992 TEST_F(RenderViewImplTest, RendererNavigationStartTransmittedToBrowser) { 1992 TEST_F(RenderViewImplTest, RendererNavigationStartTransmittedToBrowser) {
1993 base::TimeTicks lower_bound_navigation_start(base::TimeTicks::Now()); 1993 base::TimeTicks lower_bound_navigation_start(base::TimeTicks::Now());
1994 frame()->GetWebFrame()->loadHTMLString( 1994 frame()->GetWebFrame()->loadHTMLString(
1995 "hello world", blink::WebURL(GURL("data:text/html,"))); 1995 "hello world", blink::WebURL(GURL("data:text/html,")));
1996 1996
1997 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params = 1997 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params =
1998 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); 1998 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>();
1999 base::TimeTicks transmitted_start = std::get<1>(host_nav_params); 1999 base::TimeTicks transmitted_start = std::get<2>(host_nav_params);
2000 EXPECT_FALSE(transmitted_start.is_null()); 2000 EXPECT_FALSE(transmitted_start.is_null());
2001 EXPECT_LE(lower_bound_navigation_start, transmitted_start); 2001 EXPECT_LE(lower_bound_navigation_start, transmitted_start);
2002 } 2002 }
2003 2003
2004 // Checks that a browser-initiated navigation in an initial document that was 2004 // Checks that a browser-initiated navigation in an initial document that was
2005 // not accessed uses browser-side timestamp. 2005 // not accessed uses browser-side timestamp.
2006 // This test assumes that |frame()| contains an unaccessed initial document at 2006 // This test assumes that |frame()| contains an unaccessed initial document at
2007 // start. 2007 // start.
2008 TEST_F(RenderViewImplTest, BrowserNavigationStart) { 2008 TEST_F(RenderViewImplTest, BrowserNavigationStart) {
2009 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1)); 2009 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1));
2010 2010
2011 frame()->Navigate(common_params, StartNavigationParams(), 2011 frame()->Navigate(common_params, StartNavigationParams(),
2012 RequestNavigationParams()); 2012 RequestNavigationParams());
2013 FrameHostMsg_DidStartProvisionalLoad::Param nav_params = 2013 FrameHostMsg_DidStartProvisionalLoad::Param nav_params =
2014 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); 2014 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>();
2015 EXPECT_EQ(common_params.navigation_start, std::get<1>(nav_params)); 2015 EXPECT_EQ(common_params.navigation_start, std::get<2>(nav_params));
2016 } 2016 }
2017 2017
2018 // Sanity check for the Navigation Timing API |navigationStart| override. We 2018 // Sanity check for the Navigation Timing API |navigationStart| override. We
2019 // are asserting only most basic constraints, as TimeTicks (passed as the 2019 // are asserting only most basic constraints, as TimeTicks (passed as the
2020 // override) are not comparable with the wall time (returned by the Blink API). 2020 // override) are not comparable with the wall time (returned by the Blink API).
2021 TEST_F(RenderViewImplTest, BrowserNavigationStartSanitized) { 2021 TEST_F(RenderViewImplTest, BrowserNavigationStartSanitized) {
2022 // Verify that a navigation that claims to have started in the future - 42 2022 // Verify that a navigation that claims to have started in the future - 42
2023 // days from now is *not* reported as one that starts in the future; as we 2023 // days from now is *not* reported as one that starts in the future; as we
2024 // sanitize the override allowing a maximum of ::Now(). 2024 // sanitize the override allowing a maximum of ::Now().
2025 auto late_common_params = MakeCommonNavigationParams(TimeDelta::FromDays(42)); 2025 auto late_common_params = MakeCommonNavigationParams(TimeDelta::FromDays(42));
(...skipping 19 matching lines...) Expand all
2045 // Trigger a didAccessInitialDocument notification. 2045 // Trigger a didAccessInitialDocument notification.
2046 ExecuteJavaScriptForTests("document.title = 'Hi!';"); 2046 ExecuteJavaScriptForTests("document.title = 'Hi!';");
2047 2047
2048 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1)); 2048 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1));
2049 frame()->Navigate(common_params, StartNavigationParams(), 2049 frame()->Navigate(common_params, StartNavigationParams(),
2050 RequestNavigationParams()); 2050 RequestNavigationParams());
2051 2051
2052 FrameHostMsg_DidStartProvisionalLoad::Param nav_params = 2052 FrameHostMsg_DidStartProvisionalLoad::Param nav_params =
2053 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); 2053 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>();
2054 if (!IsBrowserSideNavigationEnabled()) 2054 if (!IsBrowserSideNavigationEnabled())
2055 EXPECT_GT(std::get<1>(nav_params), common_params.navigation_start); 2055 EXPECT_GT(std::get<2>(nav_params), common_params.navigation_start);
2056 else 2056 else
2057 EXPECT_EQ(common_params.navigation_start, std::get<1>(nav_params)); 2057 EXPECT_EQ(common_params.navigation_start, std::get<2>(nav_params));
2058 } 2058 }
2059 2059
2060 TEST_F(RenderViewImplTest, NavigationStartForReload) { 2060 TEST_F(RenderViewImplTest, NavigationStartForReload) {
2061 const char url_string[] = "data:text/html,<div>Page</div>"; 2061 const char url_string[] = "data:text/html,<div>Page</div>";
2062 // Navigate once, then reload. 2062 // Navigate once, then reload.
2063 LoadHTML(url_string); 2063 LoadHTML(url_string);
2064 ProcessPendingMessages(); 2064 ProcessPendingMessages();
2065 render_thread_->sink().ClearMessages(); 2065 render_thread_->sink().ClearMessages();
2066 2066
2067 CommonNavigationParams common_params; 2067 CommonNavigationParams common_params;
2068 common_params.url = GURL(url_string); 2068 common_params.url = GURL(url_string);
2069 common_params.navigation_type = 2069 common_params.navigation_type =
2070 FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL; 2070 FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL;
2071 common_params.transition = ui::PAGE_TRANSITION_RELOAD; 2071 common_params.transition = ui::PAGE_TRANSITION_RELOAD;
2072 2072
2073 // The browser navigation_start should not be used because beforeunload will 2073 // The browser navigation_start should not be used because beforeunload will
2074 // be fired during Navigate. 2074 // be fired during Navigate.
2075 frame()->Navigate(common_params, StartNavigationParams(), 2075 frame()->Navigate(common_params, StartNavigationParams(),
2076 RequestNavigationParams()); 2076 RequestNavigationParams());
2077 2077
2078 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params = 2078 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params =
2079 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); 2079 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>();
2080 2080
2081 if (!IsBrowserSideNavigationEnabled()) { 2081 if (!IsBrowserSideNavigationEnabled()) {
2082 // The browser navigation_start should not be used because beforeunload was 2082 // The browser navigation_start should not be used because beforeunload was
2083 // fired during Navigate. 2083 // fired during Navigate.
2084 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params), 2084 EXPECT_PRED2(TimeTicksGT, std::get<2>(host_nav_params),
2085 common_params.navigation_start); 2085 common_params.navigation_start);
2086 } else { 2086 } else {
2087 // PlzNavigate: the browser navigation_start is always used. 2087 // PlzNavigate: the browser navigation_start is always used.
2088 EXPECT_EQ(common_params.navigation_start, std::get<1>(host_nav_params)); 2088 EXPECT_EQ(common_params.navigation_start, std::get<2>(host_nav_params));
2089 } 2089 }
2090 } 2090 }
2091 2091
2092 TEST_F(RenderViewImplTest, NavigationStartForSameProcessHistoryNavigation) { 2092 TEST_F(RenderViewImplTest, NavigationStartForSameProcessHistoryNavigation) {
2093 LoadHTML("<div id=pagename>Page A</div>"); 2093 LoadHTML("<div id=pagename>Page A</div>");
2094 LoadHTML("<div id=pagename>Page B</div>"); 2094 LoadHTML("<div id=pagename>Page B</div>");
2095 PageState back_state = GetCurrentPageState(); 2095 PageState back_state = GetCurrentPageState();
2096 LoadHTML("<div id=pagename>Page C</div>"); 2096 LoadHTML("<div id=pagename>Page C</div>");
2097 PageState forward_state = GetCurrentPageState(); 2097 PageState forward_state = GetCurrentPageState();
2098 ProcessPendingMessages(); 2098 ProcessPendingMessages();
2099 render_thread_->sink().ClearMessages(); 2099 render_thread_->sink().ClearMessages();
2100 2100
2101 // Go back. 2101 // Go back.
2102 CommonNavigationParams common_params_back; 2102 CommonNavigationParams common_params_back;
2103 common_params_back.url = 2103 common_params_back.url =
2104 GURL("data:text/html;charset=utf-8,<div id=pagename>Page B</div>"); 2104 GURL("data:text/html;charset=utf-8,<div id=pagename>Page B</div>");
2105 common_params_back.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 2105 common_params_back.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
2106 GoToOffsetWithParams(-1, back_state, common_params_back, 2106 GoToOffsetWithParams(-1, back_state, common_params_back,
2107 StartNavigationParams(), RequestNavigationParams()); 2107 StartNavigationParams(), RequestNavigationParams());
2108 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params = 2108 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params =
2109 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); 2109 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>();
2110 if (!IsBrowserSideNavigationEnabled()) { 2110 if (!IsBrowserSideNavigationEnabled()) {
2111 // The browser navigation_start should not be used because beforeunload was 2111 // The browser navigation_start should not be used because beforeunload was
2112 // fired during GoToOffsetWithParams. 2112 // fired during GoToOffsetWithParams.
2113 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params), 2113 EXPECT_PRED2(TimeTicksGT, std::get<2>(host_nav_params),
2114 common_params_back.navigation_start); 2114 common_params_back.navigation_start);
2115 } else { 2115 } else {
2116 // PlzNavigate: the browser navigation_start is always used. 2116 // PlzNavigate: the browser navigation_start is always used.
2117 EXPECT_EQ(common_params_back.navigation_start, 2117 EXPECT_EQ(common_params_back.navigation_start,
2118 std::get<1>(host_nav_params)); 2118 std::get<2>(host_nav_params));
2119 } 2119 }
2120 render_thread_->sink().ClearMessages(); 2120 render_thread_->sink().ClearMessages();
2121 2121
2122 // Go forward. 2122 // Go forward.
2123 CommonNavigationParams common_params_forward; 2123 CommonNavigationParams common_params_forward;
2124 common_params_forward.url = 2124 common_params_forward.url =
2125 GURL("data:text/html;charset=utf-8,<div id=pagename>Page C</div>"); 2125 GURL("data:text/html;charset=utf-8,<div id=pagename>Page C</div>");
2126 common_params_forward.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 2126 common_params_forward.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
2127 GoToOffsetWithParams(1, forward_state, common_params_forward, 2127 GoToOffsetWithParams(1, forward_state, common_params_forward,
2128 StartNavigationParams(), RequestNavigationParams()); 2128 StartNavigationParams(), RequestNavigationParams());
2129 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params2 = 2129 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params2 =
2130 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); 2130 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>();
2131 if (!IsBrowserSideNavigationEnabled()) { 2131 if (!IsBrowserSideNavigationEnabled()) {
2132 EXPECT_PRED2(TimeTicksGT, std::get<1>(host_nav_params2), 2132 EXPECT_PRED2(TimeTicksGT, std::get<2>(host_nav_params2),
2133 common_params_forward.navigation_start); 2133 common_params_forward.navigation_start);
2134 } else { 2134 } else {
2135 EXPECT_EQ(common_params_forward.navigation_start, 2135 EXPECT_EQ(common_params_forward.navigation_start,
2136 std::get<1>(host_nav_params2)); 2136 std::get<2>(host_nav_params2));
2137 } 2137 }
2138 } 2138 }
2139 2139
2140 TEST_F(RenderViewImplTest, NavigationStartForCrossProcessHistoryNavigation) { 2140 TEST_F(RenderViewImplTest, NavigationStartForCrossProcessHistoryNavigation) {
2141 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1)); 2141 auto common_params = MakeCommonNavigationParams(-TimeDelta::FromSeconds(1));
2142 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; 2142 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
2143 2143
2144 RequestNavigationParams request_params; 2144 RequestNavigationParams request_params;
2145 request_params.page_state = 2145 request_params.page_state =
2146 PageState::CreateForTesting(common_params.url, false, nullptr, nullptr); 2146 PageState::CreateForTesting(common_params.url, false, nullptr, nullptr);
2147 request_params.nav_entry_id = 42; 2147 request_params.nav_entry_id = 42;
2148 request_params.pending_history_list_offset = 1; 2148 request_params.pending_history_list_offset = 1;
2149 request_params.current_history_list_offset = 0; 2149 request_params.current_history_list_offset = 0;
2150 request_params.current_history_list_length = 1; 2150 request_params.current_history_list_length = 1;
2151 frame()->Navigate(common_params, StartNavigationParams(), request_params); 2151 frame()->Navigate(common_params, StartNavigationParams(), request_params);
2152 2152
2153 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params = 2153 FrameHostMsg_DidStartProvisionalLoad::Param host_nav_params =
2154 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>(); 2154 ProcessAndReadIPC<FrameHostMsg_DidStartProvisionalLoad>();
2155 EXPECT_EQ(std::get<1>(host_nav_params), common_params.navigation_start); 2155 EXPECT_EQ(std::get<2>(host_nav_params), common_params.navigation_start);
2156 } 2156 }
2157 2157
2158 TEST_F(RenderViewImplTest, PreferredSizeZoomed) { 2158 TEST_F(RenderViewImplTest, PreferredSizeZoomed) {
2159 LoadHTML("<body style='margin:0;'><div style='display:inline-block; " 2159 LoadHTML("<body style='margin:0;'><div style='display:inline-block; "
2160 "width:400px; height:400px;'/></body>"); 2160 "width:400px; height:400px;'/></body>");
2161 view()->webview()->mainFrame()->setCanHaveScrollbars(false); 2161 view()->webview()->mainFrame()->setCanHaveScrollbars(false);
2162 EnablePreferredSizeMode(); 2162 EnablePreferredSizeMode();
2163 2163
2164 gfx::Size size = GetPreferredSize(); 2164 gfx::Size size = GetPreferredSize();
2165 EXPECT_EQ(gfx::Size(400, 400), size); 2165 EXPECT_EQ(gfx::Size(400, 400), size);
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
2555 ExpectPauseAndResume(3); 2555 ExpectPauseAndResume(3);
2556 blink::WebScriptSource source2( 2556 blink::WebScriptSource source2(
2557 WebString::fromUTF8("function func2() { func1(); }; func2();")); 2557 WebString::fromUTF8("function func2() { func1(); }; func2();"));
2558 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1); 2558 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1);
2559 2559
2560 EXPECT_FALSE(IsPaused()); 2560 EXPECT_FALSE(IsPaused());
2561 Detach(); 2561 Detach();
2562 } 2562 }
2563 2563
2564 } // namespace content 2564 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.cc ('k') | content/test/test_render_frame_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698