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

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

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

Powered by Google App Engine
This is Rietveld 408576698