| 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 |