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

Side by Side Diff: content/browser/frame_host/navigation_controller_impl_unittest.cc

Issue 1800123002: PlzNavigate: fix several failing NavigationControllerTests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/browser/frame_host/navigation_controller_impl.h" 5 #include "content/browser/frame_host/navigation_controller_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 2095 matching lines...) Expand 10 before | Expand all | Expand 10 after
2106 2106
2107 // Prereq: add a subframe with an initial auto-subframe navigation. 2107 // Prereq: add a subframe with an initial auto-subframe navigation.
2108 main_test_rfh()->OnCreateChildFrame( 2108 main_test_rfh()->OnCreateChildFrame(
2109 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, 2109 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
2110 std::string(), "uniqueName0", blink::WebSandboxFlags::None, 2110 std::string(), "uniqueName0", blink::WebSandboxFlags::None,
2111 blink::WebFrameOwnerProperties()); 2111 blink::WebFrameOwnerProperties());
2112 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( 2112 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
2113 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); 2113 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
2114 const GURL subframe_url("http://foo1/subframe"); 2114 const GURL subframe_url("http://foo1/subframe");
2115 { 2115 {
2116 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false);
2116 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2117 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2117 params.page_id = 1; 2118 params.page_id = 1;
2118 params.nav_entry_id = 0; 2119 params.nav_entry_id = 0;
2119 params.did_create_new_entry = false; 2120 params.did_create_new_entry = false;
2120 params.url = subframe_url; 2121 params.url = subframe_url;
2121 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2122 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2122 params.should_update_history = false; 2123 params.should_update_history = false;
2123 params.gesture = NavigationGestureUser; 2124 params.gesture = NavigationGestureUser;
2124 params.is_post = false; 2125 params.is_post = false;
2125 params.page_state = PageState::CreateFromURL(subframe_url); 2126 params.page_state = PageState::CreateFromURL(subframe_url);
2126 2127
2127 // Navigating should do nothing. 2128 // Navigating should do nothing.
2128 subframe->PrepareForCommit(); 2129 subframe->PrepareForCommit();
2129 subframe->SendNavigateWithParams(&params); 2130 subframe->SendNavigateWithParams(&params);
2130 EXPECT_EQ(0U, notifications.size()); 2131 EXPECT_EQ(0U, notifications.size());
2131 } 2132 }
2132 2133
2133 // Now do a new navigation in the frame. 2134 // Now do a new navigation in the frame.
2134 const GURL url2("http://foo2"); 2135 const GURL url2("http://foo2");
2136 subframe->SendRendererInitiatedNavigationRequest(url2, true);
2135 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2137 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2136 params.page_id = 2; 2138 params.page_id = 2;
2137 params.nav_entry_id = 0; 2139 params.nav_entry_id = 0;
2138 params.did_create_new_entry = true; 2140 params.did_create_new_entry = true;
2139 params.url = url2; 2141 params.url = url2;
2140 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; 2142 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME;
2141 params.should_update_history = false; 2143 params.should_update_history = false;
2142 params.gesture = NavigationGestureUser; 2144 params.gesture = NavigationGestureUser;
2143 params.is_post = false; 2145 params.is_post = false;
2144 params.page_state = PageState::CreateFromURL(url2); 2146 params.page_state = PageState::CreateFromURL(url2);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2188 2190
2189 // Add a subframe and navigate it. 2191 // Add a subframe and navigate it.
2190 main_test_rfh()->OnCreateChildFrame( 2192 main_test_rfh()->OnCreateChildFrame(
2191 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, 2193 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
2192 std::string(), "uniqueName0", blink::WebSandboxFlags::None, 2194 std::string(), "uniqueName0", blink::WebSandboxFlags::None,
2193 blink::WebFrameOwnerProperties()); 2195 blink::WebFrameOwnerProperties());
2194 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( 2196 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
2195 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); 2197 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
2196 const GURL url2("http://foo/2"); 2198 const GURL url2("http://foo/2");
2197 { 2199 {
2200 subframe->SendRendererInitiatedNavigationRequest(url2, false);
2198 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2201 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2199 params.page_id = 1; 2202 params.page_id = 1;
2200 params.nav_entry_id = 0; 2203 params.nav_entry_id = 0;
2201 params.did_create_new_entry = false; 2204 params.did_create_new_entry = false;
2202 params.url = url2; 2205 params.url = url2;
2203 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2206 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2204 params.should_update_history = false; 2207 params.should_update_history = false;
2205 params.gesture = NavigationGestureUser; 2208 params.gesture = NavigationGestureUser;
2206 params.is_post = false; 2209 params.is_post = false;
2207 params.page_state = PageState::CreateFromURL(url2); 2210 params.page_state = PageState::CreateFromURL(url2);
(...skipping 26 matching lines...) Expand all
2234 2237
2235 // Add a second subframe and navigate. 2238 // Add a second subframe and navigate.
2236 main_test_rfh()->OnCreateChildFrame( 2239 main_test_rfh()->OnCreateChildFrame(
2237 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, 2240 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
2238 std::string(), "uniqueName1", blink::WebSandboxFlags::None, 2241 std::string(), "uniqueName1", blink::WebSandboxFlags::None,
2239 blink::WebFrameOwnerProperties()); 2242 blink::WebFrameOwnerProperties());
2240 TestRenderFrameHost* subframe2 = static_cast<TestRenderFrameHost*>( 2243 TestRenderFrameHost* subframe2 = static_cast<TestRenderFrameHost*>(
2241 contents()->GetFrameTree()->root()->child_at(1)->current_frame_host()); 2244 contents()->GetFrameTree()->root()->child_at(1)->current_frame_host());
2242 const GURL url3("http://foo/3"); 2245 const GURL url3("http://foo/3");
2243 { 2246 {
2247 subframe2->SendRendererInitiatedNavigationRequest(url3, false);
2244 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2248 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2245 params.page_id = 1; 2249 params.page_id = 1;
2246 params.nav_entry_id = 0; 2250 params.nav_entry_id = 0;
2247 params.did_create_new_entry = false; 2251 params.did_create_new_entry = false;
2248 params.url = url3; 2252 params.url = url3;
2249 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2253 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2250 params.should_update_history = false; 2254 params.should_update_history = false;
2251 params.gesture = NavigationGestureUser; 2255 params.gesture = NavigationGestureUser;
2252 params.is_post = false; 2256 params.is_post = false;
2253 params.page_state = PageState::CreateFromURL(url3); 2257 params.page_state = PageState::CreateFromURL(url3);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2285 blink::WebFrameOwnerProperties()); 2289 blink::WebFrameOwnerProperties());
2286 TestRenderFrameHost* subframe3 = 2290 TestRenderFrameHost* subframe3 =
2287 static_cast<TestRenderFrameHost*>(contents() 2291 static_cast<TestRenderFrameHost*>(contents()
2288 ->GetFrameTree() 2292 ->GetFrameTree()
2289 ->root() 2293 ->root()
2290 ->child_at(0) 2294 ->child_at(0)
2291 ->child_at(0) 2295 ->child_at(0)
2292 ->current_frame_host()); 2296 ->current_frame_host());
2293 const GURL url4("http://foo/4"); 2297 const GURL url4("http://foo/4");
2294 { 2298 {
2299 subframe3->SendRendererInitiatedNavigationRequest(url4, false);
2295 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2300 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2296 params.page_id = 1; 2301 params.page_id = 1;
2297 params.nav_entry_id = 0; 2302 params.nav_entry_id = 0;
2298 params.did_create_new_entry = false; 2303 params.did_create_new_entry = false;
2299 params.url = url4; 2304 params.url = url4;
2300 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2305 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2301 params.should_update_history = false; 2306 params.should_update_history = false;
2302 params.gesture = NavigationGestureUser; 2307 params.gesture = NavigationGestureUser;
2303 params.is_post = false; 2308 params.is_post = false;
2304 params.page_state = PageState::CreateFromURL(url4); 2309 params.page_state = PageState::CreateFromURL(url4);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2346 2351
2347 // Prereq: add a subframe with an initial auto-subframe navigation. 2352 // Prereq: add a subframe with an initial auto-subframe navigation.
2348 main_test_rfh()->OnCreateChildFrame( 2353 main_test_rfh()->OnCreateChildFrame(
2349 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, 2354 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
2350 std::string(), "uniqueName0", blink::WebSandboxFlags::None, 2355 std::string(), "uniqueName0", blink::WebSandboxFlags::None,
2351 blink::WebFrameOwnerProperties()); 2356 blink::WebFrameOwnerProperties());
2352 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( 2357 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
2353 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); 2358 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
2354 const GURL subframe_url("http://foo1/subframe"); 2359 const GURL subframe_url("http://foo1/subframe");
2355 { 2360 {
2361 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false);
2356 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2362 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2357 params.page_id = 1; 2363 params.page_id = 1;
2358 params.nav_entry_id = 0; 2364 params.nav_entry_id = 0;
2359 params.did_create_new_entry = false; 2365 params.did_create_new_entry = false;
2360 params.url = subframe_url; 2366 params.url = subframe_url;
2361 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2367 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2362 params.should_update_history = false; 2368 params.should_update_history = false;
2363 params.gesture = NavigationGestureUser; 2369 params.gesture = NavigationGestureUser;
2364 params.is_post = false; 2370 params.is_post = false;
2365 params.page_state = PageState::CreateFromURL(subframe_url); 2371 params.page_state = PageState::CreateFromURL(subframe_url);
(...skipping 11 matching lines...) Expand all
2377 params.nav_entry_id = 0; 2383 params.nav_entry_id = 0;
2378 params.did_create_new_entry = true; 2384 params.did_create_new_entry = true;
2379 params.url = url2; 2385 params.url = url2;
2380 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; 2386 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME;
2381 params.should_update_history = false; 2387 params.should_update_history = false;
2382 params.gesture = NavigationGestureUser; 2388 params.gesture = NavigationGestureUser;
2383 params.is_post = false; 2389 params.is_post = false;
2384 params.page_state = PageState::CreateFromURL(url2); 2390 params.page_state = PageState::CreateFromURL(url2);
2385 2391
2386 // This should generate a new entry. 2392 // This should generate a new entry.
2393 subframe->SendRendererInitiatedNavigationRequest(url2, false);
Charlie Reis 2016/03/16 17:08:41 Why are some of these before the params declaratio
clamy 2016/03/17 13:27:17 Done.
2387 subframe->PrepareForCommit(); 2394 subframe->PrepareForCommit();
2388 subframe->SendNavigateWithParams(&params); 2395 subframe->SendNavigateWithParams(&params);
2389 NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry(); 2396 NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry();
2390 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2397 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2391 navigation_entry_committed_counter_ = 0; 2398 navigation_entry_committed_counter_ = 0;
2392 EXPECT_EQ(2, controller.GetEntryCount()); 2399 EXPECT_EQ(2, controller.GetEntryCount());
2393 2400
2394 // Verify subframe entries if they're enabled (e.g. in --site-per-process). 2401 // Verify subframe entries if they're enabled (e.g. in --site-per-process).
2395 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { 2402 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) {
2396 // The entry should have a subframe FrameNavigationEntry. 2403 // The entry should have a subframe FrameNavigationEntry.
2397 ASSERT_EQ(1U, entry2->root_node()->children.size()); 2404 ASSERT_EQ(1U, entry2->root_node()->children.size());
2398 EXPECT_EQ(url2, entry2->root_node()->children[0]->frame_entry->url()); 2405 EXPECT_EQ(url2, entry2->root_node()->children[0]->frame_entry->url());
2399 } else { 2406 } else {
2400 // There are no subframe FrameNavigationEntries by default. 2407 // There are no subframe FrameNavigationEntries by default.
2401 EXPECT_EQ(0U, entry2->root_node()->children.size()); 2408 EXPECT_EQ(0U, entry2->root_node()->children.size());
2402 } 2409 }
2403 2410
2404 // Second manual subframe navigation should also make a new entry. 2411 // Second manual subframe navigation should also make a new entry.
2405 const GURL url3("http://foo3"); 2412 const GURL url3("http://foo3");
2406 params.page_id = 3; 2413 params.page_id = 3;
2407 params.nav_entry_id = 0; 2414 params.nav_entry_id = 0;
2408 params.did_create_new_entry = true; 2415 params.did_create_new_entry = true;
2409 params.url = url3; 2416 params.url = url3;
2410 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; 2417 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME;
2411 params.page_state = PageState::CreateFromURL(url3); 2418 params.page_state = PageState::CreateFromURL(url3);
2419 subframe->SendRendererInitiatedNavigationRequest(url3, false);
2412 subframe->PrepareForCommit(); 2420 subframe->PrepareForCommit();
2413 subframe->SendNavigateWithParams(&params); 2421 subframe->SendNavigateWithParams(&params);
2414 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2422 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2415 navigation_entry_committed_counter_ = 0; 2423 navigation_entry_committed_counter_ = 0;
2416 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry(); 2424 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry();
2417 EXPECT_EQ(3, controller.GetEntryCount()); 2425 EXPECT_EQ(3, controller.GetEntryCount());
2418 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); 2426 EXPECT_EQ(2, controller.GetCurrentEntryIndex());
2419 2427
2420 // Verify subframe entries if they're enabled (e.g. in --site-per-process). 2428 // Verify subframe entries if they're enabled (e.g. in --site-per-process).
2421 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { 2429 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
2496 RegisterForAllNavNotifications(&notifications, &controller); 2504 RegisterForAllNavNotifications(&notifications, &controller);
2497 2505
2498 // Main page. 2506 // Main page.
2499 const GURL url1("http://foo"); 2507 const GURL url1("http://foo");
2500 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url1); 2508 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url1);
2501 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2509 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2502 navigation_entry_committed_counter_ = 0; 2510 navigation_entry_committed_counter_ = 0;
2503 2511
2504 // Ensure main page navigation to same url respects the was_within_same_page 2512 // Ensure main page navigation to same url respects the was_within_same_page
2505 // hint provided in the params. 2513 // hint provided in the params.
2514 main_test_rfh()->SendRendererInitiatedNavigationRequest(url1, false);
2506 FrameHostMsg_DidCommitProvisionalLoad_Params self_params; 2515 FrameHostMsg_DidCommitProvisionalLoad_Params self_params;
2507 self_params.page_id = 0; 2516 self_params.page_id = 0;
2508 self_params.nav_entry_id = 0; 2517 self_params.nav_entry_id = 0;
2509 self_params.did_create_new_entry = false; 2518 self_params.did_create_new_entry = false;
2510 self_params.url = url1; 2519 self_params.url = url1;
2511 self_params.transition = ui::PAGE_TRANSITION_LINK; 2520 self_params.transition = ui::PAGE_TRANSITION_LINK;
2512 self_params.should_update_history = false; 2521 self_params.should_update_history = false;
2513 self_params.gesture = NavigationGestureUser; 2522 self_params.gesture = NavigationGestureUser;
2514 self_params.is_post = false; 2523 self_params.is_post = false;
2515 self_params.page_state = PageState::CreateFromURL(url1); 2524 self_params.page_state = PageState::CreateFromURL(url1);
2516 self_params.was_within_same_page = true; 2525 self_params.was_within_same_page = true;
2517 2526
2518 LoadCommittedDetailsObserver observer(contents()); 2527 LoadCommittedDetailsObserver observer(contents());
2519 main_test_rfh()->PrepareForCommit(); 2528 main_test_rfh()->PrepareForCommit();
2520 main_test_rfh()->SendNavigateWithParams(&self_params); 2529 main_test_rfh()->SendNavigateWithParams(&self_params);
2521 NavigationEntry* entry1 = controller.GetLastCommittedEntry(); 2530 NavigationEntry* entry1 = controller.GetLastCommittedEntry();
2522 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2531 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2523 navigation_entry_committed_counter_ = 0; 2532 navigation_entry_committed_counter_ = 0;
2524 EXPECT_TRUE(observer.details().is_in_page); 2533 EXPECT_TRUE(observer.details().is_in_page);
2525 EXPECT_TRUE(observer.details().did_replace_entry); 2534 EXPECT_TRUE(observer.details().did_replace_entry);
2526 EXPECT_EQ(1, controller.GetEntryCount()); 2535 EXPECT_EQ(1, controller.GetEntryCount());
2527 2536
2528 // Fragment navigation to a new page_id. 2537 // Fragment navigation to a new page_id.
2529 const GURL url2("http://foo#a"); 2538 const GURL url2("http://foo#a");
2539 main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false);
2530 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2540 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2531 params.page_id = 1; 2541 params.page_id = 1;
2532 params.nav_entry_id = 0; 2542 params.nav_entry_id = 0;
2533 params.did_create_new_entry = true; 2543 params.did_create_new_entry = true;
2534 params.url = url2; 2544 params.url = url2;
2535 params.transition = ui::PAGE_TRANSITION_LINK; 2545 params.transition = ui::PAGE_TRANSITION_LINK;
2536 params.should_update_history = false; 2546 params.should_update_history = false;
2537 params.gesture = NavigationGestureUser; 2547 params.gesture = NavigationGestureUser;
2538 params.is_post = false; 2548 params.is_post = false;
2539 params.page_state = PageState::CreateFromURL(url2); 2549 params.page_state = PageState::CreateFromURL(url2);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2590 main_test_rfh()->PrepareForCommit(); 2600 main_test_rfh()->PrepareForCommit();
2591 main_test_rfh()->SendNavigateWithParams(&back_params); 2601 main_test_rfh()->SendNavigateWithParams(&back_params);
2592 controller.GoForward(); 2602 controller.GoForward();
2593 main_test_rfh()->PrepareForCommit(); 2603 main_test_rfh()->PrepareForCommit();
2594 main_test_rfh()->SendNavigateWithParams(&forward_params); 2604 main_test_rfh()->SendNavigateWithParams(&forward_params);
2595 EXPECT_EQ(forward_params.url, 2605 EXPECT_EQ(forward_params.url,
2596 controller.GetVisibleEntry()->GetURL()); 2606 controller.GetVisibleEntry()->GetURL());
2597 2607
2598 // Finally, navigate to an unrelated URL to make sure in_page is not sticky. 2608 // Finally, navigate to an unrelated URL to make sure in_page is not sticky.
2599 const GURL url3("http://bar"); 2609 const GURL url3("http://bar");
2610 main_test_rfh()->SendRendererInitiatedNavigationRequest(url3, false);
2600 params.page_id = 2; 2611 params.page_id = 2;
2601 params.nav_entry_id = 0; 2612 params.nav_entry_id = 0;
2602 params.did_create_new_entry = true; 2613 params.did_create_new_entry = true;
2603 params.url = url3; 2614 params.url = url3;
2604 navigation_entry_committed_counter_ = 0; 2615 navigation_entry_committed_counter_ = 0;
2605 main_test_rfh()->PrepareForCommit(); 2616 main_test_rfh()->PrepareForCommit();
2606 main_test_rfh()->SendNavigateWithParams(&params); 2617 main_test_rfh()->SendNavigateWithParams(&params);
2607 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2618 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2608 navigation_entry_committed_counter_ = 0; 2619 navigation_entry_committed_counter_ = 0;
2609 EXPECT_FALSE(observer.details().is_in_page); 2620 EXPECT_FALSE(observer.details().is_in_page);
2610 EXPECT_EQ(3, controller.GetEntryCount()); 2621 EXPECT_EQ(3, controller.GetEntryCount());
2611 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); 2622 EXPECT_EQ(2, controller.GetCurrentEntryIndex());
2612 } 2623 }
2613 2624
2614 TEST_F(NavigationControllerTest, InPage_Replace) { 2625 TEST_F(NavigationControllerTest, InPage_Replace) {
2615 NavigationControllerImpl& controller = controller_impl(); 2626 NavigationControllerImpl& controller = controller_impl();
2616 TestNotificationTracker notifications; 2627 TestNotificationTracker notifications;
2617 RegisterForAllNavNotifications(&notifications, &controller); 2628 RegisterForAllNavNotifications(&notifications, &controller);
2618 2629
2619 // Main page. 2630 // Main page.
2620 const GURL url1("http://foo"); 2631 const GURL url1("http://foo");
2621 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url1); 2632 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url1);
2622 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2633 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2623 navigation_entry_committed_counter_ = 0; 2634 navigation_entry_committed_counter_ = 0;
2624 2635
2625 // First navigation. 2636 // First navigation.
2626 const GURL url2("http://foo#a"); 2637 const GURL url2("http://foo#a");
2638 main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false);
2627 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2639 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2628 params.page_id = 0; // Same page_id 2640 params.page_id = 0; // Same page_id
2629 params.nav_entry_id = 0; 2641 params.nav_entry_id = 0;
2630 params.did_create_new_entry = false; 2642 params.did_create_new_entry = false;
2631 params.url = url2; 2643 params.url = url2;
2632 params.transition = ui::PAGE_TRANSITION_LINK; 2644 params.transition = ui::PAGE_TRANSITION_LINK;
2633 params.should_update_history = false; 2645 params.should_update_history = false;
2634 params.gesture = NavigationGestureUser; 2646 params.gesture = NavigationGestureUser;
2635 params.is_post = false; 2647 params.is_post = false;
2636 params.page_state = PageState::CreateFromURL(url2); 2648 params.page_state = PageState::CreateFromURL(url2);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2670 { 2682 {
2671 const GURL url("http://foo2/"); 2683 const GURL url("http://foo2/");
2672 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url); 2684 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url);
2673 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2685 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2674 navigation_entry_committed_counter_ = 0; 2686 navigation_entry_committed_counter_ = 0;
2675 } 2687 }
2676 2688
2677 // Navigate within the page. 2689 // Navigate within the page.
2678 { 2690 {
2679 const GURL url("http://foo2/#a"); 2691 const GURL url("http://foo2/#a");
2692 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false);
2680 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2693 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2681 params.page_id = 1; // Same page_id 2694 params.page_id = 1; // Same page_id
2682 params.nav_entry_id = 0; 2695 params.nav_entry_id = 0;
2683 params.did_create_new_entry = false; 2696 params.did_create_new_entry = false;
2684 params.url = url; 2697 params.url = url;
2685 params.transition = ui::PAGE_TRANSITION_LINK; 2698 params.transition = ui::PAGE_TRANSITION_LINK;
2686 params.redirects.push_back(url); 2699 params.redirects.push_back(url);
2687 params.should_update_history = true; 2700 params.should_update_history = true;
2688 params.gesture = NavigationGestureUnknown; 2701 params.gesture = NavigationGestureUnknown;
2689 params.is_post = false; 2702 params.is_post = false;
2690 params.page_state = PageState::CreateFromURL(url); 2703 params.page_state = PageState::CreateFromURL(url);
2691 params.was_within_same_page = true; 2704 params.was_within_same_page = true;
2692 2705
2693 // This should NOT generate a new entry, nor prune the list. 2706 // This should NOT generate a new entry, nor prune the list.
2694 LoadCommittedDetailsObserver observer(contents()); 2707 LoadCommittedDetailsObserver observer(contents());
2695 main_test_rfh()->PrepareForCommit(); 2708 main_test_rfh()->PrepareForCommit();
2696 main_test_rfh()->SendNavigateWithParams(&params); 2709 main_test_rfh()->SendNavigateWithParams(&params);
2697 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2710 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2698 navigation_entry_committed_counter_ = 0; 2711 navigation_entry_committed_counter_ = 0;
2699 EXPECT_TRUE(observer.details().is_in_page); 2712 EXPECT_TRUE(observer.details().is_in_page);
2700 EXPECT_TRUE(observer.details().did_replace_entry); 2713 EXPECT_TRUE(observer.details().did_replace_entry);
2701 EXPECT_EQ(2, controller.GetEntryCount()); 2714 EXPECT_EQ(2, controller.GetEntryCount());
2702 } 2715 }
2703 2716
2704 // Perform a client redirect to a new page. 2717 // Perform a client redirect to a new page.
2705 { 2718 {
2706 const GURL url("http://foo3/"); 2719 const GURL url("http://foo3/");
2720 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false);
2707 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2721 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2708 params.page_id = 2; // New page_id 2722 params.page_id = 2; // New page_id
2709 params.nav_entry_id = 0; 2723 params.nav_entry_id = 0;
2710 params.did_create_new_entry = true; 2724 params.did_create_new_entry = true;
2711 params.url = url; 2725 params.url = url;
2712 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT; 2726 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT;
2713 params.redirects.push_back(GURL("http://foo2/#a")); 2727 params.redirects.push_back(GURL("http://foo2/#a"));
2714 params.redirects.push_back(url); 2728 params.redirects.push_back(url);
2715 params.should_update_history = true; 2729 params.should_update_history = true;
2716 params.gesture = NavigationGestureUnknown; 2730 params.gesture = NavigationGestureUnknown;
(...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after
3789 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); 3803 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
3790 3804
3791 // Add and navigate a subframe that would normally count as in-page. 3805 // Add and navigate a subframe that would normally count as in-page.
3792 main_test_rfh()->OnCreateChildFrame( 3806 main_test_rfh()->OnCreateChildFrame(
3793 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, 3807 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
3794 std::string(), "uniqueName0", blink::WebSandboxFlags::None, 3808 std::string(), "uniqueName0", blink::WebSandboxFlags::None,
3795 blink::WebFrameOwnerProperties()); 3809 blink::WebFrameOwnerProperties());
3796 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( 3810 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
3797 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); 3811 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
3798 const GURL subframe_url("http://www.google.com/#"); 3812 const GURL subframe_url("http://www.google.com/#");
3813 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false);
3799 FrameHostMsg_DidCommitProvisionalLoad_Params params; 3814 FrameHostMsg_DidCommitProvisionalLoad_Params params;
3800 params.page_id = 0; 3815 params.page_id = 0;
3801 params.nav_entry_id = 0; 3816 params.nav_entry_id = 0;
3802 params.did_create_new_entry = false; 3817 params.did_create_new_entry = false;
3803 params.url = subframe_url; 3818 params.url = subframe_url;
3804 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 3819 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
3805 params.should_update_history = false; 3820 params.should_update_history = false;
3806 params.gesture = NavigationGestureAuto; 3821 params.gesture = NavigationGestureAuto;
3807 params.is_post = false; 3822 params.is_post = false;
3808 params.page_state = PageState::CreateFromURL(subframe_url); 3823 params.page_state = PageState::CreateFromURL(subframe_url);
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
3956 3971
3957 // Send a subframe update from the first page, as if one had just 3972 // Send a subframe update from the first page, as if one had just
3958 // automatically loaded. Auto subframes don't increment the page ID. 3973 // automatically loaded. Auto subframes don't increment the page ID.
3959 main_test_rfh()->OnCreateChildFrame( 3974 main_test_rfh()->OnCreateChildFrame(
3960 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, 3975 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document,
3961 std::string(), "uniqueName0", blink::WebSandboxFlags::None, 3976 std::string(), "uniqueName0", blink::WebSandboxFlags::None,
3962 blink::WebFrameOwnerProperties()); 3977 blink::WebFrameOwnerProperties());
3963 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( 3978 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>(
3964 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); 3979 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host());
3965 const GURL url1_sub("http://foo/subframe"); 3980 const GURL url1_sub("http://foo/subframe");
3981 subframe->SendRendererInitiatedNavigationRequest(url1_sub, false);
3966 FrameHostMsg_DidCommitProvisionalLoad_Params params; 3982 FrameHostMsg_DidCommitProvisionalLoad_Params params;
3967 params.page_id = controller.GetLastCommittedEntry()->GetPageID(); 3983 params.page_id = controller.GetLastCommittedEntry()->GetPageID();
3968 params.nav_entry_id = 0; 3984 params.nav_entry_id = 0;
3969 params.did_create_new_entry = false; 3985 params.did_create_new_entry = false;
3970 params.url = url1_sub; 3986 params.url = url1_sub;
3971 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 3987 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
3972 params.should_update_history = false; 3988 params.should_update_history = false;
3973 params.gesture = NavigationGestureAuto; 3989 params.gesture = NavigationGestureAuto;
3974 params.is_post = false; 3990 params.is_post = false;
3975 params.page_state = PageState::CreateFromURL(url1_sub); 3991 params.page_state = PageState::CreateFromURL(url1_sub);
(...skipping 1070 matching lines...) Expand 10 before | Expand all | Expand 10 after
5046 params.gesture = NavigationGestureUser; 5062 params.gesture = NavigationGestureUser;
5047 params.page_state = PageState::CreateFromURL(url); 5063 params.page_state = PageState::CreateFromURL(url);
5048 params.was_within_same_page = false; 5064 params.was_within_same_page = false;
5049 params.is_post = true; 5065 params.is_post = true;
5050 params.post_id = 2; 5066 params.post_id = 2;
5051 params.url_is_unreachable = true; 5067 params.url_is_unreachable = true;
5052 5068
5053 // Navigate to new page. 5069 // Navigate to new page.
5054 { 5070 {
5055 LoadCommittedDetailsObserver observer(contents()); 5071 LoadCommittedDetailsObserver observer(contents());
5072 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false);
5056 main_test_rfh()->PrepareForCommit(); 5073 main_test_rfh()->PrepareForCommit();
5057 main_test_rfh()->SendNavigateWithParams(&params); 5074 main_test_rfh()->SendNavigateWithParams(&params);
5058 EXPECT_EQ(PAGE_TYPE_ERROR, 5075 EXPECT_EQ(PAGE_TYPE_ERROR,
5059 controller_impl().GetLastCommittedEntry()->GetPageType()); 5076 controller_impl().GetLastCommittedEntry()->GetPageType());
5060 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, observer.details().type); 5077 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, observer.details().type);
5061 } 5078 }
5062 5079
5063 // Navigate to existing page. 5080 // Navigate to existing page.
5064 { 5081 {
5065 params.did_create_new_entry = false; 5082 params.did_create_new_entry = false;
5066 LoadCommittedDetailsObserver observer(contents()); 5083 LoadCommittedDetailsObserver observer(contents());
5084 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false);
5067 main_test_rfh()->PrepareForCommit(); 5085 main_test_rfh()->PrepareForCommit();
5068 main_test_rfh()->SendNavigateWithParams(&params); 5086 main_test_rfh()->SendNavigateWithParams(&params);
5069 EXPECT_EQ(PAGE_TYPE_ERROR, 5087 EXPECT_EQ(PAGE_TYPE_ERROR,
5070 controller_impl().GetLastCommittedEntry()->GetPageType()); 5088 controller_impl().GetLastCommittedEntry()->GetPageType());
5071 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, observer.details().type); 5089 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, observer.details().type);
5072 } 5090 }
5073 5091
5074 // Navigate to same page. 5092 // Navigate to same page.
5075 // Note: The call to LoadURL() creates a pending entry in order to trigger the 5093 // Note: The call to LoadURL() creates a pending entry in order to trigger the
5076 // same-page transition. 5094 // same-page transition.
5077 controller_impl().LoadURL( 5095 controller_impl().LoadURL(
5078 url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); 5096 url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string());
5079 params.nav_entry_id = controller_impl().GetPendingEntry()->GetUniqueID(); 5097 params.nav_entry_id = controller_impl().GetPendingEntry()->GetUniqueID();
5080 params.transition = ui::PAGE_TRANSITION_TYPED; 5098 params.transition = ui::PAGE_TRANSITION_TYPED;
5081 { 5099 {
5082 LoadCommittedDetailsObserver observer(contents()); 5100 LoadCommittedDetailsObserver observer(contents());
5083 main_test_rfh()->PrepareForCommit(); 5101 main_test_rfh()->PrepareForCommit();
5084 main_test_rfh()->SendNavigateWithParams(&params); 5102 main_test_rfh()->SendNavigateWithParams(&params);
5085 EXPECT_EQ(PAGE_TYPE_ERROR, 5103 EXPECT_EQ(PAGE_TYPE_ERROR,
5086 controller_impl().GetLastCommittedEntry()->GetPageType()); 5104 controller_impl().GetLastCommittedEntry()->GetPageType());
5087 EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, observer.details().type); 5105 EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, observer.details().type);
5088 } 5106 }
5089 5107
5090 // Navigate in page. 5108 // Navigate in page.
5091 params.url = GURL("http://foo#foo"); 5109 params.url = GURL("http://foo#foo");
5092 params.transition = ui::PAGE_TRANSITION_LINK; 5110 params.transition = ui::PAGE_TRANSITION_LINK;
5093 params.was_within_same_page = true; 5111 params.was_within_same_page = true;
5094 { 5112 {
5095 LoadCommittedDetailsObserver observer(contents()); 5113 LoadCommittedDetailsObserver observer(contents());
5114 main_test_rfh()->SendRendererInitiatedNavigationRequest(params.url, false);
5096 main_test_rfh()->PrepareForCommit(); 5115 main_test_rfh()->PrepareForCommit();
5097 main_test_rfh()->SendNavigateWithParams(&params); 5116 main_test_rfh()->SendNavigateWithParams(&params);
5098 EXPECT_EQ(PAGE_TYPE_ERROR, 5117 EXPECT_EQ(PAGE_TYPE_ERROR,
5099 controller_impl().GetLastCommittedEntry()->GetPageType()); 5118 controller_impl().GetLastCommittedEntry()->GetPageType());
5100 EXPECT_TRUE(observer.details().is_in_page); 5119 EXPECT_TRUE(observer.details().is_in_page);
5101 } 5120 }
5102 } 5121 }
5103 5122
5104 // Tests that if a stale navigation comes back from the renderer, it is properly 5123 // Tests that if a stale navigation comes back from the renderer, it is properly
5105 // resurrected. 5124 // resurrected.
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
5201 EXPECT_EQ(default_ssl_status.content_status, 5220 EXPECT_EQ(default_ssl_status.content_status,
5202 observer.details().ssl_status.content_status); 5221 observer.details().ssl_status.content_status);
5203 EXPECT_EQ( 5222 EXPECT_EQ(
5204 0u, 5223 0u,
5205 observer.details().ssl_status.signed_certificate_timestamp_ids.size()); 5224 observer.details().ssl_status.signed_certificate_timestamp_ids.size());
5206 5225
5207 EXPECT_EQ(1, main_test_rfh()->GetProcess()->bad_msg_count()); 5226 EXPECT_EQ(1, main_test_rfh()->GetProcess()->bad_msg_count());
5208 } 5227 }
5209 5228
5210 } // namespace content 5229 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698