| 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 1978 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |