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

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

Issue 1427633004: Send navigation_start to the browser in DidStartProvisionalLoad IPC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@navigation_start_renderer
Patch Set: Write GoToOffsetWithParams to use GoToOffset (DRY) Created 5 years, 1 month 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 2291 matching lines...) Expand 10 before | Expand all | Expand 10 after
2302 RequestNavigationParams()); 2302 RequestNavigationParams());
2303 ProcessPendingMessages(); 2303 ProcessPendingMessages();
2304 base::Time after_navigation = 2304 base::Time after_navigation =
2305 base::Time::Now() + base::TimeDelta::FromDays(1); 2305 base::Time::Now() + base::TimeDelta::FromDays(1);
2306 2306
2307 base::Time late_nav_reported_start = 2307 base::Time late_nav_reported_start =
2308 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart()); 2308 base::Time::FromDoubleT(GetMainFrame()->performance().navigationStart());
2309 EXPECT_LE(late_nav_reported_start, after_navigation); 2309 EXPECT_LE(late_nav_reported_start, after_navigation);
2310 } 2310 }
2311 2311
2312 TEST_F(RenderViewImplTest, RendererNavigationStartTransmittedToBrowser) {
2313 base::TimeTicks lower_bound_navigation_start;
2314 frame()->GetWebFrame()->loadHTMLString(
2315 "hello world", blink::WebURL(GURL("data:text/html,")));
2316 ProcessPendingMessages();
2317 const IPC::Message* frame_navigate_msg =
2318 render_thread_->sink().GetUniqueMessageMatching(
2319 FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
2320 FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params;
2321 FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg,
2322 &host_nav_params);
2323 base::TimeTicks transmitted_start = base::get<1>(host_nav_params);
2324 EXPECT_FALSE(transmitted_start.is_null());
2325 EXPECT_LT(lower_bound_navigation_start, transmitted_start);
2326 }
2327
2328 TEST_F(RenderViewImplTest, BrowserNavigationStartNotUsedForReload) {
2329 const char url_string[] = "data:text/html,<div>Page</div>";
2330 // Navigate once, then reload.
2331 LoadHTML(url_string);
2332 ProcessPendingMessages();
2333 render_thread_->sink().ClearMessages();
2334
2335 CommonNavigationParams common_params;
2336 common_params.url = GURL(url_string);
2337 common_params.navigation_type =
2338 FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL;
2339 common_params.transition = ui::PAGE_TRANSITION_LINK;
2340
2341 frame()->Navigate(common_params, StartNavigationParams(),
2342 RequestNavigationParams());
2343 ProcessPendingMessages();
2344
2345 const IPC::Message* frame_navigate_msg =
2346 render_thread_->sink().GetUniqueMessageMatching(
2347 FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
2348 FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params;
2349 FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg,
2350 &host_nav_params);
2351 // The true timestamp is later than the browser initiated one.
2352 EXPECT_GT(base::get<1>(host_nav_params), common_params.navigation_start);
2353 }
2354
2355 TEST_F(RenderViewImplTest, BrowserNavigationStartNotUsedForHistoryNavigation) {
2356 LoadHTML("<div id=pagename>Page A</div>");
2357 LoadHTML("<div id=pagename>Page B</div>");
2358 PageState back_state =
2359 HistoryEntryToPageState(view()->history_controller()->GetCurrentEntry());
2360 LoadHTML("<div id=pagename>Page C</div>");
2361 PageState forward_state =
2362 HistoryEntryToPageState(view()->history_controller()->GetCurrentEntry());
2363 ProcessPendingMessages();
2364 render_thread_->sink().ClearMessages();
2365
2366 CommonNavigationParams common_params;
2367 common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK;
2368 // Go back.
2369 GoToOffsetWithParams(-1, back_state, common_params, StartNavigationParams(),
2370 RequestNavigationParams());
2371 ProcessPendingMessages();
2372 const IPC::Message* frame_navigate_msg =
2373 render_thread_->sink().GetUniqueMessageMatching(
2374 FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
2375 FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params;
2376 FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg,
2377 &host_nav_params);
2378 EXPECT_GT(base::get<1>(host_nav_params), common_params.navigation_start);
2379 render_thread_->sink().ClearMessages();
2380
2381 // Go forward.
2382 GoToOffsetWithParams(1, forward_state, common_params,
2383 StartNavigationParams(),
2384 RequestNavigationParams());
2385 ProcessPendingMessages();
2386 const IPC::Message* frame_navigate_msg2 =
2387 render_thread_->sink().GetUniqueMessageMatching(
2388 FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
2389 FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params2;
2390 FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg2,
2391 &host_nav_params2);
2392 EXPECT_GT(base::get<1>(host_nav_params2), common_params.navigation_start);
2393 }
2394
2395 TEST_F(RenderViewImplTest, BrowserNavigationStartSuccessfullyTransmitted) {
2396 CommonNavigationParams common_params;
2397 common_params.url = GURL("data:text/html,<div>Page</div>");
2398 common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2399 common_params.transition = ui::PAGE_TRANSITION_TYPED;
2400
2401 frame()->Navigate(common_params, StartNavigationParams(),
2402 RequestNavigationParams());
2403 ProcessPendingMessages();
2404
2405 const IPC::Message* frame_navigate_msg =
2406 render_thread_->sink().GetUniqueMessageMatching(
2407 FrameHostMsg_DidStartProvisionalLoadForFrame::ID);
2408 FrameHostMsg_DidStartProvisionalLoadForFrame::Param host_nav_params;
2409 FrameHostMsg_DidStartProvisionalLoadForFrame::Read(frame_navigate_msg,
2410 &host_nav_params);
2411 EXPECT_EQ(base::get<1>(host_nav_params), common_params.navigation_start);
2412 }
2413
2312 TEST_F(RenderViewImplTest, PreferredSizeZoomed) { 2414 TEST_F(RenderViewImplTest, PreferredSizeZoomed) {
2313 LoadHTML("<body style='margin:0;'><div style='display:inline-block; " 2415 LoadHTML("<body style='margin:0;'><div style='display:inline-block; "
2314 "width:400px; height:400px;'/></body>"); 2416 "width:400px; height:400px;'/></body>");
2315 view()->webview()->mainFrame()->setCanHaveScrollbars(false); 2417 view()->webview()->mainFrame()->setCanHaveScrollbars(false);
2316 EnablePreferredSizeMode(); 2418 EnablePreferredSizeMode();
2317 2419
2318 gfx::Size size = GetPreferredSize(); 2420 gfx::Size size = GetPreferredSize();
2319 EXPECT_EQ(gfx::Size(400, 400), size); 2421 EXPECT_EQ(gfx::Size(400, 400), size);
2320 2422
2321 SetZoomLevel(ZoomFactorToZoomLevel(2.0)); 2423 SetZoomLevel(ZoomFactorToZoomLevel(2.0));
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
2379 FROM_HERE, 2481 FROM_HERE,
2380 base::Bind(&DevToolsAgentTest::CloseWhilePaused, base::Unretained(this))); 2482 base::Bind(&DevToolsAgentTest::CloseWhilePaused, base::Unretained(this)));
2381 ExecuteJavaScriptForTests("debugger;"); 2483 ExecuteJavaScriptForTests("debugger;");
2382 2484
2383 // CloseWhilePaused should resume execution and continue here. 2485 // CloseWhilePaused should resume execution and continue here.
2384 EXPECT_FALSE(IsPaused()); 2486 EXPECT_FALSE(IsPaused());
2385 Detach(); 2487 Detach();
2386 } 2488 }
2387 2489
2388 } // namespace content 2490 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698