| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |