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

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: Rebase + addressed comments 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
« no previous file with comments | « no previous file | testing/buildbot/filters/browser-side-navigation.linux.content_unittests.filter » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 2107 matching lines...) Expand 10 before | Expand all | Expand 10 after
2118 params.nav_entry_id = 0; 2118 params.nav_entry_id = 0;
2119 params.did_create_new_entry = false; 2119 params.did_create_new_entry = false;
2120 params.url = subframe_url; 2120 params.url = subframe_url;
2121 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2121 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2122 params.should_update_history = false; 2122 params.should_update_history = false;
2123 params.gesture = NavigationGestureUser; 2123 params.gesture = NavigationGestureUser;
2124 params.is_post = false; 2124 params.is_post = false;
2125 params.page_state = PageState::CreateFromURL(subframe_url); 2125 params.page_state = PageState::CreateFromURL(subframe_url);
2126 2126
2127 // Navigating should do nothing. 2127 // Navigating should do nothing.
2128 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false);
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");
2135 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2136 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2136 params.page_id = 2; 2137 params.page_id = 2;
2137 params.nav_entry_id = 0; 2138 params.nav_entry_id = 0;
2138 params.did_create_new_entry = true; 2139 params.did_create_new_entry = true;
2139 params.url = url2; 2140 params.url = url2;
2140 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; 2141 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME;
2141 params.should_update_history = false; 2142 params.should_update_history = false;
2142 params.gesture = NavigationGestureUser; 2143 params.gesture = NavigationGestureUser;
2143 params.is_post = false; 2144 params.is_post = false;
2144 params.page_state = PageState::CreateFromURL(url2); 2145 params.page_state = PageState::CreateFromURL(url2);
2145 2146
2146 LoadCommittedDetailsObserver observer(contents()); 2147 LoadCommittedDetailsObserver observer(contents());
2148 subframe->SendRendererInitiatedNavigationRequest(url2, true);
2147 subframe->PrepareForCommit(); 2149 subframe->PrepareForCommit();
2148 subframe->SendNavigateWithParams(&params); 2150 subframe->SendNavigateWithParams(&params);
2149 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2151 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2150 navigation_entry_committed_counter_ = 0; 2152 navigation_entry_committed_counter_ = 0;
2151 EXPECT_EQ(url1, observer.details().previous_url); 2153 EXPECT_EQ(url1, observer.details().previous_url);
2152 EXPECT_FALSE(observer.details().is_in_page); 2154 EXPECT_FALSE(observer.details().is_in_page);
2153 EXPECT_FALSE(observer.details().is_main_frame); 2155 EXPECT_FALSE(observer.details().is_main_frame);
2154 2156
2155 // The new entry should be appended. 2157 // The new entry should be appended.
2156 NavigationEntryImpl* entry = controller.GetLastCommittedEntry(); 2158 NavigationEntryImpl* entry = controller.GetLastCommittedEntry();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 params.nav_entry_id = 0; 2202 params.nav_entry_id = 0;
2201 params.did_create_new_entry = false; 2203 params.did_create_new_entry = false;
2202 params.url = url2; 2204 params.url = url2;
2203 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2205 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2204 params.should_update_history = false; 2206 params.should_update_history = false;
2205 params.gesture = NavigationGestureUser; 2207 params.gesture = NavigationGestureUser;
2206 params.is_post = false; 2208 params.is_post = false;
2207 params.page_state = PageState::CreateFromURL(url2); 2209 params.page_state = PageState::CreateFromURL(url2);
2208 2210
2209 // Navigating should do nothing. 2211 // Navigating should do nothing.
2212 subframe->SendRendererInitiatedNavigationRequest(url2, false);
2210 subframe->PrepareForCommit(); 2213 subframe->PrepareForCommit();
2211 subframe->SendNavigateWithParams(&params); 2214 subframe->SendNavigateWithParams(&params);
2212 EXPECT_EQ(0U, notifications.size()); 2215 EXPECT_EQ(0U, notifications.size());
2213 } 2216 }
2214 2217
2215 // There should still be only one entry. 2218 // There should still be only one entry.
2216 EXPECT_EQ(1, controller.GetEntryCount()); 2219 EXPECT_EQ(1, controller.GetEntryCount());
2217 NavigationEntryImpl* entry = controller.GetLastCommittedEntry(); 2220 NavigationEntryImpl* entry = controller.GetLastCommittedEntry();
2218 EXPECT_EQ(url1, entry->GetURL()); 2221 EXPECT_EQ(url1, entry->GetURL());
2219 EXPECT_EQ(1, entry->GetPageID()); 2222 EXPECT_EQ(1, entry->GetPageID());
(...skipping 26 matching lines...) Expand all
2246 params.nav_entry_id = 0; 2249 params.nav_entry_id = 0;
2247 params.did_create_new_entry = false; 2250 params.did_create_new_entry = false;
2248 params.url = url3; 2251 params.url = url3;
2249 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2252 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2250 params.should_update_history = false; 2253 params.should_update_history = false;
2251 params.gesture = NavigationGestureUser; 2254 params.gesture = NavigationGestureUser;
2252 params.is_post = false; 2255 params.is_post = false;
2253 params.page_state = PageState::CreateFromURL(url3); 2256 params.page_state = PageState::CreateFromURL(url3);
2254 2257
2255 // Navigating should do nothing. 2258 // Navigating should do nothing.
2259 subframe2->SendRendererInitiatedNavigationRequest(url3, false);
2256 subframe2->PrepareForCommit(); 2260 subframe2->PrepareForCommit();
2257 subframe2->SendNavigateWithParams(&params); 2261 subframe2->SendNavigateWithParams(&params);
2258 EXPECT_EQ(0U, notifications.size()); 2262 EXPECT_EQ(0U, notifications.size());
2259 } 2263 }
2260 2264
2261 // There should still be only one entry, mostly unchanged. 2265 // There should still be only one entry, mostly unchanged.
2262 EXPECT_EQ(1, controller.GetEntryCount()); 2266 EXPECT_EQ(1, controller.GetEntryCount());
2263 EXPECT_EQ(entry, controller.GetLastCommittedEntry()); 2267 EXPECT_EQ(entry, controller.GetLastCommittedEntry());
2264 EXPECT_EQ(url1, entry->GetURL()); 2268 EXPECT_EQ(url1, entry->GetURL());
2265 EXPECT_EQ(1, entry->GetPageID()); 2269 EXPECT_EQ(1, entry->GetPageID());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2297 params.nav_entry_id = 0; 2301 params.nav_entry_id = 0;
2298 params.did_create_new_entry = false; 2302 params.did_create_new_entry = false;
2299 params.url = url4; 2303 params.url = url4;
2300 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2304 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2301 params.should_update_history = false; 2305 params.should_update_history = false;
2302 params.gesture = NavigationGestureUser; 2306 params.gesture = NavigationGestureUser;
2303 params.is_post = false; 2307 params.is_post = false;
2304 params.page_state = PageState::CreateFromURL(url4); 2308 params.page_state = PageState::CreateFromURL(url4);
2305 2309
2306 // Navigating should do nothing. 2310 // Navigating should do nothing.
2311 subframe3->SendRendererInitiatedNavigationRequest(url4, false);
2307 subframe3->PrepareForCommit(); 2312 subframe3->PrepareForCommit();
2308 subframe3->SendNavigateWithParams(&params); 2313 subframe3->SendNavigateWithParams(&params);
2309 EXPECT_EQ(0U, notifications.size()); 2314 EXPECT_EQ(0U, notifications.size());
2310 } 2315 }
2311 2316
2312 // There should still be only one entry, mostly unchanged. 2317 // There should still be only one entry, mostly unchanged.
2313 EXPECT_EQ(1, controller.GetEntryCount()); 2318 EXPECT_EQ(1, controller.GetEntryCount());
2314 EXPECT_EQ(entry, controller.GetLastCommittedEntry()); 2319 EXPECT_EQ(entry, controller.GetLastCommittedEntry());
2315 EXPECT_EQ(url1, entry->GetURL()); 2320 EXPECT_EQ(url1, entry->GetURL());
2316 EXPECT_EQ(1, entry->GetPageID()); 2321 EXPECT_EQ(1, entry->GetPageID());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2358 params.nav_entry_id = 0; 2363 params.nav_entry_id = 0;
2359 params.did_create_new_entry = false; 2364 params.did_create_new_entry = false;
2360 params.url = subframe_url; 2365 params.url = subframe_url;
2361 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 2366 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
2362 params.should_update_history = false; 2367 params.should_update_history = false;
2363 params.gesture = NavigationGestureUser; 2368 params.gesture = NavigationGestureUser;
2364 params.is_post = false; 2369 params.is_post = false;
2365 params.page_state = PageState::CreateFromURL(subframe_url); 2370 params.page_state = PageState::CreateFromURL(subframe_url);
2366 2371
2367 // Navigating should do nothing. 2372 // Navigating should do nothing.
2373 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false);
2368 subframe->PrepareForCommit(); 2374 subframe->PrepareForCommit();
2369 subframe->SendNavigateWithParams(&params); 2375 subframe->SendNavigateWithParams(&params);
2370 EXPECT_EQ(0U, notifications.size()); 2376 EXPECT_EQ(0U, notifications.size());
2371 } 2377 }
2372 2378
2373 // First manual subframe navigation. 2379 // First manual subframe navigation.
2374 const GURL url2("http://foo2"); 2380 const GURL url2("http://foo2");
2375 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2381 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2376 params.page_id = 2; 2382 params.page_id = 2;
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);
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 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
2509 self_params.did_create_new_entry = false; 2517 self_params.did_create_new_entry = false;
2510 self_params.url = url1; 2518 self_params.url = url1;
2511 self_params.transition = ui::PAGE_TRANSITION_LINK; 2519 self_params.transition = ui::PAGE_TRANSITION_LINK;
2512 self_params.should_update_history = false; 2520 self_params.should_update_history = false;
2513 self_params.gesture = NavigationGestureUser; 2521 self_params.gesture = NavigationGestureUser;
2514 self_params.is_post = false; 2522 self_params.is_post = false;
2515 self_params.page_state = PageState::CreateFromURL(url1); 2523 self_params.page_state = PageState::CreateFromURL(url1);
2516 self_params.was_within_same_page = true; 2524 self_params.was_within_same_page = true;
2517 2525
2518 LoadCommittedDetailsObserver observer(contents()); 2526 LoadCommittedDetailsObserver observer(contents());
2527 main_test_rfh()->SendRendererInitiatedNavigationRequest(url1, false);
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");
2530 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2539 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2531 params.page_id = 1; 2540 params.page_id = 1;
2532 params.nav_entry_id = 0; 2541 params.nav_entry_id = 0;
2533 params.did_create_new_entry = true; 2542 params.did_create_new_entry = true;
2534 params.url = url2; 2543 params.url = url2;
2535 params.transition = ui::PAGE_TRANSITION_LINK; 2544 params.transition = ui::PAGE_TRANSITION_LINK;
2536 params.should_update_history = false; 2545 params.should_update_history = false;
2537 params.gesture = NavigationGestureUser; 2546 params.gesture = NavigationGestureUser;
2538 params.is_post = false; 2547 params.is_post = false;
2539 params.page_state = PageState::CreateFromURL(url2); 2548 params.page_state = PageState::CreateFromURL(url2);
2540 params.was_within_same_page = true; 2549 params.was_within_same_page = true;
2541 2550
2542 // This should generate a new entry. 2551 // This should generate a new entry.
2552 main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false);
2543 main_test_rfh()->PrepareForCommit(); 2553 main_test_rfh()->PrepareForCommit();
2544 main_test_rfh()->SendNavigateWithParams(&params); 2554 main_test_rfh()->SendNavigateWithParams(&params);
2545 NavigationEntry* entry2 = controller.GetLastCommittedEntry(); 2555 NavigationEntry* entry2 = controller.GetLastCommittedEntry();
2546 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2556 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2547 navigation_entry_committed_counter_ = 0; 2557 navigation_entry_committed_counter_ = 0;
2548 EXPECT_TRUE(observer.details().is_in_page); 2558 EXPECT_TRUE(observer.details().is_in_page);
2549 EXPECT_FALSE(observer.details().did_replace_entry); 2559 EXPECT_FALSE(observer.details().did_replace_entry);
2550 EXPECT_EQ(2, controller.GetEntryCount()); 2560 EXPECT_EQ(2, controller.GetEntryCount());
2551 2561
2552 // Go back one. 2562 // Go back one.
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
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");
2600 params.page_id = 2; 2610 params.page_id = 2;
2601 params.nav_entry_id = 0; 2611 params.nav_entry_id = 0;
2602 params.did_create_new_entry = true; 2612 params.did_create_new_entry = true;
2603 params.url = url3; 2613 params.url = url3;
2604 navigation_entry_committed_counter_ = 0; 2614 navigation_entry_committed_counter_ = 0;
2615 main_test_rfh()->SendRendererInitiatedNavigationRequest(url3, false);
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) {
(...skipping 16 matching lines...) Expand all
2631 params.url = url2; 2642 params.url = url2;
2632 params.transition = ui::PAGE_TRANSITION_LINK; 2643 params.transition = ui::PAGE_TRANSITION_LINK;
2633 params.should_update_history = false; 2644 params.should_update_history = false;
2634 params.gesture = NavigationGestureUser; 2645 params.gesture = NavigationGestureUser;
2635 params.is_post = false; 2646 params.is_post = false;
2636 params.page_state = PageState::CreateFromURL(url2); 2647 params.page_state = PageState::CreateFromURL(url2);
2637 params.was_within_same_page = true; 2648 params.was_within_same_page = true;
2638 2649
2639 // This should NOT generate a new entry, nor prune the list. 2650 // This should NOT generate a new entry, nor prune the list.
2640 LoadCommittedDetailsObserver observer(contents()); 2651 LoadCommittedDetailsObserver observer(contents());
2652 main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false);
2641 main_test_rfh()->PrepareForCommit(); 2653 main_test_rfh()->PrepareForCommit();
2642 main_test_rfh()->SendNavigateWithParams(&params); 2654 main_test_rfh()->SendNavigateWithParams(&params);
2643 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2655 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2644 navigation_entry_committed_counter_ = 0; 2656 navigation_entry_committed_counter_ = 0;
2645 EXPECT_TRUE(observer.details().is_in_page); 2657 EXPECT_TRUE(observer.details().is_in_page);
2646 EXPECT_TRUE(observer.details().did_replace_entry); 2658 EXPECT_TRUE(observer.details().did_replace_entry);
2647 EXPECT_EQ(1, controller.GetEntryCount()); 2659 EXPECT_EQ(1, controller.GetEntryCount());
2648 } 2660 }
2649 2661
2650 // Tests for http://crbug.com/40395 2662 // Tests for http://crbug.com/40395
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2685 params.transition = ui::PAGE_TRANSITION_LINK; 2697 params.transition = ui::PAGE_TRANSITION_LINK;
2686 params.redirects.push_back(url); 2698 params.redirects.push_back(url);
2687 params.should_update_history = true; 2699 params.should_update_history = true;
2688 params.gesture = NavigationGestureUnknown; 2700 params.gesture = NavigationGestureUnknown;
2689 params.is_post = false; 2701 params.is_post = false;
2690 params.page_state = PageState::CreateFromURL(url); 2702 params.page_state = PageState::CreateFromURL(url);
2691 params.was_within_same_page = true; 2703 params.was_within_same_page = true;
2692 2704
2693 // This should NOT generate a new entry, nor prune the list. 2705 // This should NOT generate a new entry, nor prune the list.
2694 LoadCommittedDetailsObserver observer(contents()); 2706 LoadCommittedDetailsObserver observer(contents());
2707 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false);
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/");
2707 FrameHostMsg_DidCommitProvisionalLoad_Params params; 2720 FrameHostMsg_DidCommitProvisionalLoad_Params params;
2708 params.page_id = 2; // New page_id 2721 params.page_id = 2; // New page_id
2709 params.nav_entry_id = 0; 2722 params.nav_entry_id = 0;
2710 params.did_create_new_entry = true; 2723 params.did_create_new_entry = true;
2711 params.url = url; 2724 params.url = url;
2712 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT; 2725 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT;
2713 params.redirects.push_back(GURL("http://foo2/#a")); 2726 params.redirects.push_back(GURL("http://foo2/#a"));
2714 params.redirects.push_back(url); 2727 params.redirects.push_back(url);
2715 params.should_update_history = true; 2728 params.should_update_history = true;
2716 params.gesture = NavigationGestureUnknown; 2729 params.gesture = NavigationGestureUnknown;
2717 params.is_post = false; 2730 params.is_post = false;
2718 params.page_state = PageState::CreateFromURL(url); 2731 params.page_state = PageState::CreateFromURL(url);
2719 2732
2720 // This SHOULD generate a new entry. 2733 // This SHOULD generate a new entry.
2721 LoadCommittedDetailsObserver observer(contents()); 2734 LoadCommittedDetailsObserver observer(contents());
2735 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false);
2722 main_test_rfh()->PrepareForCommit(); 2736 main_test_rfh()->PrepareForCommit();
2723 main_test_rfh()->SendNavigateWithParams(&params); 2737 main_test_rfh()->SendNavigateWithParams(&params);
2724 EXPECT_EQ(1U, navigation_entry_committed_counter_); 2738 EXPECT_EQ(1U, navigation_entry_committed_counter_);
2725 navigation_entry_committed_counter_ = 0; 2739 navigation_entry_committed_counter_ = 0;
2726 EXPECT_FALSE(observer.details().is_in_page); 2740 EXPECT_FALSE(observer.details().is_in_page);
2727 EXPECT_EQ(3, controller.GetEntryCount()); 2741 EXPECT_EQ(3, controller.GetEntryCount());
2728 } 2742 }
2729 2743
2730 // Verify that BACK brings us back to http://foo2/. 2744 // Verify that BACK brings us back to http://foo2/.
2731 { 2745 {
(...skipping 1067 matching lines...) Expand 10 before | Expand all | Expand 10 after
3799 FrameHostMsg_DidCommitProvisionalLoad_Params params; 3813 FrameHostMsg_DidCommitProvisionalLoad_Params params;
3800 params.page_id = 0; 3814 params.page_id = 0;
3801 params.nav_entry_id = 0; 3815 params.nav_entry_id = 0;
3802 params.did_create_new_entry = false; 3816 params.did_create_new_entry = false;
3803 params.url = subframe_url; 3817 params.url = subframe_url;
3804 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 3818 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
3805 params.should_update_history = false; 3819 params.should_update_history = false;
3806 params.gesture = NavigationGestureAuto; 3820 params.gesture = NavigationGestureAuto;
3807 params.is_post = false; 3821 params.is_post = false;
3808 params.page_state = PageState::CreateFromURL(subframe_url); 3822 params.page_state = PageState::CreateFromURL(subframe_url);
3823 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false);
3809 subframe->PrepareForCommit(); 3824 subframe->PrepareForCommit();
3810 subframe->SendNavigateWithParams(&params); 3825 subframe->SendNavigateWithParams(&params);
3811 3826
3812 // Nothing should have changed. 3827 // Nothing should have changed.
3813 EXPECT_EQ(controller.GetEntryCount(), 1); 3828 EXPECT_EQ(controller.GetEntryCount(), 1);
3814 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); 3829 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0);
3815 } 3830 }
3816 3831
3817 // Make sure that on cloning a WebContentsImpl and going back needs_reload is 3832 // Make sure that on cloning a WebContentsImpl and going back needs_reload is
3818 // false. 3833 // false.
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
3968 params.nav_entry_id = 0; 3983 params.nav_entry_id = 0;
3969 params.did_create_new_entry = false; 3984 params.did_create_new_entry = false;
3970 params.url = url1_sub; 3985 params.url = url1_sub;
3971 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; 3986 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME;
3972 params.should_update_history = false; 3987 params.should_update_history = false;
3973 params.gesture = NavigationGestureAuto; 3988 params.gesture = NavigationGestureAuto;
3974 params.is_post = false; 3989 params.is_post = false;
3975 params.page_state = PageState::CreateFromURL(url1_sub); 3990 params.page_state = PageState::CreateFromURL(url1_sub);
3976 3991
3977 // This should return false meaning that nothing was actually updated. 3992 // This should return false meaning that nothing was actually updated.
3993 subframe->SendRendererInitiatedNavigationRequest(url1_sub, false);
3978 subframe->PrepareForCommit(); 3994 subframe->PrepareForCommit();
3979 subframe->SendNavigateWithParams(&params); 3995 subframe->SendNavigateWithParams(&params);
3980 3996
3981 // The notification should have updated the last committed one, and not 3997 // The notification should have updated the last committed one, and not
3982 // the pending load. 3998 // the pending load.
3983 EXPECT_EQ(url1, controller.GetLastCommittedEntry()->GetURL()); 3999 EXPECT_EQ(url1, controller.GetLastCommittedEntry()->GetURL());
3984 4000
3985 // The active entry should be unchanged by the subframe load. 4001 // The active entry should be unchanged by the subframe load.
3986 EXPECT_EQ(url2, controller.GetVisibleEntry()->GetURL()); 4002 EXPECT_EQ(url2, controller.GetVisibleEntry()->GetURL());
3987 } 4003 }
(...skipping 1058 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
« no previous file with comments | « no previous file | testing/buildbot/filters/browser-side-navigation.linux.content_unittests.filter » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698