| Index: content/renderer/render_view_browsertest.cc
|
| diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
|
| index 4093458222a8dc65ec3b85bf7fd0545d5ad7a4e2..b159181b1c3aaeda4c997d3dda50fd67ad0cbdec 100644
|
| --- a/content/renderer/render_view_browsertest.cc
|
| +++ b/content/renderer/render_view_browsertest.cc
|
| @@ -2309,6 +2309,108 @@ TEST_F(RenderViewImplTest, NavigationStartOverride) {
|
| EXPECT_LE(late_nav_reported_start, after_navigation);
|
| }
|
|
|
| +TEST_F(RenderViewImplTest, RendererNavigationStartTransmittedToBrowser) {
|
| + base::TimeTicks lower_bound_navigation_start;
|
| + frame()->GetWebFrame()->loadHTMLString(
|
| + "hello world", blink::WebURL(GURL("data:text/html,")));
|
| + ProcessPendingMessages();
|
| + const IPC::Message* frame_navigate_msg =
|
| + render_thread_->sink().GetUniqueMessageMatching(
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params;
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg,
|
| + &host_nav_params);
|
| + base::TimeTicks transmitted_start = base::get<1>(host_nav_params);
|
| + EXPECT_FALSE(transmitted_start.is_null());
|
| + EXPECT_LT(lower_bound_navigation_start, transmitted_start);
|
| +}
|
| +
|
| +TEST_F(RenderViewImplTest, BrowserNavigationStartNotUsedForReload) {
|
| + const char url_string[] = "data:text/html,<div>Page</div>";
|
| + // Navigate once, then reload.
|
| + LoadHTML(url_string);
|
| + ProcessPendingMessages();
|
| + render_thread_->sink().ClearMessages();
|
| +
|
| + CommonNavigationParams common_params;
|
| + common_params.url = GURL(url_string);
|
| + common_params.navigation_type =
|
| + FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL;
|
| + common_params.transition = ui::PAGE_TRANSITION_LINK;
|
| +
|
| + frame()->Navigate(common_params, StartNavigationParams(),
|
| + RequestNavigationParams());
|
| + ProcessPendingMessages();
|
| +
|
| + const IPC::Message* frame_navigate_msg =
|
| + render_thread_->sink().GetUniqueMessageMatching(
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params;
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg,
|
| + &host_nav_params);
|
| + // The true timestamp is later than the browser initiated one.
|
| + EXPECT_GT(base::get<1>(host_nav_params), common_params.navigation_start);
|
| +}
|
| +
|
| +TEST_F(RenderViewImplTest, BrowserNavigationStartNotUsedForHistoryNavigation) {
|
| + LoadHTML("<div id=pagename>Page A</div>");
|
| + LoadHTML("<div id=pagename>Page B</div>");
|
| + PageState back_state =
|
| + HistoryEntryToPageState(view()->history_controller()->GetCurrentEntry());
|
| + LoadHTML("<div id=pagename>Page C</div>");
|
| + PageState forward_state =
|
| + HistoryEntryToPageState(view()->history_controller()->GetCurrentEntry());
|
| + ProcessPendingMessages();
|
| + render_thread_->sink().ClearMessages();
|
| +
|
| + CommonNavigationParams common_params;
|
| + common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
|
| + // Go back.
|
| + GoToOffsetWithParams(-1, back_state, common_params, StartNavigationParams(),
|
| + RequestNavigationParams());
|
| + ProcessPendingMessages();
|
| + const IPC::Message* frame_navigate_msg =
|
| + render_thread_->sink().GetUniqueMessageMatching(
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params;
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg,
|
| + &host_nav_params);
|
| + EXPECT_GT(base::get<1>(host_nav_params), common_params.navigation_start);
|
| + render_thread_->sink().ClearMessages();
|
| +
|
| + // Go forward.
|
| + GoToOffsetWithParams(1, forward_state, common_params,
|
| + StartNavigationParams(),
|
| + RequestNavigationParams());
|
| + ProcessPendingMessages();
|
| + const IPC::Message* frame_navigate_msg2 =
|
| + render_thread_->sink().GetUniqueMessageMatching(
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params2;
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg2,
|
| + &host_nav_params2);
|
| + EXPECT_GT(base::get<1>(host_nav_params2), common_params.navigation_start);
|
| +}
|
| +
|
| +TEST_F(RenderViewImplTest, BrowserNavigationStartSuccessfullyTransmitted) {
|
| + CommonNavigationParams common_params;
|
| + common_params.url = GURL("data:text/html,<div>Page</div>");
|
| + common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
|
| + common_params.transition = ui::PAGE_TRANSITION_TYPED;
|
| +
|
| + frame()->Navigate(common_params, StartNavigationParams(),
|
| + RequestNavigationParams());
|
| + ProcessPendingMessages();
|
| +
|
| + const IPC::Message* frame_navigate_msg =
|
| + render_thread_->sink().GetUniqueMessageMatching(
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params;
|
| + FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg,
|
| + &host_nav_params);
|
| + EXPECT_EQ(base::get<1>(host_nav_params), common_params.navigation_start);
|
| +}
|
| +
|
| TEST_F(RenderViewImplTest, PreferredSizeZoomed) {
|
| LoadHTML("<body style='margin:0;'><div style='display:inline-block; "
|
| "width:400px; height:400px;'/></body>");
|
|
|